乐于分享
好东西不私藏

自动填充 PDF 交互式表单字段(AcroForms)

自动填充 PDF 交互式表单字段(AcroForms)

今天在调研自动生成人事系统的入职文件时,我才知道 PDF 交互式表单字段(AcroForms)这个东东。我以为 PDF 格式就是不能编辑的。。。原来 PDF 是可以包含类似网页 form 表单的,可以直接通过 pdfcpu 命令工具,获取其他库用代码进行自动填充。

使用 pdfcpu 可以检测一个 pdf 文件是否包含交互式表单。并通过命令行填充表单。

安装 pdfcpu

go install github.com/pdfcpu/pdfcpu/cmd/pdfcpu@latest

最神奇的是,这个居然给我自动安装上了 go 1.25。我本地的 go 版本总是被迫升级。

go: downloading github.com/pdfcpu/pdfcpu v0.11.1
go: github.com/pdfcpu/pdfcpu@v0.11.1 requires go >= 1.24.0; switching to go1.25.7
go: downloading go1.25.7 (linux/amd64)
go: downloading github.com/hhrutter/pkcs7 v0.2.0
go: downloading github.com/hhrutter/tiff v1.0.2
go: downloading github.com/hhrutter/lzw v1.0.0
go: downloading golang.org/x/image v0.32.0
go: downloading golang.org/x/text v0.30.0
go: downloading github.com/mattn/go-runewidth v0.0.19
go: downloading github.com/clipperhouse/uax29/v2 v2.2.0

不包含交互式表单的情况

可以用官方提供这个 pdf 样例做测试:

https://github.com/pdfcpu/pdfcpu/blob/master/pkg/samples/form/demo/english.pdf

> pdfcpu form list test.pdf
installing user font:
Roboto-Regular
pdfcpu: no form available

包含交互式表单的情况

同样是输入如下命令:

pdfcpu form list english.pdf

可以看到结果如下图

每个字段有对应的名字。

自动对表单填充

新建一个 english.json 的文件,内容如下:

{
"header": {
"source": "english.pdf",
"version": "pdfcpu v0.4.1",
"creation": "2023-04-04 20:22:17 CET",
"producer": "pdfcpu v0.4.1"
},
"forms": [
"textfield": [
{
"name": "firstName",
"value": "Horst",
"locked": false
}
],
"datefield": [
{
"name": "dob",
"value": "31.12.1999",
"locked": true
}
],
}
]
}

执行命令:

$ pdfcpu form fill english.pdf english.json tmp.pdf

就能实现自动填充,非常方便

如何将 word 转换为包含表单的 pdf

这个我没测试过,不知道是否可行,但是 gemini 说可以使用 LibreOffice Writer (直接导出) 就是不知道 WPS 是否也支持这个功能。

  1. 用 LibreOffice 打开你的 Word 文档。
  2. 开启 “视图 -> 工具栏 -> 表单控件”。
  3. 在文档中插入“文本框”或“复选框”控件。
  4. 点击 “文件 -> 导出为 PDF”。
  5. 在弹出窗口中确保勾选了 “创建 PDF 表单”。
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 自动填充 PDF 交互式表单字段(AcroForms)

评论 抢沙发

2 + 4 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮