iText打开PDF,无法读取内容 PdfReader=newpdfReader(“E:\\document\\6imm5562e.pdf”); PdfDocument doc=新PdfDocument(读卡器); 字符串textFromPage=PdfTextExtractor.getTextFromPage(doc.getPage(1)); System.out.println(textFromPage);

iText打开PDF,无法读取内容 PdfReader=newpdfReader(“E:\\document\\6imm5562e.pdf”); PdfDocument doc=新PdfDocument(读卡器); 字符串textFromPage=PdfTextExtractor.getTextFromPage(doc.getPage(1)); System.out.println(textFromPage);,pdf,itext,Pdf,Itext,错误消息如下所示: 请稍候 如果此消息最终未被文档的正确内容替换,则PDF查看器可能无法显示此类型的文档 您可以通过访问升级到最新版本的Adobe Reader for Windows®、Mac或Linux® 有关Adobe Reader的更多帮助,请访问 Windows是Microsoft Corporation在美国和/或其他国家/地区的注册商标或商标。Mac是一个商标 苹果公司,在美国和其他国家注册。Linux是Linus Torvalds在美国和其他国家/地区的注册商标 您想要提取哪些数

错误消息如下所示:

请稍候

如果此消息最终未被文档的正确内容替换,则PDF查看器可能无法显示此类型的文档

您可以通过访问升级到最新版本的Adobe Reader for Windows®、Mac或Linux®

有关Adobe Reader的更多帮助,请访问

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


您想要提取哪些数据还不是100%清楚,因此我将提供两种选择:

1) 您希望从PDF中提取静态文本(此解决方案需要,通过使用):

此代码将首先展平您的表单,然后在展平的PDF文件上使用您的代码

2) 您希望提取表单上填写的数据(为此,您只需要iText 7 Core和方法):


我想从技术上讲,您可以使用第一种方法来提取这两种数据,但这样您就失去了XFA从表单中提取数据的能力。

很可能是XFA表单。纯xfa表单pdf(与混合xfa/acroform表单pdf相比)通常会将问题中引用的内容作为实际内容,并且只包含pdf内容。只有同时用作xfa处理器的pdf处理器通过呈现xfa来显示文件来替换pdf内容您也在GitHub上的iText 7存储库上打开了拉取请求,但您的PR不包含任何代码更改,您只将
develope
合并到
master
。我们将继续关闭您的请求,因为我们更喜欢使用堆栈溢出来获得社区支持。感谢您使用iText!错误pdf下载url:是的,它是一个XFA表单。所以你看到的文本实际上就是文本。如果要将XFA表单转换为文本,必须使用itext的一些与XFA相关的方法。是否要提取表单上的信息(由某人填写)或从“静态”PDF中提取信息?这里是com.itextpdf:pdfxfa:2.0.4?System.out.println(xfaForm.getDomDocument());-->[#document:null]是的,这是pdfXFA 2.0.4的一部分。你能把你想要达到的目标的完整代码贴出来吗?如果您使用我发布的代码和您共享的PDF,它是否有效?
public void readXFA() throws IOException, InterruptedException {

    final XFAFlattener xfaFlattener = new XFAFlattener();
    xfaFlattener.flatten(new FileInputStream(INPUT_XFA),
            new FileOutputStream(FLATTENED));

    final PdfDocument doc = new PdfDocument(new PdfReader(FLATTENED));
    String textFromPage = PdfTextExtractor.getTextFromPage(doc.getPage(1));
    System.out.println(textFromPage);
}
public void readXFA() throws IOException {
        final String INPUT_XFA = "c:\\temp\\imm5562e.pdf";

        try (PdfDocument pdf = new PdfDocument(new PdfReader(INPUT_XFA))) {
            XfaForm xfaForm = PdfAcroForm.getAcroForm(pdf, false).getXfaForm();
            System.out.println(xfaForm.getXfaFieldValue("TextField2"));
        }
    }