【问题标题】:Unable to read a PDF file using PDFBOX无法使用 PDFBOX 读取 PDF 文件
【发布时间】:2013-06-27 07:03:33
【问题描述】:

我正在尝试使用 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 查看器可能无法显示此类文档。

您可以通过以下方式升级到最新版本的适用于 Windows®、Mac 或 Linux® 的 Adob​​e Reader 访问http://www.adobe.com/go/reader_download

有关 Adob​​e Reader 的更多帮助,请访问http://www.adobe.com/go/acrreader

Windows 是 Microsoft Corporation 在美国和/或其他国家/地区的注册商标或商标。 Mac 是商标 苹果公司,在美国和其他国家注册。 Linux 是 Linus Torvalds 在美国和其他国家的注册商标 国家。”

但我可以手动打开文件并填写字段。我也尝试过其他工具,例如 iText。但是我又一次无法获得田野。 我该如何解决这个问题?

【问题讨论】:

    标签: java pdfbox


    【解决方案1】:

    现在回答可能为时已晚,但无论如何为什么不回答。如果您的 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" );
    

    【讨论】:

    • 如何检查是否是这种情况?
    • 使用以下 'if' 语句:if ( pdform.getFields().isEmpty ) { //XFA case } else { //AcroForm case }
    猜你喜欢
    • 2021-12-22
    • 2018-12-06
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    相关资源
    最近更新 更多