Home > Mobile >  Exporting a subset of pages from a PDF
Exporting a subset of pages from a PDF

Time:01-06

I would like to get a subset of pages out of a PDF file. Basically I give the function a file, split it into pages and then create a new file with just the pages between the start and end page. As the users are entering the page numbers I need correct for Lists starting at 0. Here is the code I have.

     public static String SplitPdf(File source, Integer startPage, Integer endPage) throws Exception {

        String sourceFileName = source.getAbsolutePath().replace("\\", "/");
        File file = new File(sourceFileName);

        PDDocument document = PDDocument.load(file);
        Splitter splitter = new Splitter();
        List<PDDocument> pages = splitter.split(document);

        Integer correctedStartPage = startPage < 1 ? 1 : startPage - 1;
        Integer correctedEndPage = endPage < 1 ? 1 : endPage - 1;

        if (pages.size() <= correctedStartPage) throw new Exception("Start page: "   startPage   " No of pages: "   pages.size());
        if (pages.size() <= correctedEndPage) throw new Exception("End page: "   endPage   " No of pages: "   pages.size());
        if (startPage > endPage)
            throw new Exception("Start page before end page. Start page: "   startPage   " End page: "   endPage);

        PDDocument newDoc = new PDDocument();
        String filePath = file.getParent()   "\\"   FilenameUtils.getBaseName(file.getName())   "-fittingPart"  
                "."   FilenameUtils.getExtension(file.getName());

        for (int i = correctedStartPage; i <= correctedEndPage; i  ) {

            PDDocument currentPage = pages.get(i);
            PDPage page = currentPage.getPage(0);
            newDoc.addPage(page);
            currentPage.close();
        }

        newDoc.save(filePath);
        newDoc.close();

        return filePath;
    }

the error I am getting is:

COSStream has been closed and cannot be read. Perhaps its enclosing PDDocument has been closed?

I did check that the file exists

As far as I can see I am not closing the PDDocument too early... any ideas?

PS: I need to use apache PDFBox and not some other library

  •  Tags:  
  • Related