2013-09-03 41 views
5

Tôi đã tạo biểu mẫu PDF với Adobe LiveCycle Designer. Tôi hiện đang vật lộn để trích xuất dữ liệu theo chương trình từ PDF sau khi nó được điền.Trích xuất xdp hoặc xfa từ PDF

Tôi đã cố gắng làm điều này bằng cách sử dụng poppler (ràng buộc qt4, nhưng tôi đoán điều đó không quan trọng), nhưng dường như người chơi không thể xử lý các biểu mẫu XFA. Mặc dù đã xuất hiện và có thể hiển thị biểu mẫu ...

Theo như tôi hiểu, tệp PDF chứa XDP lần lượt chứa biểu mẫu XFA. Câu hỏi của tôi là, làm thế nào tôi có thể trích xuất dữ liệu đó từ PDF?

Nếu có thư viện, C++, java, python hoặc PHP là các tùy chọn của tôi.

+0

bạn đã có bất kỳ thành công chưa? – Jimmyt1988

+0

No. Nhưng các yêu cầu đã thay đổi ở phía bên của khách hàng, đó là lý do tại sao tôi không theo đuổi nó nữa – arsenbonbon

Trả lời

2

Các tài liệu XML (trong XDP định dạng) tạo nên các XFA được lưu giữ như giá trị của XFA then chốt trong AcroForm điển (Interactive Mẫu điển). Từ điển AcroForm được tham chiếu từ Danh mục từ điển (Gốc của tài liệu PDF).

Giá trị XFA có thể là luồng hoặc một loạt luồng. Nếu đó là một luồng, nó chứa toàn bộ tài liệu XML. Nếu đó là một mảng, các luồng khác nhau chứa các gói XDP riêng biệt. Kết hợp chúng sẽ cung cấp toàn bộ tài liệu XML.

Một trong các gói XDP là gói dữ liệu dataSets. Dữ liệu biểu mẫu thực tế sẽ có trong phần tử con của gói này: xfa: dữ liệu. Ví dụ:

<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> 

Bất kỳ thư viện PDF nào có quyền truy cập cấp thấp vào các đối tượng PDF đều có thể được sử dụng để trích xuất tài liệu XML. Chỉ cần điều hướng qua Danh mục>AcroForm>XFA.

Một số thư viện PDF có thể cung cấp phương thức tiện lợi cao cấp hơn.

(Disclaimer: Tôi là một nhân viên iText Software.) Ví dụ, sử dụng iText (Java) bạn chỉ có thể làm điều này để có được những XFA như một org.w3c.dom.Document:

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

Hoặc chỉ lấy datasets gói như một org.w3c.dom.Node:

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

tôi muốn trích xuất xfa từ pdf bằng cách sử dụng php. Xin vui lòng cho một số ý tưởng về điều đó. – Lakhan

+0

Tôi muốn dữ liệu getxfa từ pdf sử dụng pdftk. – Lakhan

Các vấn đề liên quan