最近女朋友要通过html生成pdf文档,笨笨不爱思考的她直接求教与我,本人翻找 以前写过的案例(没有保存依赖jar包)进行测试一下,结果总是抛出莫名其妙的异常。慎重考虑 这恶心的问题可能是jar包不匹配问题引起的,估计广大网友也遇过类似这种问题,因此贴出相关依赖jar和程序代码防止防止广大网友好不容易找到一段程序却不能正常运行
程序源码
try { String outputFile = "D:/pdf/demo.pdf"; OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); // 解决中文支持问题 ITextFontResolver fontResolver = renderer.getFontResolver(); // simsun.ttc为字体文件 fontResolver.addFont("D:/pdf/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); //无论是方法1还是方法二对html格式要求都很严格 //=====1============直接拼接html代码 开始===================== /*StringBuffer html = new StringBuffer(); // DOCTYPE 必需写否则类似于 这样的字符解析会出现错误 html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"); html.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">") .append("<head>") .append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />") .append("<style type=\"text/css\" mce_bogus=\"1\">body {font-family: SimSun;}</style>") .append("</head>").append("<body>") .append("<div>人员名单:</div>") .append("<table width=\"200\" border=\"1\">") .append("<tr>").append("<td>姓名:</td>") .append("<td>年龄:</td>").append("</tr>").append("<tr>") .append("<td>张小三</td>").append("<td>25</td>") .append("</tr>").append("</table>"); html.append("</body></html>"); renderer.setDocumentFromString(html.toString());*/ //=================直接拼接html代码 结束==================== //=====2======直接加载模版 start renderer.setDocument(new File("D:/pdf/t.htm")); //=====2======直接加载模版 end // 解决图片的相对路径问题,如果是绝对路劲的话这个设置无用 renderer.getSharedContext().setBaseURL("http://www.baidu.com/img/"); renderer.layout(); renderer.createPDF(os); os.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }
依赖jar包
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.1.1</version> </dependency> <!-- <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>xhtmlrenderer</artifactId> <version>8.3-atlassian</version> </dependency> --> <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>core-renderer</artifactId> <version>R8</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.0.8</version> </dependency>