2

使用 iTextSharp.text.pdf.PdfStamper.AcroFields.SetField 时,出现在文档中某个点之后的 pdf 表单字段上出现 ArgumentException。它说:

The name 'Helveia01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678' is too long (156 characters).

这是 pdf 编辑器赋予表单域的内部名称。随着您添加更多表单字段(使用 Foxit),内部名称似乎变得越来越长。它的用户友好名称只是一个短字符串(LiabilitiesTotal - 下面)。如果您在记事本中查看 pdf,您可以看到上面的字符串:

<>/DA(/Helveia0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567 0 Tf 0 0 0 rg)/AP<>/T(LiabilitiesTotal)>>

我无法控制这个内部名称。任何想法为什么它在被 iTextSharp.text.pdf.PdfStamper.AcroFields.SetField 引用时有限制?PDF 文档是有效的,我可以手动填写,只是不使用 PdfStamper

作为一个实验,我使用 FoxitPhantomPDF 6.0.5.0618 创建了一个空白 pdf,并添加了 30 个保留其默认名称的表单字段。结果:最终的表单域被赋予了一个对象名Helveia0123456789012345678901234567,第一个叫做Helvei。从记事本++:

在记事本++中检查的PDF

搜索“DA(/Helvei”(1 个文件中的 30 个匹配项)
C:\Users\sean.fackrell\Desktop\NewFoxit.pdf(30 次点击)第 36 行:<>/DA(/Helvei 0 Tf 0 0 0 rg)/AP<>>> 第 50 行:<>/DA(/ Helveia 0 Tf 0 0 0 rg)/AP<>>> 第 64 行:<>/DA(/Helveia0 0 Tf 0 0 0 rg)/AP<>>> 第 78 行:<>/DA(/Helveia01 0 Tf 0 0 0 rg)/AP<>>> 第 92 行:>>/DA(/Helveia012 0 Tf 0 0 0 rg)/AP<>>> 第 106 行:>>/DA(/Helveia0123 0 Tf 0 0 0 rg) /AP<>>> 第 120 行:<>/DA(/Helveia01234 0 Tf 0 0 0 rg)/AP<>>> 第 134 行:<>/DA(/Helveia012345 0 Tf 0 0 0 rg)/AP<> >> 第 148 行:</>/DA(/Helveia0123456 0 Tf 0 0 0 rg)/AP<>>> 第 162 行:</>/DA(/Helveia01234567 0 Tf 0 0 0 rg)/AP<>> 第 176 行: <>/DA(/Helveia012345678 0 Tf 0 0 0 rg)/AP<>>> 第 190 行:<>/DA(/Helveia0123456789 0 Tf 0 0 0 rg)/AP<>>> 第 204 行:<>/DA(/Helveia01234567890 0 Tf 0 0 0 rg)/AP<>>> 第 218 行:</>/DA (/Helveia012345678901 0 Tf 0 0 0 rg)/AP<>>> 第 232 行:>>/DA(/Helveia0123456789012 0 Tf 0 0 0 rg)/AP<>> 第 246 行:<>/DA(/Helveia01234567890123 0 Tf 0 0 0 rg)/AP<>>> 第 260 行:>>/DA(/Helveia012345678901234 0 Tf 0 0 0 rg)/AP<>>> 第 274 行:>>/DA(/Helveia0123456789012345 0 Tf 0 0 0 rg)/AP<>>> 第 288 行:>>/DA(/Helveia01234567890123456 0 Tf 0 0 0 rg)/AP<>>> 第 302 行:>>/DA(/Helveia012345678901234567 0 Tf 0 0 0 rg)/AP <>>> 第 316 行:</>/DA(/Helveia0123456789012345678 0 Tf 0 0 0 rg)/AP<>>> 第 330 行:<>/DA(/Helveia01234567890123456789 0 Tf 0 0 0 rg)/AP<>>> 第 368 行:<>/DA(/Helveia012345678901234567890 0 Tf 0 0 0 rg)/AP<>>> 第 382 行:<>/DA(/ HELVEIA0123456789012345678901 0 TF 0 0 0 RG)/ap <>>>行396:<>/da(/heleveia01234567890123456789012) 0 0 rg)/AP<>>> 第 424 行:>>/DA(/Helveia0123456789012345678901234 0 Tf 0 0 0 rg)/AP<>> 第 438 行:</>/DA(/Helveia01234567890123456789012345 0 Tf 0 0 0 r) /AP<>>> 第 452 行:>>/DA(/Helveia012345678901234567890123456 0 Tf 0 0 0 rg)/AP<>>> 第 466 行:<>/DA(/Helveia0123456789012345678901234567 0 Tf 0 0 0 rg)/AP >>/DA(/Helveia012345678901234567890 0 Tf 0 0 0 rg)/AP<>>> 第 382 行:<>/DA(/Helveia0123456789012345678901 0 Tf 0 0 0 rg)/AP<>>> 第 396 行:<>/DA(/ HELVEIA01234567890123456789012 0 TF 0 0 0 RG)/ap <>>>行410:<>/da(/Heleveia012345678901234567890123 0 0 0 0 0 0 0 RG)/ap <>39999999912479124691247666912479。 0 0 rg)/AP<>>> 第 438 行:>>/DA(/Helveia01234567890123456789012345 0 Tf 0 0 0 rg)/AP<>> 第 452 行:</>/DA(/Helveia012345678901234567890123456 0 0 Tf 0 0 rg) /AP<>>> 第 466 行:>>/DA(/Helveia0123456789012345678901234567 0 Tf 0 0 0 rg)/AP<>>>/DA(/Helveia012345678901234567890 0 Tf 0 0 0 rg)/AP<>>> 第 382 行:<>/DA(/Helveia0123456789012345678901 0 Tf 0 0 0 rg)/AP<>>> 第 396 行:<>/DA(/ HELVEIA01234567890123456789012 0 TF 0 0 0 RG)/ap <>>>行410:<>/da(/Heleveia012345678901234567890123 0 0 0 0 0 0 0 RG)/ap <>39999999912479124691247666912479。 0 0 rg)/AP<>>> 第 438 行:>>/DA(/Helveia01234567890123456789012345 0 Tf 0 0 0 rg)/AP<>> 第 452 行:</>/DA(/Helveia012345678901234567890123456 0 0 Tf 0 0 rg) /AP<>>> 第 466 行:>>/DA(/Helveia0123456789012345678901234567 0 Tf 0 0 0 rg)/AP<>>>>>> 第 396 行:</>/DA(/Helveia01234567890123456789012 0 Tf 0 0 0 rg)/AP<>>> 第 410 行:</>/DA(/Helveia012345678901234567890123 0 Tf 0 0 0 rg)/AP<>>> 行424: <>/DA(/Helveia0123456789012345678901234 0 Tf 0 0 0 rg)/AP<>>> 行 438: <>/DA(/Helveia01234567890123456789012345 0 Tf 0 0 0 rg)/AP<><> 行 452: /DA(/Helveia012345678901234567890123456 0 Tf 0 0 0 rg)/AP<>>> 第 466 行:<>/DA(/Helveia0123456789012345678901234567 0 Tf 0 0 0 rg)/AP<>>>>>> 第 396 行:</>/DA(/Helveia01234567890123456789012 0 Tf 0 0 0 rg)/AP<>>> 第 410 行:</>/DA(/Helveia012345678901234567890123 0 Tf 0 0 0 rg)/AP<>>> 行424: <>/DA(/Helveia0123456789012345678901234 0 Tf 0 0 0 rg)/AP<>>> 行 438: <>/DA(/Helveia01234567890123456789012345 0 Tf 0 0 0 rg)/AP<><> 行 452: /DA(/Helveia012345678901234567890123456 0 Tf 0 0 0 rg)/AP<>>> 第 466 行:<>/DA(/Helveia0123456789012345678901234567 0 Tf 0 0 0 rg)/AP<>>>第 438 行:>>/DA(/Helveia01234567890123456789012345 0 Tf 0 0 0 rg)/AP<>>> 第 452 行:>>/DA(/Helveia012345678901234567890123456 0 Tf 0 0 0 <:6)/AP<>>> 第 4 行>/DA(/Helveia0123456789012345678901234567 0 Tf 0 0 0 rg)/AP<>>>第 438 行:>>/DA(/Helveia01234567890123456789012345 0 Tf 0 0 0 rg)/AP<>>> 第 452 行:>>/DA(/Helveia012345678901234567890123456 0 Tf 0 0 0 <:6)/AP<>>> 第 4 行>/DA(/Helveia0123456789012345678901234567 0 Tf 0 0 0 rg)/AP<>>>

4

1 回答 1

1

ISO-32000-1 将 PDF 文件中的字段名称限制为最多 127 个字节。

来源参见附录 C § 2 架构限制“表 C.1”第 649 和 650 页。

于 2014-04-03T14:16:21.803 回答