从PDF表单中提取PDF表单字段名称

Chr*_*one 22 .net php pdf

我正在使用pdftk填写带有XFDF文件的PDF表单.但是,对于这个项目,我事先并不知道将出现哪些字段,因此我需要分析PDF本身以查看需要填写的字段,相应地向用户显示接口,然后从中生成XFDF文件填写PDF表格.

我如何获得字段名称?最好是命令行,.NET或PHP解决方案.

小智 47

简单!您已经在使用pdftk了

# pdftk input.pdf dump_data_fields
Run Code Online (Sandbox Code Playgroud)

它将输出字段名称,字段类型,它的一些属性(如下拉列表或文本对齐的选项),甚至是工具提示文本(我发现它非常有用)

我唯一缺少的是场地坐标......

  • 这应该是选定的答案.或者,如果您有Adobe Professional,则可以单击"表单">"管理表单数据">"导出数据"以将数据导出到FDF文件.然后打开FDF文件并获取与填充值相关联的字段名称. (6认同)

hyi*_*tiz 14

考虑到pdftk是废弃软件,您可以使用qpdf库以 JSON 格式转储元数据,并用于jq仅过滤表单相关数据:

qpdf inout.pdf --json | jq '.acroform.fields'
Run Code Online (Sandbox Code Playgroud)

qpdf是一个轻量级跨平台FOSS库,jq是一个JSON过滤程序(就像grep一个行过滤程序)。如果您不想使用jqJSON,您可以随时使用转储qpdf input.pdf,然后在转储中自行查找元数据。


Dev*_*rps 10

这对我有用:

 pdftk 1.pdf dump_data_fields output test2.txt
Run Code Online (Sandbox Code Playgroud)

然后,当使用密码加密文件时,您可以从中进行读取

 pdftk 1.pdf input_pw YOUR_PASSWORD_GOES_HERE dump_data_fields output test2.txt
Run Code Online (Sandbox Code Playgroud)

这花了我2个小时来做​​对,所以希望我能节省你一些时间:)


Chr*_*one -5

我可以让我的客户使用 Acrobat 导出 XFDF 文件(包含字段名称)和 PDF,这完全避免了这个问题。

  • 您是指 Acrobat Reader 或某些相关的 Acrobat 产品吗? (2认同)