如何自动将pdf表单字段导出到xml

我有一个包含表单字段的pdf文件,需要将数据导出到一个自动xml文件中。 这是我为测试创建的示例表单的屏幕:

在此处输入图像描述

注意:通过单击Tools > Form > Export Form Data ,最后使用Acrobat Professional 手动导出它,最后选择xml扩展名进行文件输出。 这是我手动导出时得到的结果:

   John Doe  

但是,我需要自动化它,例如使用python脚本Java实现或一些命令行工具 。 我可以使用哪些库或工具将表单字段数据导出到xml ? 该工具或库应该是开源的 ,我可以将它集成到我的工作流程中。

我已经尝试过python pdfminer库,它帮助我导出pdf文件的静态部分(如Static form headerFirst name:Last name: pdfminer :但是如何导出表单字段数据(在我的例子中是表单字段的内容) first_namelast_name )??

编辑:随意下载sample.pdf文件。

Apache PDFBox怎么样? 它是开源的,可以满足您的需求,因为该网站说“从PDF表单中提取表单数据或预填充PDF表单”。

编辑:查看PrintFields示例 。

在bash中,你可以这样做(至少使用我的这些工具版本,减去444和cat 8.13):

 less ~/Downloads/sample.pdf | cat 

我得到的输出看起来像这样:

 Static form header First name: John Last name: Doe 

然后你可以使用Java / Python / awk / what来解析它。

当然,或者,如果您不想依赖这些特定版本的行为(不确定它们是否总是这样做),您可以查看较少的源代码以查看它是如何做到的。

在Java中,有一些库可以使用PDF,但通常很难从PDF获取格式化信息。 我从来没有实现那个东西,但Qoppa看起来很好,似乎是先进的,但它不是免费的。 它包含jPDFFields ,它可用于从表单字段中提取值。 还有一个类似的线程 ,其中有一些关于命令行工具的信息。

我希望它对你有所帮助。

我使用pdfminer取得了很大的成功:

 pdf2txt.py -o out.xml -t xml sample.pdf 

然后使用xpath和连接字符串解析它,从代码中使用它来跟踪代码

除此之外,还有一个名为tabula的新孩子,用ruby写的,我没有机会使用但是应该很棒

我理解您不愿意使用付费服务,但仍然值得一提的是Adobe有一个转换服务,在撰写本文时每月花费2美元, 请查看 ,只是说……

对于Java解决方案,您可以使用iText读取字段,然后使用jackson-dataformat-xml将结果写为XML。 一个有点基本的例子是:

 // read fields final PdfReader reader = new PdfReader("/path/to/my.pdf"); final AcroFields fields = reader.getAcroFields(); final Map values = new HashMap<>(); for (String fieldName : (Set) fields.getFields().keySet()) { values.put(fieldName, fields.getField(fieldName)); } // write final XmlMapper mapper = new XmlMapper(); final String result = mapper.writeValueAsString(values); System.out.println(result); 

这里肯定有一些改进空间,但它可能是一个很好的起点。

Interesting Posts