ruby - 使用 Ruby 填写 PDF 表单

标签 ruby pdf pdftk

我正在尝试使用 ruby​​ 以编程方式填写 pdf。 pdf 包含允许输入文本的字段:

screenshot of pdf fields

我过去通过 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 中打开了表格这是我查看“表单”选项卡时看到的内容:

enter image description here

你看到 /Fields 数组了吗?它是空的:[]。这意味着 PdfTk 无需填写任何内容。那么表格在哪里呢?

表单是使用 XML 表单架构 (XFA) 描述的。可以填写 XFA 表单的软件产品不多。哎呀,允许您查看表单的 PDF 查看器并不多。例如,这是我在浏览器中打开表单时看到的内容:

enter image description here

我知道有两条产品线可以满足您的需求:

  1. Adobe 软件:例如 Adob​​e LiveCycle ES。
  2. 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/

相关文章:

javascript - 如何使用 .js.erb 将 ruby​​ 数据结构转换为 javascript 数据结构?

bash - 如何使用 PDFTK(或其他命令行应用程序)查找和替换现有 PDF 文件中的文本

pdftk - 执行 "pdftk my-pdf-form.pdf dump_data_fields"什么也没显示

ruby-on-rails - 从 UBUNTU 14.0.4 LTS 卸载 Ruby 时出错

ruby - Ruby 中 Postgres 查询的简单示例

html - DOMPDF:为什么在将页面分成两半时 CSS 无法正确呈现为 PDF?

html - PDF 作为 HTML 中的空白页

pdf - 如何修复 PDF 文件并嵌入丢失的字体

ruby - 需要正则表达式来返回删除部分的字符串

ios - iOS 中的缩略图创建改进