如何通过IText模板生成PDF

时间:2014-06-05 09:41:10

标签: asp.net itext

我们希望实现以下目标:

  1. 使用模板生成PDF,这意味着在AcroFields中设置值
  2. 创建一个大的详细信息表(表的结构也在模板中)。在此过程中,详细信息将占用多个页面。
  3. 如果详细信息表位于多页上,则表格的标题也应位于新页面的顶部。
  4. 我们在以下网站上找到了一些示例:

    但在那里省略了细节。

      

    添加内容; _do_form_fields(),_ get_transaction_details()和_transaction_summary()的代码被省略,因为它们只返回要添加到ColumnText的字符串。 ColumnText很聪明;每次调用Go()都会呈现适合当前页面的文本,并返回一个状态代码,告诉您:(1)剩余多少文本(写入),和/或(2)仍有多少空间可在页面上找到。在每次迭代中,您将文本添加到当前页面,调用ColumnText.HasMoreText()以检查状态,然后在必要时调用Document.NewPage()。

    以前有没有人有同样的情况?我们感谢您提供一些提示或建议。

    谢谢。

    最好的问候,

    成功

1 个答案:

答案 0 :(得分:1)

您在要求的第一步中已经犯了错误。

你说"用模板生成PDF,这意味着在AcroFields中设置值。"

第一部分是OK:您想要使用模板生成PDF。但是,这并不意味着在AcroFields中设置值。这只是一个选择。如果您认为PDF是纸张的数字等效物,那么您可以选择它。表格是静态的:每个坐标都是固定的。您只需在适当的位置填写数据。如果数据不符合指定区域,那么您运气不好。我在评论中已经提到了chapter 6 of my book。您还可以在更长的教程中查看AcroForms的工作原理:https://www.youtube.com/watch?v=6YwDME0Fl1c(本教程几乎完全致力于从数据集创建报告。)

从模板创建PDF的另一种方法是使用XML Forms Architecture。在这种情况下(如果您有纯XFA表单),您的PDF是XML的容器。然后,您可以将XML数据注入此表单,表单将根据数据自行调整。填写完整后,单页表单很容易成长为20页的文档。在此视频中对此进行了解释:https://www.youtube.com/watch?v=h0wzj84tnmw(请注意,该视频的日期为2012年。我提供的产品已经完成,结果现在好多了。)

此方法的替代方法可能是在HTML中创建模板。我经常将此解决方案称为穷人的XFA解决方案。此解决方案需要XML Worker。您可以在此视频中看到一个示例:https://www.youtube.com/watch?v=clWoDrEEl50

这是一般答案。我无法更具体,因为你的问题并不清楚。您首先需要考虑这种方法。现在,您谈论AcroFields,同时讨论ColumnText。在长篇教程中,这被描述为艰难的方式。另请参阅corresponding online samples。在提出简单的问题之前,为什么你要问一个非常棘手的问题,这是非常令人困惑的。当然,除非你已经有了这些简单问题的答案。如果是,请分享这些答案。