使用 CLI Linux 工具或 NodeJS 模块填充 acroforms 的完美方法是什么?

What is the perfect way to fill acroforms using CLI Linux tool or NodeJS module?

我有一项任务需要填写 PDF 表单。我认为它们被称为 Acroforms,但我不确定。它与 XFA 表单(嵌入在 PDF 中)相反,Acroform 的动态性较低,与 XFA 相比它们没有很多功能。

我正在为 NodeJS 编写代码,所以我尝试了它的模块 pdffiller。这个库只是所谓的 pdftkPDF Toolkit.
的包装器 我花了将近一天的时间才弄清楚如何在我的 Ubuntu 18.04 开发笔记本电脑上使用它。我无法安装或编译它,所以我不得不下载 docker image、解压缩并将编译后的 pdftk 放在特定的系统文件夹中以允许 pdffiller 工作(lib 在这里 /usr/lib/x86_64-Linux-gnu/libgcj.so.16.0.0, 二进制在这里 /usr/local/bin/pdftk).

然后是表格。从官方政府网页下载的那些(这些是税收 return 表格)是 XFA 表格,这些表格不适用于 pdftk - 我得到的只是一个我没有的密码请求。

Error: Failed to open PDF file: 
   tax-return-form.pdf
   OWNER PASSWORD REQUIRED, but not given (or incorrect)
Done.  Input errors, so no output created.

我们采用了另一种方法,我们购买了 Adob​​e Acrobat DC 将平面 PDF 转换为简单的 Acroform。然后我们再次测试 PDF Toolkit 可以做什么。两个问题是障碍,dim pdftk 对我们不可用:

  1. 没有波兰语变音符号 (ąęćśżźnó) 的输出
  2. 无法选中复选框

税单上有很多这样的复选框!

请问应该用什么工具?是否有任何开源或免费的商业用途可以正确填写 PDF 表单?

编辑: 我找到 select 复选框的方法。使用 pdftk dump_data_fields_utf8 方法后,我得到了一个包含大量字段信息的文件:

---
FieldType: Button
FieldName: checkbox3
FieldFlags: 0
FieldJustification: Left
FieldStateOption: Off
FieldStateOption: Yes
---

上面的复选框有 FieldStateOption: Off 或 Yes。只需将 Yes 放入 JSON 字段值映射疯狂复选框 selected.

这是可行的,但是:

  1. 如果使用 'flatten' 选项,则没有 utf-8 字体
  2. 必须使用 'need_appearances' 排除 'flatten'
  3. Ubuntu 的 PDF 查看器 Evince 3.28.4 不知道如何显示波兰语字体
  4. Firefox、Chrome、Adobe Reader 9 for Linux 可以正确显示 UTF 字体。
  5. 并为否决投票而狂热,但没有解释原因,所以像往常一样糟糕。