Java 使用PDFBox读取PDF文件的前N个字符

Java 使用PDFBox读取PDF文件的前N个字符,java,file-io,pdfbox,Java,File Io,Pdfbox,我编写了以下函数,jut使用PDFBox工具以PDF格式打印文本: private String readFirstNChars(int N) { // N has not been used PDFTextStripper pdfTextStripper = null; PDDocument pdDocument = null; COSDocument cosDocument = null; File currentFile = this.pdfFile;

我编写了以下函数,jut使用PDFBox工具以PDF格式打印文本:

private String readFirstNChars(int N) { // N has not been used
    PDFTextStripper pdfTextStripper = null;
    PDDocument pdDocument = null;
    COSDocument cosDocument = null;
    File currentFile = this.pdfFile;

    try {
        PDFParser parser = new PDFParser(new RandomAccessBufferedFileInputStream(currentFile));
        parser.parse();
        cosDocument = parser.getDocument();
        pdfTextStripper = new PDFTextStripper();
        pdDocument = new PDDocument(cosDocument);
        pdfTextStripper.setStartPage(1);
        pdfTextStripper.setEndPage(1);
        String parsedText = pdfTextStripper.getText(pdDocument);
        return parsedText;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

我想先打印
N
字符的
parsedText
,然后我想知道我能读的文件是否很大,这种方法没有任何意义,即将整个文本加载到内存中,然后首先获取
N
字符。是否有一种方法可以从PDF中只读
N
字符?

您可能需要PDFParser的源代码,以便编写适当的方法或编写自己的方法。PDF不仅仅是可读文本,因此基本上您需要解析文档,丢弃不可读文本,然后对找到的实际文本进行计数。

您可能需要PDFParser的源代码,以便编写适当的方法或编写自己的方法。PDF不仅仅是可读的文本,因此本质上你需要解析文档,丢弃不可读的文本,然后统计你找到的实际文本。

PDF不是HTML。PDFBox读取整个PDF以对其进行解析。@Tilmahausherr是对的,PDFBox首先将整个PDF读取到内存中,内存比要提取的文本要多(可能相当多)。但是您仍然可以防止代码做不必要的工作,例如,只阅读第一页的文本
PDFTextStripper
有一些方法可以将文本提取限制在页面范围内。我本来想只阅读第一页,但不确定。感谢您确保.PDF不是HTML。PDFBox读取整个PDF以对其进行解析。@Tilmahausherr是对的,PDFBox首先将整个PDF读取到内存中,内存比要提取的文本要多(可能相当多)。但是您仍然可以防止代码做不必要的工作,例如,只阅读第一页的文本
PDFTextStripper
有一些方法可以将文本提取限制在页面范围内。我本来想只阅读第一页,但不确定。谢谢你的保证。