gpt4 book ai didi

java - 使用 Java 的 Pdf 页数

转载 作者:太空狗 更新时间:2023-10-29 22:51:35 27 4
gpt4 key购买 nike

目前我正在使用 itext 阅读 pdf 的页数。这需要很长时间,因为库似乎要扫描整个文件。

页面信息是否位于 pdf 标题的某处,或者是否需要完整的文件扫描?

最佳答案

没错。 iText 在打开时会解析相当多的 PDF(它不读取流对象的内容,仅此而已)...

除非您使用 PdfReader(RandomAccessFileOrArray) 构造函数,在这种情况下,它只会读取外部参照(主要是必需的),但不会解析任何内容,直到您开始请求特定对象(直接或通过各种调用) ).

The first PDF program I ever wrote did exactly this. It opened up a PDF and doing the bare minimum amount of work necessary, read the number of pages. It didn't even parse the xrefs it didn't have to. Haven't thought about that program in years...

因此,虽然效率不高,但使用 RandomAccessFileOrArray 会效率高得多:

int efficientPDFPageCount(String path) {
RandomAccessFileOrArray file = new RandomAccessFileOrArray(path, false, true );
PdfReader reader = new PdfReader(file);
int ret = reader.getNumberOfPages();
reader.close();
return ret;
}

更新:

itext API 进行了一些大修。现在(在 5.4.x 版本中)正确的使用方法是通过 java.io.RandomAccessFile:

int efficientPDFPageCount(File file) {
RandomAccessFile raf = new RandomAccessFile(file, "r");
RandomAccessFileOrArray pdfFile = new RandomAccessFileOrArray(
new RandomAccessSourceFactory().createSource(raf));
PdfReader reader = new PdfReader(pdfFile, new byte[0]);
int pages = reader.getNumberOfPages();
reader.close();
return pages;
}

关于java - 使用 Java 的 Pdf 页数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026971/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com