在PDF表单中使用ItextSharp的动态内容

时间:2019-02-14 17:01:08

标签: c# pdf itext adobe

我正在创建一些PDF表单来填写我当前的项目。但是我无法弄清楚如何动态填充内容,例如向表中添加更多行并在其下隔开内容。

示例:

这是添加数据的模板,使用Adobe Acrobat创建PDF表单,并使用ItextSharp填写。

Example - PDF form template

这是收到内容后的pdf表格

enter image description here

使用Acrobat表单和ItextSharp可以吗?如果没有,您认为我应该怎么做才能达到这个结果?

1 个答案:

答案 0 :(得分:0)

很高兴看到您在用例中使用了itextsharp。请注意,itextsharp实际上是已经到期的iText 5。您最好在软件中使用iText 7。

我也是iText团队的一员,实际上有一个仅用于您的用例的产品。它称为DITO,您可以在表中配置重复行,这是用例中需要的。我相信您也可以使用itextsharp来做到这一点,但是我的答案是向您展示如何正确地做到这一点,而无需重新发明轮子。在DITO中,您将设计PDF模板,类似于在Acrobat中创建表单所用的模板。现在的要点是,您可以在基于浏览器的编辑器中定义与所需元素的数据绑定,完成设计后,唯一的事情就是使用DITO后端SDK将数据发送到此模板。让我向您展示一个示例JSON数据。

{
"first_name": "Lucius",
"last_name": "Malfoy",
"email": "malfoy@hogwarts.com",
"address": "Abra Cedavra\nTo the att. of L. Malfoy\nWiltshire\nEngland",
"items": [
    {"item": "Commercial Invisibility Cloak License .NET", "price": "6800", "quantity": "1"},
    {"item": "Updates and Support Commercial Invisibility Cloak .NET", "price": "666", "quantity": "1"},
    {"item": "Commercial Non-Production House Elf", "price": "3140", "quantity": "1"},
    {"item": "Updates and Support Commercial Non-Production House Elf", "price": "152", "quantity": "1"},
    {"item": "Nimbus 2001", "price": "5640", "quantity": "13"},
    {"item": "Fantastic Beasts and Where to Find them", "price": "28", "quantity": "1"}
    ]
}

如您所见,“项目”节点中有6个项目。这基本上表明表中的行将重复6次。现在,如果其中包含200个项目,则该表将重复200次,可能遍历带有页眉和页脚的不同页面。

您创建的表单不能仅仅因为您设计了“静态”表单。动态表单也可以使用XFA技术在PDF中完成,而XFA技术已在最新的PDF标准中弃用。

如果您想了解更多信息,我建议您与iText联系,他们将指导您如何实现所需的目标。

相关问题