📦 Fill XFA PDF Forms — 填写XFA PDF表单
v1.0.0使用编程方式填充 XFA(Adobe LiveCycle)PDF 表单。适用于处理包含 Form:XFA 的 .pdf 文件(可使用 pdfinfo 检查)。标准工具如 pdftk...
运行时依赖
安装命令
点击复制技能文档
填充XFA PDF表单 从CLI填充任何Adobe LiveCycle XFA表单。解决标准PDF工具无法解决的差距。 为什么存在 XFA表单(在pdfinfo中显示为Form: XFA)将数据嵌入PDF中的XML中,而不是作为标准的AcroForm字段。像pdftk、pypdf和PyPDF2这样的工具会默默地失败或产生空输出。这个脚本直接修改嵌入的XFA XML。 前置条件 pip install pikepdf 快速开始 SCRIPT="/scripts/fill_xfa.py" # 1) 验证表单是XFA:pdfinfo form.pdf | grep Form # 应该显示:Form: XFA # 2) 发现字段名称:python3 "$SCRIPT" fields form.pdf # 3) 从JSON填充:python3 "$SCRIPT" fill form.pdf -o filled.pdf -d data.json 命令 fields — 列出数据字段 python3 "$SCRIPT" fields form.pdf 输出排序后的字段名称及其当前值和重复计数。 fill — 设置字段值 三种输入方法 — 可以自由组合: # 可重复的--set标志:python3 "$SCRIPT" fill form.pdf -o out.pdf \ --set "Eigentümer_Name=Müller" \ --set "Eigentümer_Vorname=Anna" \ --set "PLZ=84424" # JSON文件:python3 "$SCRIPT" fill form.pdf -o out.pdf -d fields.json # Stdin管道:printf '{"Name":"Müller","Vorname":"Anna"}' | \ python3 "$SCRIPT" fill form.pdf -o out.pdf --stdin JSON数据格式 { "Feldname": "Wert", "Eigentümer_Name": "Müller", "Datum": "2026-05-05" } 字段名称必须与表单中的XML元素名称匹配(使用fields发现)。 重复字段 一些表单重用字段名称(例如,多个Textfeld1)。两种模式: 相同的值到处:--set Textfeld1=3 将所有出现设置为 "3" 每次出现不同的值:传递一个数组:{"Textfeld1": ["A", "B", "C"]} 将值分配给重复项(第一个字段得到 "A",第二个得到 "B",等等) 限制 仅适用于XFA表单 — 首先验证:pdfinfo form.pdf | grep Form 表单不得密码保护 命名空间恢复仅保留第一个xmlns:*声明(很少有意义) 一些表单在填充后需要手动签名 常见用例 政府注册表格(德语:Behördendrucke,Landkreis表格) 公用事业公司表格(垃圾收集,水/电) 学校入学申请 从官方网站下载的任何Adobe LiveCycle Designer表格 示例:德国垃圾箱注册 # 发现字段:python3 "$SCRIPT" fields tonnenanmeldung_blank.pdf # 从JSON填充(管道到stdin):python3 "$SCRIPT" fill tonnenanmeldung_blank.pdf -o tonnenanmeldung_filled.pdf --stdin <<'EOF' { "Neuantrag": "1", "Eigentümer_Name": "Müller", "Eigentümer_Vorname": "Anna", "Eigentümer_Straße": "Hauptstraße", "Eigentümer_Straße_Nummer": "5", "Eigentümer_PLZ": "84424", "Eigentümer_Ort": "Isen", "Eigentümer_seit": "2026-01-15", "Grundstück_Straße": "Beispielweg", "Grundstück_PLZ": "85435", "Grundstück_Ort": "Erding", "Grundstück_Haus_Nummer": "12", "Textfeld1": "3", "Restmüll_ab": "07/2026", "Zugang_80_l": "1", "Bio_Zugang_80_l": "1", "Papier_Zugang_240_l": "1", "Kontoinhaber_Name": "Müller, Anna", "Kontoinhaber_Straße": "Hauptstraße 5", "Kontoinhaber_Ort": "84424 Isen", "Kontoinhaber_Kreditinstitut": "VR-Bank", "Kontoinhaber_IBAN": "DE", "Kontoinhaber_IBAN_Nummer": "1234567890", "Kontoinhaber_BIC": "GENODEF1XXX", "Datum": "2026-05-05" } EOF