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

时间:2019-04-01 09:09:31

标签: java pdf itext

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

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

1 个答案:

答案 0 :(得分: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;
        }