簡體   English   中英

從 PDF 中提取 xdp 或 xfa

[英]Extract xdp or xfa from PDF

我使用 Adob​​e LiveCycle Designer 創建了一個 PDF 表單。 我現在正在努力在填寫后以編程方式從 PDF 中提取數據。

我嘗試使用 poppler(qt4 綁定,但我想這無關緊要)來做到這一點,但顯然 poppler 無法處理 XFA 表單。 雖然 evince 和 okular 能夠顯示表單...

據我了解,PDF 包含一個 XDP,而 XDP 又包含 XFA 表單。 我的問題是,如何從 PDF 中提取該數據?

如果有庫,c++、java、python 或 PHP 是我的選擇。

組成 XFA 的 XML 文檔( XDP 格式)作為XFA鍵的值存儲在AcroForm字典(交互式表單字典)中。 AcroForm字典引用自目錄字典(PDF 文檔的目錄)。

XFA值可以是一個流或一個流數組。 如果它是一個流,則它包含整個 XML 文檔。 如果是數組,則不同的流包含單獨的 XDP 數據包。 連接它們將提供完整的 XML 文檔。

XDP 數據包之一是dataSets數據包。 實際的表單數據將位於此數據包的子元素中: xfa:data 例子:

<xfa:dataSets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
  <xfa:data>
    <!-- arbitrary XML data, e.g.: -->
    <Employee>
      <FirstName>John</FirstName>
      <Name>Doe</Name>
    </Employee>
  </xfa:data>
</xfa:dataSets>

任何提供對 PDF 對象的低級訪問的 PDF 庫都可用於提取 XML 文檔。 只需通過目錄> AcroForm > XFA導航。

一些 PDF 庫可能提供更高級的便利方法。

免責聲明:我是 iText Software 的員工。 )例如,使用 iText (Java),您可以簡單地執行此操作以將 XFA 作為org.w3c.dom.Document

PdfReader reader = new PdfReader(pdfFile);
XfaForm xfa = reader.getAcroFields().getXfa();
org.w3c.dom.Document doc = xfa.getDomDocument();

或者只是將dataSets數據包作為org.w3c.dom.Node

org.w3c.dom.Node datasets = xfa.getDatasetsNode();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM