2015-05-07 89 views
2

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

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

任何人可以建议如何实现它吗?

回答

4

有一些开源和一些付费选项。如果您可以使用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/

关于TOC

这个答案提供了这个答案是由itext的Bruno Lowagie创建的。

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

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

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

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

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

这三种解决方案是首先想到的(基于书中的例子);可能有其他方法来做到这一点。

您需要考虑的一个主要困难是:页码是什么?

如果你看一本曼宁书(例如“iText in Action”),你会看到TOC编号为i,ii,iii,iv,v,...而实际内容编号为1 ,2,3,4,5,...

如果您想要避免这种情况,如果您想要从头开始对页面1,2,3,4,5,6,7 ......进行编号,因为您可以等待添加页码直到第二遍(只有您知道TOC中有多少页),才能创建PDF“两遍”的解决方案。

同时检查链接

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

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

+0

你可以建议我如何能够产生目录的PDF就像具有图书索引。谢谢 – SivaTeja