PDF分页封口的问题(未解决)

来源:互联网 发布:mac触摸板按键声音大 编辑:程序博客网 时间:2024/04/20 08:32

今天工作中遇到一个PDF分页未封口的问题如图:







查阅了很多资料没有找到解决办法,博友有什么好的建议想法,希望留言感激不尽。


项目信息:

PDF是用ftl模板生成的,把后台查询的数据返回到ftl文件中,把数据填充到相应的位置,导出生成PDF文件。

ftl文件的部分代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style mce_bogus="1" type="text/css">  
.txt{
      border-bottom:#666 1px solid;
      font-size:18px;
      width:50px;
      text-align:center;
   }
   td{font-size:15px;}
   .table-bordered {
border: 1px solid #ddd;
}
.table {
   border-collapse: collapse !important;
 }
 .table td,
 .table th {
   background-color: #fff !important;
 }
 .table-bordered th,
 .table-bordered td {
   border: 1px solid #444444 !important;
 }
 .table-bordered table td {
   border: 0px solid #ddd !important;
 }
</style> 
</head>
<body style="font-family: SimSun">
<div class="portlet col-md-8 col-md-offset-2">
<div align="center">
<h2>审批表</h2>
</div>
<label style="font-size:15px;"><b>名称:</b></label> 
<label style="border:0px;font-size:15px;padding-left:0px;padding-bottom:10px;">${company!''}</label>
 <table class="table table-bordered" width="100%" border="0" cellpadding="6" cellspacing="1" bgcolor="#000000" style="table-layout:fixed; word-break:break-strict;">
   <tr>
     <td width="10%" align="center" bgcolor="#FFFFFF" style="display:table-cell; vertical-align:middle;"><b>姓名</b></td>
     <td width="15%" align="center" bgcolor="#FFFFFF" style="display:table-cell; vertical-align:middle;">${name!''}</td>


后台Java代码:

public void exportWorker(HttpServletResponse response)
{
try{  
  String pdfPath = "审批表.pdf";  
           Map<String,Object> variables = new HashMap<String,Object>();  
      //往map中添加需要的数据 
           response.reset();
           response.setContentType( "application/pdf" );
      response.setHeader("Content-disposition",DownUtil.fixContentDisposition(pdfPath));
      String ftlStr = ftlGenerate("PDF.ftl", variables);  
           pdfGenerate(ftlStr, response.getOutputStream());  
       }catch(Exception ex){  
           ex.printStackTrace();  
       }  
}



private String ftlGenerate(String template, Map<String,Object> variables) throws Exception{  
Template tp = freeMarkerConfig.getConfiguration().getTemplate(
"report/reportList/"+template);  
StringWriter stringWriter = new StringWriter();    
BufferedWriter writer = new BufferedWriter(stringWriter);
tp.setOutputEncoding("UTF-8");
tp.process(variables, writer);    
String htmlStr = stringWriter.toString();  
writer.flush();    
writer.close();  
return htmlStr;  
}



private void pdfGenerate(String htmlStr, OutputStream outPutPdfFilePath)  
throws Exception {
//System.out.println(htmlStr);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
EntityResolver er = new EntityResolver() {
@Override
public InputSource resolveEntity(String publicId, String systemId)
{
if(publicId.equals("-//W3C//DTD XHTML 1.0 Transitional//EN"))
                 {
                    String dtd_uri = getRequest().getSession().getServletContext()
            .getRealPath("dtd/xhtml1-transitional.dtd");
                     return new InputSource(dtd_uri);
                 }
return null;
}
};
builder.setEntityResolver(er);
Document doc = builder.parse(new ByteArrayInputStream(htmlStr.getBytes("utf-8")));  
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(doc, null);
//解决中文问题
ITextFontResolver fontResolver = renderer.getFontResolver();
String simsun = getRequest().getSession().getServletContext()
.getRealPath("FontsPDF/simsun.ttf");
if (simsun != null) {
fontResolver.addFont(simsun, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
renderer.getSharedContext().setFontResolver(fontResolver);
}
// 解决图片的相对路径问题
//renderer.getSharedContext().setBaseURL("file:" + basePath);
renderer.layout();  
renderer.createPDF(outPutPdfFilePath);  
outPutPdfFilePath.close();  
}
}


这个问题还没有想到解决办法,希望大家指点。


0 0
原创粉丝点击