How can I remove blank page from PDF in iText

前端 未结 2 2018
被撕碎了的回忆
被撕碎了的回忆 2021-01-01 06:45

I want to remove a blank page from a PDF generated using the iText library in Java.

How do I do it?

2条回答
  •  温柔的废话
    2021-01-01 07:06

    There are a few ways I am sure. But here is an example of how I have done it. I just check for amount of data on the page and if it is < 20 bytes I don't include it:

    public void removeBlankPdfPages(String pdfSourceFile, String pdfDestinationFile, boolean debug)
        {
            try
            {
                // step 1: create new reader
                PdfReader r = new PdfReader(pdfSourceFile);
                RandomAccessFileOrArray raf = new RandomAccessFileOrArray(pdfSourceFile);
                Document document = new Document(r.getPageSizeWithRotation(1));
                // step 2: create a writer that listens to the document
                PdfCopy writer = new PdfCopy(document, new FileOutputStream(pdfDestinationFile));
                // step 3: we open the document
                document.open();
                // step 4: we add content
                PdfImportedPage page = null;
    
    
                //loop through each page and if the bs is larger than 20 than we know it is not blank.
                //if it is less than 20 than we don't include that blank page.
                for (int i=1;i<=r.getNumberOfPages();i++)
                {
                    //get the page content
                    byte bContent [] = r.getPageContent(i,raf);
                    ByteArrayOutputStream bs = new ByteArrayOutputStream();
                    //write the content to an output stream
                    bs.write(bContent);
                    logger.debug("page content length of page "+i+" = "+bs.size());
                    //add the page to the new pdf
                    if (bs.size() > blankPdfsize)
                    {
                        page = writer.getImportedPage(r, i);
                        writer.addPage(page);
                    }
                    bs.close();
                }
                //close everything
                document.close();
                writer.close();
                raf.close();
                r.close();
            }
            catch(Exception e)
            {
            //do what you need here
            }
        }
    

提交回复
热议问题