使用动态控件修改PDF表单模板

时间:2016-11-25 12:27:52

标签: c# .net pdf itext

我正在尝试创建一段代码,用于打开现有的PDF表单(以前使用Open Office创建),其中包含空控件,并使用iTextSharp()设置值。我仍然在测试iTextSharp以查看它是否能满足我的需要,到目前为止答案是否定的。

请根据我在网上发现的内容,看看我在下面做了些什么:

gem

第1期

iTextSharp仅识别Open Office中的“控件”元素(例如文本框)。我试图在PDF模板中添加一个表,但它没有出现在字段中。这意味着我对使用的内容非常有限。

第2期

当我在字段中设置文本时,没有文本的包装,并且控件的大小不是动态的,这意味着如果文本太长,则不会全部显示。我无法使用滚动条,因为要打印PDF。

我试过

对于第一期,我使用Word而不是Open Office Writer创建了一个PDF表单。但是,iTextSharp无法识别Word中的任何控件,我的字段集合为空..

对于第二个问题,我尝试修改Open Office中控件的每个属性,在互联网上查看是否有人有解决方案。但根据我的理解,尺寸是固定的,因为它是AcroFields,所以我不能使控制动态,并且不能用iTextSharp改变尺寸。

我希望有人经历过相同的情况,并且可以使用iTextSharp或其他图书馆,无论是否免费指导我。虽然我经营自己的公司,但我买不起2000英镑的许可证,但我愿意接受我需要提供的建议。 最后一个选项是使用iTextSharp从头开始创建PDF,但它不像修改那样快速和简单地生成,这意味着对于PDF的每次更新,公司都需要我更改代码......我对这个解决方案不太满意。

1 个答案:

答案 0 :(得分:0)

问题1:

表格不是表单字段。请阅读PDF规范,更具体地说是ISO-32000-1:

enter image description here

PDF中没有动态表这样的东西。这只能在XFA(包含在PDF文件中的XML)中实现,但不推荐使用XFA。在iText,我们将于2017年2月发布动态文档的(闭源)产品。

问题2:

如果字段被定义为多行文本字段,则文本仅包装。例如,请参阅https://developers.itextpdf.com/question/how-get-row-count-multiline-field

如果将字体大小设置为0,字体大小只会适应字段的大小:Set AcroField Text Size to Auto

<强>总结

动态表单和PDF要么需要XFA,在这种情况下您需要购买Adobe LiveCycle ES(比预算高出),或者您需要等到iText Group发布其动态表单项目(但这也会更贵)超过2000英镑)。