首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iText打开PDF,无法读取内容。

iText打开PDF,无法读取内容。
EN

Stack Overflow用户
提问于 2019-12-23 02:58:57
回答 1查看 324关注 0票数 0
代码语言:javascript
复制
PdfReader reader = new PdfReader("E:\\document\\6imm5562e.pdf");
PdfDocument doc = new PdfDocument(reader);
String textFromPage = PdfTextExtractor.getTextFromPage(doc.getPage(1));
System.out.println(textFromPage);

错误消息如下:

请稍候... 如果此消息最终未被文档的适当内容替换,则PDF查看器可能无法显示这种类型的文档。 通过访问下载,您可以升级到最新版本的、Mac或Linux。 有关Adobe的更多帮助,请访问http://www.adobe.com/go/acrreader。 Windows是微软公司在美国和/或其他国家的注册商标或商标。Mac是苹果公司的商标,在美国和其他国家注册。Linux是Linus在美国和其他国家的注册商标。

EN

回答 1

Stack Overflow用户

发布于 2019-12-27 11:33:24

还不完全清楚您想提取哪些数据,因此我将提供两个选择:

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

代码语言:javascript
复制
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);
}

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

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

代码语言:javascript
复制
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"));
        }
    }

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59449727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档