Java 使用PDFBox读取PDF文件的前N个字符
我编写了以下函数,jut使用PDFBox工具以PDF格式打印文本: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;
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
有一些方法可以将文本提取限制在页面范围内。我本来想只阅读第一页,但不确定。谢谢你的保证。