[英]Unable to read form (acroform) from PDF using pdfbox and iText
[英]Unable to read a PDF file using PDFBOX
我正在嘗試使用 JAVA 填寫 PDF 表單,但是當我嘗試使用以下代碼獲取字段時,列表為空。
PDDocument pdDoc = PDDocument.load(filename);
PDAcroForm pdform = pdDoc.getDocumentCatalog().getAcroForm();
List<PDField> field = pdform.getFields();
然后我嘗試使用 PDFStripper 讀取文件
PDFTextStripper stripper = new PDFTextStripper();
System.out.println(stripper.getText(pdDoc));
輸出如下
“請稍等...
如果此消息最終沒有被文檔的正確內容替換,您的 PDF 查看器可能無法顯示此類文檔。
您可以通過訪問http://www.adobe.com/go/reader_download升級到適用於 Windows®、Mac 或 Linux® 的最新版本的 Adobe Reader。
有關 Adobe Reader 的更多幫助,請訪問http://www.adobe.com/go/acrreader 。
Windows 是微軟公司在美國和/或其他國家的注冊商標或商標。 Mac 是 Apple Inc. 在美國和其他國家/地區注冊的商標。 Linux 是 Linus Torvalds 在美國和其他國家的注冊商標。”
但我可以手動打開文件並填寫字段。 我也嘗試過其他工具,例如 iText。 但是我又一次無法獲得田野。 我該如何解決這個問題?
回答可能為時已晚,但為什么不這樣做。 如果您的pdf文件具有XFA結構,則可以獲取空白列表。
PDDocument pdDoc = PDDocument.load(filename);
PDAcroForm pdform = pdDoc.getDocumentCatalog().getAcroForm();
List<PDField> field = pdform.getFields();
使用以下代碼行開始使用pdf:
PDXFA xfa = pdform.getXFA();
Document xfaDocument = xfa.getDocument();
NodeList elements = xfaDocument.getElementsByTagName( "SomeElement" );
在與 Alfresco 的內容搜索能力作斗爭時,我在使用舊 Acrobat 4.0 格式的舊應用程序(如 QuarkXPress)編寫的 PDF 文件的 pdfbox(Alfresco 使用它來提取文本和元數據)方面遇到了一些問題。 這種舊格式的 pdfbox 似乎無法從中提取元數據或文本,盡管使用任何 PDF 閱讀器應用程序都可以完美查看這些文件。
解決方案是使用更現代的 PDF 格式(例如 10.0)重新打印所有舊的 PFD 文件(另存為...)。 這可以使用一些 bash 腳本連續完成。
我直接沒有嘗試 4.0 和 10.0 之間的中間 Acrobat 版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.