Pdf 如何为acrobat中创建的现有条形码动态赋值

Pdf 如何为acrobat中创建的现有条形码动态赋值,pdf,pdf-generation,itext,acrobat,pdf-form,Pdf,Pdf Generation,Itext,Acrobat,Pdf Form,如何为acrobat中创建的现有条形码动态赋予值 我按照指南创建了pdf格式的条形码 当我在表单字段中键入内容时,条形码确实会用值更新。但问题是,pdf是通过ruby代码动态生成的,并且表单是预先填充的。但是,条形码不包括动态填充到pdf表单中的数据。如果我对pdf表单数据进行任何更改,条形码将被重新加载,现在包含整个表单数据,但在第一次打开生成的pdf时不会发生这种情况 总而言之 1) 将条形码添加到pdf表单,并添加javascript以计算条形码值 2) 随着表单数据的更改,条形码将更新为

如何为acrobat中创建的现有条形码动态赋予值

我按照指南创建了pdf格式的条形码

当我在表单字段中键入内容时,条形码确实会用值更新。但问题是,pdf是通过ruby代码动态生成的,并且表单是预先填充的。但是,条形码不包括动态填充到pdf表单中的数据。如果我对pdf表单数据进行任何更改,条形码将被重新加载,现在包含整个表单数据,但在第一次打开生成的pdf时不会发生这种情况

总而言之

1) 将条形码添加到pdf表单,并添加javascript以计算条形码值

2) 随着表单数据的更改,条形码将更新为新计算的值

3) 动态填充在步骤1中创建的pdf表单。所有表单字段都已填充,但条形码不包含数据

4) 如果我对在3中创建的pdf中的数据进行更改,条形码将被重新绘制,并在服务器上填充所有数据,还包括我刚才所做的数据更改

问题出在第3步,当服务器上的pdf表单充满数据时,我希望条形码包含数据

另外,我曾经在服务器上填写pdf。我还尝试了iTextJavaAPI来填写表单。 此外,对于pdf表单和itext,我试图提供条形码的初始值。但是,如果我这样做,条形码甚至不会显示在生成的pdf中,而是显示提供的值


第2页。我还能够使用itext生成条形码图像。然而,我需要这个条形码被更新,因为用户在生成的pdf中更改表单数据。显然,图像不会更新。因此,我尝试了上述方法,即使用pdf中的脚本动态计算条形码值。

首先要了解一件事。在PDF中,字段的值和它在页面上的外观是两件不同的事情。在Acrobat中创建时,条形码字段的值实际上是根据创建时用户界面中的选择来计算的。Acrobat向字段中注入一些JavaScript,这样当用户输入新数据时,字段的值将重新计算,Acrobat可以为条形码字段(图像)生成新的外观。如果仅更新服务器上字段的值,但未将文档上的“需要外观”属性设置为true,Acrobat将不知道如何重新生成条形码外观。但是,您可以通过iText生成条形码外观并进行设置,但您需要知道JavaScript的计算方法才能做到这一点。一旦设置了值和外观,并且设置了“需要外观”属性,表单应该可以正常工作


既然您已经尝试了多个库,我将再推荐一个。Datalogics PDF Java Toolkit实际上可以为您完成所有这些,而无需知道条形码代表的字段数据。您只需用数据填充非条形码字段,告诉工具箱计算表单并生成外观,它就可以正常工作。条形码的呈现方式与在Acrobat中填写时完全相同

您的意思是,此处描述的acroform上的setNeedAppearancess(true):是。每个库中的条形码都略有不同,但仅此而已。我尝试过这个,但在打开pdf时没有重新绘制条形码。我仍然需要对表单数据进行一些更改,以强制使用我们嵌入在pdf中的脚本重新计算条形码。此外,在设置“需要外观”之前,我没有为条形码字段设置值。如果我为条形码字段设置一个值,它将显示为text.Right。如果您设置了条形码的值而没有设置外观,默认的外观生成器(我猜它是iText)会为您创建一个外观。虽然“需要外观”标志应该起作用,但条形码可能存在某种外观,甚至是空白外观,Acrobat认为可以。如果你能上传一个示例文件,我可以肯定地告诉你。另外,您可以通过添加运行“this.calculateNow()”的文档级脚本来强制执行计算。我可以通过将此.calculateNow()添加为文档级脚本来生成条形码,但是,我也希望能够在服务器端设置该值,因为在某些情况下,pdf会变平,因此无法在打开pdf时计算条形码。