如何使用IText或任何使用Java的函数获取Portable Collection Pdf的页数

问题描述 投票:-2回答:1
PdfReader reader = new PdfReader(pdfFile, new byte[0]);
pages = reader.getNumberOfPages();

假设在便携式集合中有两个pdf(每个pdf包含2个页面)。当我尝试获取页数时,它只返回1.我认为它正在考虑便携式收集文档的封面页。有没有办法获得便携式收集的页数?我使用的是Java 11和IText 5.5版本。

java pdf itext
1个回答
0
投票

我找到了解决方案,但我认为没有必要检查以下内容。我认为以下解决方案不是获取总pdf页码的有效方法。

private int getNumberOfPages(PdfReader reader) {
            int pages = 0;
            PdfObject obj;
            for (int i = 1; i <= reader.getXrefSize(); i++) {
                obj = reader.getPdfObject(i);
                if (obj != null && obj.isStream()) {
                    PRStream stream = (PRStream)obj;
                    byte[] b;
                    try {
                        b = PdfReader.getStreamBytes(stream);
                        PdfReader pdfReader = new PdfReader(b);
                        pages += pdfReader.getNumberOfPages();
                    } catch(InvalidPdfException e) {

                    } catch (IOException e) {

                    }

                }
            }
            if (pages == 0) {
                pages = reader.getNumberOfPages();
            }
            return pages;
        }
© www.soinside.com 2019 - 2024. All rights reserved.