public void doFilter(ServletRequest req, ServletResponse resp,FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse)resp;
HttpServletRequest request=(HttpServletRequest)req;
JResponseWrapper wrapper = new JResponseWrapper((HttpServletResponse) response);//转换为pdf包装
chain.doFilter(request, wrapper);
String result = wrapper.getResult();
if (!StringUtils.isBlank(result)) {
result = result.replaceAll("&", "&");
response.reset();
HttpServletResponse aa = (HttpServletResponse) response;
String filename = (String) request.getAttribute("pdfFileName");
if(null==filename){
return;
}
//文件名中文编码
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器
}else{
/*if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0)*/
filename = URLEncoder.encode(filename, "UTF-8");//IE浏览器
}
aa.setContentType("application/x-download;charset=utf-8");
aa.addHeader("Content-Disposition", "attachment;filename="+ filename+ ".pdf");
OutputStream os = aa.getOutputStream();
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(result);
try {
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC",
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//解决图片路径问题
// renderer.getSharedContext().setBaseURL("file:/D:/myeclipseWorkspace/test/WebRoot/");
renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();
} catch (DocumentException e) {
e.printStackTrace();
}
}
}