首页 > 解决方案 > 如何使用 IText 或使用 Java 的任何函数获取 Portable Collection Pdf 的页数

问题描述

PdfReader reader = new PdfReader(pdfFile, new byte[0]);
pages = reader.getNumberOfPages();

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

标签: javapdfitext

解决方案


我找到了解决方案,但我认为没有必要检查以下内容,并且解决方案不是获取总 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;
        }

推荐阅读