C# · 12月 26, 2021

c# – 当使用iTextSharp填充其他字段时,如何在PDF中强制格式化和计算?

我有一个包含许多文本字段的PDF表单.在这些字段中输入的值用于计算其他字段中的值(计算字段是只读的).

当我在Adobe Reader中打开表单并填写字段时,计算字段会自动重新计算.

但是,我使用iTextSharp填充字段,展平生成的表单,然后通过Web将展平的表单流回用户.

该部分工作正常,但计算字段永远不会计算.我假设因为没有用户触发事件(如keydowns或焦点或模糊)正在触发,所以不会发生计算.

显然,我可以从可填写的表单中删除计算,并在填充字段时在服务器上完成所有计算,但我希望可填写的表单可供人类和服务器使用.

有谁知道如何强制计算?

编辑:
我感觉不太喜欢iText / iTextSharp在这里爱…

这里有一些细节.将stamper.AcroFields.GenerateAppearances设置为true无济于事.

我认为答案在于页面操作中的某个地方,但我不知道如何触发它…

解决方法 Paulo Soares(iText的主要开发者之一和iTextSharp的当前维护者) says:

iText doesn’t do any effort to fix calculated fields because most of the times that’s impossible. PdfCopyFields has some support for it that sometimes works and sometimes don’t.