使用Ruby填写PDF表单

dug*_*dug 11 ruby pdf pdftk

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

pdf字段的屏幕截图

我已经使用在过去成功pdftk通过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')
=> []
Run Code Online (Sandbox Code Playgroud)

如何使用ruby填写pdf?

Bru*_*gie 6

PdfTk只不过是使用GCJ编译的强大旧版iText.只要表单包含使用AcroForm技术定义的字段,就可以使用PdfTk填写表单.对于您所指的表格,情况并非如此.我在iText RUPS中打开了表单,这是我在"表单"选项卡中查看时看到的内容:

在此输入图像描述

你看到/Fields阵列了吗?它是空的:[].这意味着PdfTk没有任何内容可以填写.那表格在哪里?

使用XML Forms Architecture(XFA)描述表单.周围没有很多软件产品可以填写XFA表格.哎呀,没有很多PDF查看器可以让你查看表格.例如,这是我在浏览器中打开表单时看到的内容:

在此输入图像描述

我知道有两种产品系列可以满足您的需求:

  1. Adobe软件:例如Adobe LiveCycle ES.
  2. iText软件:您可以通过注入XML将表格填入AGPL版本的iText(请参阅如何在iTextSharp中以静态XFA格式设置XFA数据并将其保存?); 您可以使用iText的XFA Worker来展平表单(请参阅如何使用iTextSharp压缩XFA PDF表单?).

作为iText Group的首席执行官,我建议使用iText(如果您使用的是PdfTk,那么您已经使用旧版本了).iText作为Java库提供,因此使用JRuby是满足您需求的最佳机会.

另一种选择是将表单完全重新设计为基于AcroForm技术而非XFA技术的表单.


Kh *_*mad 5

pdf-formgem仅适用于Adobe Acrobat生成的pdf .请关注此问题

确保在PDF中,您通过adobe acrobat创建了文本字段