How to get number of pages of Portable Collection Pdf using IText or any function using Java

强颜欢笑 提交于 2019-12-26 16:02:47

问题


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

Suppose there are two pdfs(Each pdf contains 2 pages) inside portable collection. When i try to get number of pages it returns just 1. I think it is considering cover page of the portable collection document. Is there any way to get number of pages of portable colletion ? I am using Java 11 and IText 5.5 version.


回答1:


I found solution for this but i think it is unnecessary to check the below things and solution is not a efficient way of getting the total pdf page numbers.

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;
        }


来源:https://stackoverflow.com/questions/55451570/how-to-get-number-of-pages-of-portable-collection-pdf-using-itext-or-any-functio

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!