java - 从 html 模板动态生成 pdf 文件并在 java 中生成目录

标签 java html pdf itext

我们有一个用于设计目录模板的编辑器。它基本上是为了设计目的。首先,我们在编辑器中设计一个模板,并以该模板格式绑定(bind)我们的数据。然后我们从前端获取 HTML 格式的模板。从该模板,我需要绑定(bind)数据并生成带有目录(索引)的 pdf 文件。

许多人建议使用 itext 库。但我的要求不是将html页面转换为pdf。我必须根据用户动态生成的 html 模板转储我所有的产品数据。

谁能建议如何实现它?

最佳答案

有一些开源选项和一些付费选项。如果您可以使用 AGPL 许可下的产品,itext imho 会带来最好的结果。

如果您正在寻找开源/免费

又一个 Html 到 Pdf 转换器 ==> http://www.allcolor.org/YaHPConverter/

wkhtmltopdf ==> http://wkhtmltopdf.org/

PDF 框 ==> http://pdfbox.apache.org/

itext(AGPL(免费)/商业许可)http://itextpdf.com/pricing

如果您正在寻找付费(而且几乎总是更容易)

http://docraptor.com/

http://pd4ml.com/

http://pdfcrowd.com/web-html-to-pdf-java/

http://www.aspose.com/docs/display/pdfjava/Convert+HTML+to+PDF+Format

http://www.princexml.com/

关于目录

此答案由 itext 的创建者 Bruno Lowagie 提供。

http://support.itextpdf.com/node/113

有不同的方法可以解决这个问题。

解决方案 1:您可以在第一遍创建带有书签的 PDF,而无需担心目录。然后在第二遍中,您使用生成的 PDF 来创建基于书签的 TOC,并使用 TOC 创建一个新的 PDF,然后是内容。

解决方案 2:您可以同时创建两个 PDF 文件,一个包含实际内容,一个包含 TOC。创建所有内容后,您可以连接两个文件:首先是 TOC,然后是实际内容。

解决方案 3:您可以将 TOC 的所有条目保留在内存中,将这些条目添加到文档的末尾,然后重新排序页面。

首先想到的是这三种方案(基于书中的例子);可能还有其他方法。

您需要考虑一个主要困难:页码如何?

如果您查看 Manning 的书(例如“iText in Action”),您会看到 TOC 的编号为 i、ii、iii、iv、v... 而实际内容的编号为 1, 2, 3, 4, 5,...

如果你想避免这种情况,如果你想从一开始就将页面编号为 1、2、3、4、5、6、7...,那么“分两次”创建 PDF 的解决方案最好,因为您可以等到第二次通过后再添加页码(只有那时您才知道 TOC 中有多少页)。

同时检查链接

http://itextpdf.com/sandbox/merge/MergeWithToc

How to generate a Table of Contents "TOC" with iText?

关于java - 从 html 模板动态生成 pdf 文件并在 java 中生成目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30098293/

相关文章:

java - 为大文件构建动态查询

java - Redisson 捕获 key 过期事件

javascript - 有没有办法在 JavaScript 加载之前不加载 html?

html - @media 查询和常规的 css 交互

pdf - 使用 Ghostscript 将 PDF 转换为 EPS 轮廓时如何保持边距?

pdf - 查看pdf时隐藏或修改Webview2的工具栏

java - Spring-Security-Ldap - 如何报告锁定帐户

javascript - 首页加载时从 div 检索到的尺寸错误

java - PDF 缩放/导入已修剪/裁剪的页面

java - 如何将使用 RESTFul 的微服务迁移到 Spring Webflux 响应式