公司需要动态生成PDF,搞了很久,终于搞好,现在拿出主要代码分享一下
唯一的不足是不支持中文换行,如果有人知道可以交流下
//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>
分享到:
相关推荐
这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的场景中非常有用。 首先,让我们了解FreeMarker。FreeMarker是一个基于模板的语言,...
通过以上步骤,你就能成功地利用iText7和FreeMarker生成包含中文和图片的PDF文档了。这个方法灵活且易于维护,适合处理各种复杂的PDF生成需求。在实际应用中,可以根据具体需求调整模板和数据模型,实现更加定制化的...
Java中使用FreeMarker生成PDF合同文件的过程主要包括配置FreeMarker环境、创建数据模型、解析模板、生成PDF以及添加图片盖章。通过结合FreeMarker的灵活性和Flying Saucer的转换能力,我们可以方便地将动态生成的...
1. itextpdf(CreatePdf) 不太推荐需要在代码内部编写PDF格式,如果要使用,建议写个基类,将同一版本 或者同一类型的公共方法写入,差异化的抽象,一个模板一个子类,子类使用@Component命名,使用反射的方式获取...
`Freemarker`是一个强大的模板引擎,通常用于动态生成HTML、XML等文本格式,而将`Freemarker`与HTML模板结合生成PDF,可以充分利用HTML的易编辑性和富文本特性,为用户提供高质量的文档输出。下面我们将深入探讨如何...
java根据动态模板生成pdf(包含柱状图)所需jar包 iText+FreeMarker+JFreeChart生成可动态配置的PDF文档。 iText有很强大的PDF处理能力,但是样式和排版不好控制,直接写PDF文档,数据的动态渲染很麻烦。 FreeMarker...
本教程将探讨如何利用iText库在Spring Boot应用中从HTML页面生成PDF,并进行一系列的定制化操作,如添加页眉、页码、水印、目录以及二维码。 首先,iText是一个强大的Java库,专门用于创建和编辑PDF文档。它提供了...
iText支持动态生成PDF,包括添加文本、图像、表格、超链接、水印等元素。在处理复杂的PDF生成需求时,iText通常是一个可靠的选择。它不仅适用于Java环境,还有.NET平台的版本。 其次,我们要提到的是Freemarker。...
最后,iTextPDF核心库利用这些元素创建PDF文档,并通过itext-asian保证亚洲文字的正确显示。 这个压缩包提供的库组合,确保了HTML到PDF转换的兼容性和稳定性,开发者可以放心使用,以满足在Java环境中将动态生成的...
【Java使用FreeMarker生成PDF文档】\n\n在Java开发中,我们经常需要生成各种类型的文档,例如PDF、Word等。FreeMarker是一个强大的模板引擎,它允许开发者通过模板语言来生成文本输出,常用于生成HTML、XML等动态...
基于iText和flying saucer结合freemark生成pdf 范例 1. 使用maven构建,不含jar包,可以自行使用maven下载依赖包, 2. 使用前需要将C:/Windows/Fonts/ARIALUNI.TTF 复制到doc-render/src/test/resources/config/fonts...
标题中的“freemarker itext core-renderer”指的是三个关键的Java库,它们在生成PDF文档和处理模板方面发挥着重要作用。以下是对这三个组件的详细解释: 1. **FreeMarker**: FreeMarker是一个强大的、开源的模板...
本教程主要探讨如何利用HTML模板和iTextPDF库来创建PDF文件,同时也会提及Apache POI和Freemarker在导出Excel方面的应用,以及如何在PDF上添加文字水印。 首先,iTextPDF是一个强大的Java库,专门用于生成和修改PDF...
同样的方法也可以扩展到生成 PDF 文件,但通常会涉及不同的库,如 Apache POI(用于 Word)和 iText 或 Flying Saucer(用于 PDF)。 请注意,生成 PDF 文件时,可能需要额外处理页面布局、样式和格式,因为 PDF ...
本篇文章将深入探讨如何利用Freemarker来解析并生成PDF文件。 首先,理解Freemarker的基本概念至关重要。Freemarker是一个基于模板的、与语言无关的模板引擎,它的主要工作是将数据模型和模板结合,生成最终的输出...
- 可能包含 Freemarker 模板文件、Java 代码示例,以及使用 iText 或其他库生成 PDF 的逻辑。 学习这个主题,你需要理解 Freemarker 的语法,熟悉如何在 Java 项目中配置和使用 Freemarker,以及如何结合其他库...
**二、Freemarker生成PDF的流程** 1. **创建模板**:首先,我们需要创建一个Freemarker模板文件,通常是`.ftl`格式,定义PDF的布局和内容结构,用Freemarker语法插入动态数据占位符。 2. **构建数据模型**:根据...
5. 使用iTextPdf生成PDF:将渲染后的HTML转换为PDF,可以利用iTextPdf提供的`Document`、`PdfWriter`、`HtmlConverter`等类完成这个过程。 6. 提供下载接口:在控制器层创建一个HTTP接口,当用户访问这个接口时,...
3. 使用Freemarker生成HTML模板,并将其转换为PDF文档。 4. 使用FlyingSaucer将HTML文档转换为PDF文档。 六、技术点总结 本方案中涉及到的技术点包括: * Freemarker模板引擎:用于生成HTML模板。 * FlyingSaucer...
- **生成PDF**:通过iText或PDFBox将渲染后的HTML转换为PDF。这里可能需要处理CSS样式,确保PDF布局与HTML一致。 - **输出或保存PDF**:最后,你可以选择在浏览器中直接展示PDF,或者将其保存到服务器或用户指定的...