首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Apache PDFBox从PDF文件中提取文本

如何使用Apache PDFBox从PDF文件中提取文本
EN

Stack Overflow用户
提问于 2014-05-23 01:38:46
回答 5查看 87.8K关注 0票数 31

我想用Apache PDFBox从给定的PDF文件中提取文本。

我写了这段代码:

代码语言:javascript
复制
PDFTextStripper pdfStripper = null;
PDDocument pdDoc = null;
COSDocument cosDoc = null;
File file = new File(filepath);

PDFParser parser = new PDFParser(new FileInputStream(file));
parser.parse();
cosDoc = parser.getDocument();
pdfStripper = new PDFTextStripper();
pdDoc = new PDDocument(cosDoc);
pdfStripper.setStartPage(1);
pdfStripper.setEndPage(5);
String parsedText = pdfStripper.getText(pdDoc);
System.out.println(parsedText);

但是,我得到了以下错误:

代码语言:javascript
复制
Exception in thread "main" java.lang.NullPointerException
at org.apache.fontbox.afm.AFMParser.main(AFMParser.java:304)

我将pdfbox-1.8.5.jar和fontbox-1.8.5.jar添加到类路径中。

编辑

我在程序的开头添加了System.out.println("program starts");

我运行了它,然后我得到了上面提到的相同的错误,并且program starts没有出现在控制台中。

因此,我想我遇到了类路径之类的问题。

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-05-23 02:53:12

我执行了你的代码,它工作正常。也许您的问题与您提供给文件的FilePath有关。我把我的pdf放在C盘上,并硬编码了文件路径。下面是我的代码:

代码语言:javascript
复制
// PDFBox 2.0.8 require org.apache.pdfbox.io.RandomAccessRead
// import org.apache.pdfbox.io.RandomAccessFile;

public class PDFReader{
    public static void main(String args[]) throws IOException {
        PDFTextStripper pdfStripper = null;
        PDDocument pdDoc = null;
        File file = new File("C:/my.pdf");
        PDFParser parser = new PDFParser(new FileInputStream(file));
        parser.parse();
        try (COSDocument cosDoc = parser.getDocument()) {
            pdfStripper = new PDFTextStripper();
            pdDoc = new PDDocument(cosDoc);
            pdfStripper.setStartPage(1);
            pdfStripper.setEndPage(5);
            String parsedText = pdfStripper.getText(pdDoc);
            System.out.println(parsedText);
        }
    }
}
票数 34
EN

Stack Overflow用户

发布于 2016-08-07 01:13:54

使用PDF2.0.7,这是我获取PDFBox文本的方法:

代码语言:javascript
复制
static String getText(File pdfFile) throws IOException {
    PDDocument doc = PDDocument.load(pdfFile);
    return new PDFTextStripper().getText(doc);
}

这样叫它:

代码语言:javascript
复制
try {
    String text = getText(new File("/home/me/test.pdf"));
    System.out.println("Text in PDF: " + text);
} catch (IOException e) {
    e.printStackTrace();
}

因为用户oivemaria在评论中问:

您可以通过将PDFBox添加到build.gradle中的依赖项来在应用程序中使用它

代码语言:javascript
复制
dependencies {
  compile group: 'org.apache.pdfbox', name: 'pdfbox', version: '2.0.7'
}

使用Gradle进行依赖管理的Here's more

如果你想在解析后的文本中保留PDF的格式,可以试试PDFLayoutTextStripper

票数 47
EN

Stack Overflow用户

发布于 2016-11-27 22:31:24

PdfBox 2.0.3也有一个命令行工具。

下载jar文件

  • java -jar pdfbox-app-2.0.3.jar ExtractText [OPTIONS] <inputfile> [output-text-file]

选项:-password :用于解密文档的密码-encoding : UTF-8 (默认)或ISO-8859-1、UTF-16BE、UTF-16LE、-console :将文本而不是文件发送到控制台-html :以HTML格式输出而不是原始文本-sort :在编写之前对文本进行排序-ignoreBeads :禁用按珠子分隔-debug :启用调试输出有关每个阶段的时间消耗-startPage:开始提取的第一页(从1开始) -endPage :要提取的最后一页(包括):要使用output- text -file的PDF文档:要将文本写入

的文件

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

https://stackoverflow.com/questions/23813727

复制
相关文章

相似问题

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