我正在尝试使用 ruby 以编程方式填写 pdf。 pdf 包含允许输入文本的字段:
我过去通过 pdf_form
gem 使用 pdftk
取得了成功,但是它没有找到这个特定 pdf 中的字段:
$ pry
[1] pry(main)> require 'pdf_forms'
=> true
[2] pry(main)> pdftk = PdfForms.new('/usr/local/bin/pdftk')
=> #<PdfForms::PdftkWrapper:0x007fece7af6d98 @options={}, @pdftk="/usr/local/bin/pdftk">
[3] pry(main)> pdftk.get_field_names('designation.pdf')
=> []
如何使用 ruby 填写 pdf?
最佳答案
PdfTk 只不过是使用 GCJ 编译的强大的旧版 iText。只要表单包含使用 AcroForm 技术定义的字段,就可以使用 PdfTk 填写表单。您所指的表格并非如此。我在 iText RUPS 中打开了表格这是我查看“表单”选项卡时看到的内容:
你看到 /Fields
数组了吗?它是空的:[]
。这意味着 PdfTk 无需填写任何内容。那么表格在哪里呢?
表单是使用 XML 表单架构 (XFA) 描述的。可以填写 XFA 表单的软件产品不多。哎呀,允许您查看表单的 PDF 查看器并不多。例如,这是我在浏览器中打开表单时看到的内容:
我知道有两条产品线可以满足您的需求:
- Adobe 软件:例如 Adobe LiveCycle ES。
- iText 软件:您可以通过注入(inject) XML 使用 AGPL 版本的 iText 填写表格(参见 How can I set XFA data in a static XFA form in iTextSharp and get it to save? );您可以使用 iText 的 XFA Worker 将表单展平(参见 How can I flatten a XFA PDF Form using iTextSharp? )。
作为 iText Group 的首席执行官,我建议使用 iText(如果您使用的是 PdfTk,那么您已经在使用旧版本了)。 iText 可作为 Java 库使用,因此使用 JRuby 是满足您需求的最佳机会。
另一种选择是将表单完全重新设计为基于 AcroForm 技术而非 XFA 技术的表单。
关于ruby - 使用 Ruby 填写 PDF 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33621861/