<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(); } }
相关推荐
`Freemarker`是一个强大的模板引擎,通常用于动态生成HTML、XML等文本格式,而将`Freemarker`与HTML模板结合生成PDF,可以充分利用HTML的易编辑性和富文本特性,为用户提供高质量的文档输出。下面我们将深入探讨如何...
在IT领域,生成PDF文档是常见的需求,尤其在报表、合同和文档自动化中。本教程将探讨如何使用iText7和FreeMarker库结合,来创建一个基于模板的PDF生成流程,确保中文支持和图片的正常显示。 首先,iText7是一款强大...
然后,创建一个 PdfUtils 工具类,用于生成PDF文档。 四、PDF工具类编写 PdfUtils工具类主要用于生成PDF文档。该类中包含了生成HTML模板、将HTML模板转换为PDF文档的方法。方法上有完整的注释,思路是利用模板引擎...
搜索了好多篇例子,算是强拼硬凑成现在的样子,还算比较满意吧。 此包中包含可测试成功代码,关联模板、字体文件、jar等 希望能帮助到大家。 这篇文章的作者蛮厉害,有不少借鉴。 ...
1. itextpdf(CreatePdf) 不太推荐需要在代码内部编写PDF格式,如果要使用,建议写个基类,将同一版本 或者同一类型的公共方法写入,差异化的抽象,一个模板一个子类,子类使用@Component命名,使用反射的方式获取...
java根据动态模板生成pdf(包含柱状图)所需jar包 iText+FreeMarker+JFreeChart生成可动态配置的PDF文档。 iText有很强大的PDF处理能力,但是样式和排版不好控制,直接写PDF文档,数据的动态渲染很麻烦。 FreeMarker...
总结一下,要实现在Spring Boot应用中使用iText生成带有页眉、页码、水印、目录和二维码的PDF,你需要: 1. 引入iText及相关库。 2. 创建HTML页面并将其转换为PDF。 3. 定制PDF内容,包括添加页眉、页码和水印。 4. ...
总结起来,“freemark+itext”方案提供了一种灵活且强大的方式来生成PDF文档。FreeMarker允许我们使用模板语言来描述文档的结构,而iText则负责将这些结构转换为PDF格式。这种组合使得开发人员能够快速地根据业务...
iText支持动态生成PDF,包括添加文本、图像、表格、超链接、水印等元素。在处理复杂的PDF生成需求时,iText通常是一个可靠的选择。它不仅适用于Java环境,还有.NET平台的版本。 其次,我们要提到的是Freemarker。...
基于iText和flying saucer结合freemark生成pdf 范例 1. 使用maven构建,不含jar包,可以自行使用maven下载依赖包, 2. 使用前需要将C:/Windows/Fonts/ARIALUNI.TTF 复制到doc-render/src/test/resources/config/fonts...
5. 使用iTextPdf生成PDF:将渲染后的HTML转换为PDF,可以利用iTextPdf提供的`Document`、`PdfWriter`、`HtmlConverter`等类完成这个过程。 6. 提供下载接口:在控制器层创建一个HTTP接口,当用户访问这个接口时,...
Java中使用FreeMarker生成PDF合同文件的过程主要包括配置FreeMarker环境、创建数据模型、解析模板、生成PDF以及添加图片盖章。通过结合FreeMarker的灵活性和Flying Saucer的转换能力,我们可以方便地将动态生成的...
它包含特定的字体和排版规则,确保在生成PDF时能正确显示这些语言的文字。 3. freemarker-2.3.23.jar:FreeMarker是一个模板引擎,常用于动态生成HTML、XML等格式的文档。在将HTML转换为PDF的场景中,FreeMarker...
然后,将这些数据模型与模板结合,通过Freemarker的API生成PDF文档。 2. **插入电子签名**: 生成PDF后,我们需要找到合适的签名位置。这通常可以通过PDF坐标系统来实现,可以是预设的固定位置,也可以根据文档...
在"html模板结合itextpdf生成pdf文档--demo"项目中,我们将HTML模板作为输入,将其内容转换为PDF格式。这个过程通常包括以下步骤: 1. 解析HTML:使用一个HTML解析器(如Jsoup)将HTML字符串转换为DOM结构。 2. ...
iText-2.0.8.jar,Freemarker+Flying sauser +Itext 整合生成PDF需要的JAR包,配合core-renderer.jar一起使用
Flying-Saucer通过html生成pdf。。。项目中已经附带了jar包,放到项目中就可以运行了。亲测了,解决了中文不显示或者样式的问题,感觉蛮实用的。网上找了很久和下载其他资源用了好多积分,如果有需要的就下载吧!!...
Freemarker是一款强大的Java...总结,使用Freemarker导出Word和PDF文档是一种常见的技术手段,结合合适的库和精心设计的工具类,可以高效地实现动态文档生成。理解这些知识点对于提升开发效率和产品质量具有重要意义。
在Java开发中,使用iText库可以方便地实现PDF的生成、修改和格式化。本示例将深入讲解如何利用iText库来导出PDF文件,以满足特定的需求。 首先,确保已将iText库添加到项目依赖中。通常,可以通过Maven或Gradle来...