从模板生成动态PDF

12
我有一个需求,需要在我们(ASP.net)的应用程序中生成PDF文件。我们需要满足以下要求:
  1. 文本内容将是大多数动态的,并且必须通过编程方式添加。

  2. 理想情况下,我们希望基于设计人员提供的PDF模板来生成这些文档。

  3. 某些部分/页根据某些条件可能或可能不可见 - 理想情况下,当删除内容时,希望内容向上“流动”以填充空间。

  4. 某些页面可能需要重复,这取决于某些条件。

  5. 一些PDF模板将不受我们的控制(我们正在填写第三方提供的申请表),因此能够读入空白PDF并填充数据会很好。

我看了看iTextSharp,它似乎可以完成大多数事情(例如,我可以获取PDF文件,在其上编辑以包含我们需要填充数据的表单字段,然后使用iTextSharp将其作为模板读入并填充数据),但是我不确定如何隐藏整个部分和/或重复页面。
我在这里寻求任何曾经处于类似情况的人的一些建议。
小更新一下,我们选择了iTextSharp - 它是一个强大的工具,但需要一些学习,不过它快速、轻便,正好满足我们的要求。
然而...
我想指出的是最新版本不再真正免费(就像啤酒那样免费)- 许可证不允许商业使用。因此,我们现在有了一个许可版本,但价格并不便宜(而且他们没有发布价格列表)。

请查看有关基于模板的报告系统的文章。这是他们所谈论的HTML转PDF转换器 - user1222045
5个回答

5
有各种商业组件可以做到这一点。请查看:PDFLib(http://www.pdflib.com/),Tall Components(http://www.tallcomponents.com/)等等。
我使用过Tall components的产品,可以推荐它们。
有些其他组件价格要高得多。
正如你所提到的ITextSharp非常好,可以用来添加/删除外部页面,在这种情况下,您可以通过省略或替换它们为占位符页面来隐藏整个页面。iText可以使用现有的PDF文件或创建空白页面。
根据我的个人经验,当需要表格数据时,我只需将图像和文本放置在现有页面上,并添加由报告工具生成的页面即可。
希望对您有所帮助。

嗯,但如果需要隐藏的内容是页面中的某个部分,则变得有些困难。 - Paddy
你可以添加一个不包含该部分的页面,然后通过编程调整另一个页面(或两个页面),需要时再进行替换。 - Mark Redman

5

我会使用iTextSharp。根据不同的模板,我创建各种类型的PDF文件,而iText对我来说是最好的选择。它是一个非常强大的控件,可以以几乎任何方式操作pdf文件。

我不确定iText能否满足您的第三个要求。我知道它可以从html文件创建pdf。也许可以使用Tomas发布的内容,并使用iText创建pdf。


iTextSharp不应用CSS...我想制作一个带边框的表格,但它不起作用....背景颜色也不起作用... - Syamsoul Azrien

2

为什么需要将模板文件保存为pdf格式?因为对于报告模板的动态要求,它是一个不好的格式。使用一款可以输出pdf格式的报告软件。您的设计师可以通过GUI轻松创建模板。在stackoverflow上有很多报告解决方案供您选择。


1
我们在类似的项目中使用了http://www.dynamicpdf.com/,并对结果感到满意。他们有一个PDF所见即所得的设计工具,您可以使用它来构建PDF的布局模板,以及将模板与基于字段到列映射的数据合并的工具。这样可以节省手动编写给定PDF的每个元素的时间。它支持页面页眉和页脚,并处理页面断点的复杂性。

这不是免费软件。 - luka

0

我会考虑使用从模板创建HTML文件,并使用Prince将它们转换为PDF。Prince非常灵活,从模板创建HTML文件比直接创建PDF文件要容易得多。


1
我们目前使用activePDF来执行类似的操作,但速度有点慢。 - Paddy
1
We offer a free license for non-commercial use of Prince. This license adds a small logo to the first page of generated PDF files. - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接