<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>2.0.8</version> </dependency> <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>core-renderer</artifactId> <version>R8</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.21</version> </dependency> </dependencies>
以上是依赖包
HtmlToPdf.java
package org.yzr.pdf.html2pdf; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import org.junit.Test; import org.xhtmlrenderer.pdf.ITextFontResolver; import org.xhtmlrenderer.pdf.ITextRenderer; import com.lowagie.text.Image; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfStamper; public class HtmltoPDF { private static String logopath = "car.jpg"; @Test public void htmlToPdf() throws Exception { String prefix = "temp"; String suffix = ".pdf"; File file = File.createTempFile(prefix, suffix); OutputStream os = null; os = new FileOutputStream(file); ITextRenderer renderer = new ITextRenderer(); ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont(HtmltoPDF.class.getClassLoader().getResource("SIMSUN.TTC").toString(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Map<String, Object> dataModel = new HashMap<String, Object>(); dataModel.put("username", "张三"); renderer.setDocumentFromString(FreeMarkerHelper.getContract("test", dataModel)); renderer.layout(); renderer.createPDF(os); os.close(); addWater(file); } /** * @param file * * addWater添加水印 * * @throws Exception * void * @exception */ public void addWater(File file) throws Exception { try { PdfReader reader = new PdfReader(file.getAbsolutePath()); PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("F:/test.pdf")); Image image = Image.getInstance(HtmltoPDF.class.getResource("/") + logopath); // 图片位置 image.setAbsolutePosition(1, 1); int total = reader.getNumberOfPages(); for (int i = 1; i <= total; i++) { PdfContentByte under = stamp.getUnderContent(i); under.addImage(image); } stamp.close();// 关闭 if (file.exists()) { file.delete(); } } catch (Exception e) { e.printStackTrace(); } } }
FreeMakerHelper.java
/* * 描述:〈描述〉 * 创建人:yizhaorong * 创建时间:2014-10-28 */ package org.yzr.pdf.html2pdf; import java.io.BufferedReader; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.Version; /** * 用于生成手机端合同模板 */ public class FreeMarkerHelper { /** * 后缀为html */ private static final String HTML = ".html"; /** * * generateContract生成合同 * * @param code * @return * @throws Exception * String * @exception */ public static String getContract(String code, Map<String, Object> dataModel) throws Exception { Writer out = null; StringReader reader = null; try { out = new StringWriter(); Configuration cfg = new Configuration(new Version(2, 3, 21)); cfg.setDefaultEncoding("UTF-8"); cfg.setClassForTemplateLoading(FreeMarkerHelper.class, "/templete"); Template template = cfg.getTemplate(code + HTML); template.process(dataModel, out); reader = new StringReader(out.toString()); out.flush(); } catch (Exception e) { e.printStackTrace(); throw e; } finally { if (out != null) { out.close(); } } BufferedReader br = new BufferedReader(reader); StringBuilder content = new StringBuilder(); String str = null; while ((str = br.readLine()) != null) { content.append(str); } return content.toString(); } }
相关推荐
搜索了好多篇例子,算是强拼硬凑成现在的样子,还算比较满意吧。 此包中包含可测试成功代码,关联模板、字体文件、jar等 希望能帮助到大家。 这篇文章的作者蛮厉害,有不少借鉴。 ...
基于itext7+freemarker模板导出pdf,先生成html字符串再转成pdf,已解决中文问题,图片能正常显示
java根据动态模板生成pdf(包含柱状图)所需jar包 iText+FreeMarker+JFreeChart生成可动态配置的PDF文档。 iText有很强大的PDF处理能力,但是样式和排版不好控制,直接写PDF文档,数据的动态渲染很麻烦。 FreeMarker...
itext-pdf使用freemarker模板生成pdf时,样式错乱,乱折行问题解决,重写源码
1. itextpdf(CreatePdf) 不太推荐需要在代码内部编写PDF格式,如果要使用,建议写个基类,将同一版本 或者同一类型的公共方法写入,差异化的抽象,一个模板一个子类,子类使用@Component命名,使用反射的方式获取...
使用itextpdf将html模板生成pdf文档,poi导出excel,freemarker导出excel,pdf添加文字水印。
此压缩包里有freemarker模板语言所需的jar包,支持将ftl模板html,有itext所需的jar包,将html生成pdf
iText-2.0.8.jar,Freemarker+Flying sauser +Itext 整合生成PDF需要的JAR包,配合core-renderer.jar一起使用
通过freemarker进行渲染,由html生成合同pdf。 查找指定电子签名的位置,然后再在指定位置插入签名图片,生成最终pdf。
基于SpringBoot实现的生成工资条源代码,使用FreeMarker模板引擎, iTextPdf生成工资条PDF
该代码提供了word、excel、pdf三种类型的文档生成方案,其中word文档使用“freemarker + xml + 模板”技术;excel使用“POI + 模板”技术;pdf使用“freemarker + itext + flying saucer”技术
freemarker+itext5实现用模板方式,导出word和pdf 的模板示例文件,使用已经简单编写的word,生成的xml文件和html.
基于iText和flying saucer结合freemark生成pdf 范例 1. 使用maven构建,不含jar包,可以自行使用maven下载依赖包, 2. 使用前需要将C:/Windows/Fonts/ARIALUNI.TTF 复制到doc-render/src/test/resources/config/fonts...
iText,生成PDF文档,还支持将XML、Html文件转化为PDF文件; Apache PDFBox,生成、合并PDF文档; docx4j,生成docx、pptx、xlsx文档,支持转换为PDF格式。 比较: iText开源协议为AGPL,而其他两个框架协议均为...
java生成pdf需要的包(支持中文,表格换行亲测),支持css,用到的是freemarker ,flying-saucer,itext
而目前开源的组件中,Itext的确是一个First Choice,如果各位单纯是做把图片转成PDF或者自己写了Velocity或者FreeMarker模板生成了HTML是非常推荐直接用Itext来进行的。而如果,大家像我这样已经有前人写好了HTML...
java根据模板动态生成PDF文件 iText+FreeMarker+JFreeChart生成可动态配置的PDF文档 iText有很强大的PDF处理能力,但是样式和排版不好控制,直接写PDF文档,数据的动态渲染很麻烦。 FreeMarker能配置动态的...
使用Itextpdf组件通过freemarker模板技术生成好html内容并导出word文件,提供下载。
iText生成pdf完整案例,其中包括:表格,图片,html转换为pdf, Freemarker转换pdf, (该项目为工程,使用intellij idea打开即可)