我尝试使用ruby以编程方式填写pdf。 pdf包含允许输入文本的字段:
过去我通过pdftk
gem使用pdf_form
取得了成功,但是在这个特定的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?
答案 0 :(得分:6)
PdfTk只不过是使用GCJ编译的强大旧版iText。只要表单包含使用AcroForm技术定义的字段,就可以使用PdfTk填写表单。对于您所指的表格,情况并非如此。我在iText RUPS打开了表单,这是我在“表单”选项卡中查看时看到的内容:
你看到/Fields
阵列吗?它是空的:[]
。这意味着PdfTk没有任何内容可以填写。那表格在哪里?
使用XML Forms Architecture(XFA)描述表单。周围没有很多软件产品可以填写XFA表格。哎呀,没有很多PDF查看器可以让你查看表格。例如,这是我在浏览器中打开表单时看到的内容:
我知道有两种产品系列可以满足您的需求:
作为iText Group的首席执行官,我建议使用iText(如果您使用的是PdfTk,那么您已经使用旧版本了)。 iText作为Java库提供,因此使用JRuby是您满足需求的最佳机会。
另一种选择是将表单完全重新设计为基于AcroForm技术而非XFA技术的表单。
答案 1 :(得分:5)
pdf-form
gem仅适用于 Adobe Acrobat 生成的pdf。请按照issue
确保在 PDF 中,您通过adobe acrobat创建了文本字段
答案 2 :(得分:3)
恐怕你可能被迫使用JRuby和iText。我过去做过类似的事情,iText似乎是处理复杂PDF文件的最佳库。
http://www.mikeperham.com/2011/02/15/filling-out-pdf-forms-with-jruby/