我们有一个用于设计目录模板的编辑器。它基本上是为了设计目的。首先,我们在编辑器中设计一个模板,并以该模板格式绑定(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://pdfcrowd.com/web-html-to-pdf-java/
http://www.aspose.com/docs/display/pdfjava/Convert+HTML+to+PDF+Format
关于目录
此答案由 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 中有多少页)。
同时检查链接
关于java - 从 html 模板动态生成 pdf 文件并在 java 中生成目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30098293/