簡體   English   中英

無法使用 PDFBOX 讀取 PDF 文件

[英]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.

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