唯一的不足是不支持中文换行,如果有人知道可以交流下
//step1 加载template模板文件 Configuration cfg = new Configuration(); cfg.setDirectoryForTemplateLoading(new File(templateBasePath)); cfg.setObjectWrapper(new DefaultObjectWrapper()); //编码防止乱码 cfg.setDefaultEncoding("UTF-8"); Template t = cfg.getTemplate("cover.ftl"); //编码防止乱码 t.setEncoding("UTF-8"); String html = "demo.html"; File file = new File(html); if (!file.exists()) { file.createNewFile(); } Map map = new HashMap(); Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); t.process(map, out); String url = new File(html).toURI().toURL().toString(); String outputFile = "cover.pdf"; // step 2 OutputStream os = new FileOutputStream(outputFile); org.xhtmlrenderer.pdf.ITextRenderer renderer = new ITextRenderer(); renderer.setDocument(url); renderer.getSharedContext().setBaseURL("file:///" + imageBasePath); // step 3 解决中文支持 org.xhtmlrenderer.pdf.ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont("C:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); renderer.layout(); renderer.createPDF(os); os.close(); //maven 所需要的jar <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.0.8</version> </dependency> <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>core-renderer</artifactId> <version>R8pre2</version> </dependency> <dependency> <groupId>freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.9</version> </dependency>