2014-06-05 17 views
2

我们要认识到以下几点:如何产生通过iText的模板PDF

  1. 生成与模板PDF,这意味着AcroFields设定值
  2. 创建一个大的信息表(表的结构也是在模板)。在这个过程中,细节将占用多个页面。
  3. 如果详细信息表位于多个页面上,则表格的标题也应位于新页面的顶部。

我们发现下列网站上的一些例子:

但细节的职能A anaylse省略那里。

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

以前有没有人有过这种情况?我们赞赏你可以提供一些提示或建议。

谢谢。

最好的问候,

程功

+1

你的问题似乎有矛盾。你说你想要填写一个AcroForm(静态表单),但是你会说你想要一个XFA表单(动态表单)。请首先阅读我的书的第6章:http://manning.com/lowagie2/samplechapter6.pdf更具体地说,请参阅第6.3.5节。那是你需要的吗?如果是这样,请使用该代码。如果没有,澄清。现在你的问题无法回答,因为你的要求不明确,你的参考文献很混乱。 –

回答

1

你已经在你的要求的第一步犯了一个错误。

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

第一部分是确定的:您想用模板生成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。在询问简单问题之前,你为什么要问一个非常困难的问题是非常令人困惑的。当然,除非你已经有了这些简单问题的答案。如果是这样,请分享这些答案。

+0

亲爱的布鲁诺, 非常感谢你的详细解释。你的回答已经引导我走向正确的方向。我会接受这个答案,并首先开始研究这本书。 – user3710472