在 Java 中使用 iText 和 Apache Velocity 模板文件 (.vm) 生成 PDF 的一般工作流程是什么?
我有兴趣了解以下步骤:解析模板文件、将 Java 对象放在上下文中以及生成 pdf 等要执行的步骤。
我知道这是一个非常基本的问题。但我什至在网上找不到这种类型的一个例子。我找到了 XDocReport,但我也有兴趣了解其他替代方案。
请帮助我提供一些示例项目链接或至少入门步骤。
在 Java 中使用 iText 和 Apache Velocity 模板文件 (.vm) 生成 PDF 的一般工作流程是什么?
我有兴趣了解以下步骤:解析模板文件、将 Java 对象放在上下文中以及生成 pdf 等要执行的步骤。
我知道这是一个非常基本的问题。但我什至在网上找不到这种类型的一个例子。我找到了 XDocReport,但我也有兴趣了解其他替代方案。
请帮助我提供一些示例项目链接或至少入门步骤。
是的你可以。这完全取决于您希望 PDF 有多复杂。
以下是基本功能的步骤
com.itextpdf.text.html.simpleparser.HTMLWorker
(已弃用)将该 HTML 文件解析/转换为 PDF。com.itextpdf.text.pdf.PdfCopy.PageStamp
向现有 PDF 添加内容(边框、图章、注释、注释等)。还有com.itextpdf.tool.xml.XMLWorker
更高级的 HTML 转换(添加样式表等)
无法直接在 Java 中使用 iText 和 Apache Velocity 模板文件 (.vm) 生成 PDF,因为:
换句话说,Velocity 无法生成 PDF。
XDocReport 能够通过将包含一些 Velocity/Freemarker 语法的 docx/odt 模板与 Java 上下文合并来生成 docx/odt 报告。生成的 docx/odt 报告可以转换为 pdf/xhtml。
它之所以有效,是因为 docx/odt 是一个包含多个 xml 条目的 zip。如果您解压缩 docx,您将看到 word/document.xml。在此条目中,您将看到您使用 MS Word 键入的内容。word/document.xml 是纯文本,因此在这种情况下可以使用 Velocity。
这里是 XDocReport 从使用 Velocity 的 docx 模板生成 pdf 的过程:
在这一步,我们有一个生成的 docx(报告)。
为了将其转换为另一种格式,XDocReport 提供了一个基于 Apache POI 和 iText 的 docx 到 pdf 转换器。这是将 docx 转换为 pdf 的 XDocReport 过程:
请注意,XDocReport 是模块化的,您也可以使用其他转换器。
首先,我们使用freemarker模板生成html文件,然后通过IItextRender将html渲染成pdf文件。最后,我们可以在浏览器中查看pdf文件,有一个非常有用的javascript工具叫pdfjs。也许你可以试试。