private boolean internalRemovePage(int pageNum) { int parentIndex = findPageParent(pageNum); PdfPages pdfPages = parents.get(parentIndex); if (pdfPages.removePage(pageNum)) { if (pdfPages.getCount() == 0) { parents.remove(parentIndex); pdfPages.removeFromParent(); --parentIndex; } if (parents.size() == 0) { root = null; parents.add(new PdfPages(0, document)); } else { correctPdfPagesFromProperty(parentIndex + 1, -1); } pageRefs.remove(pageNum); pages.remove(pageNum); return true; } else { return false; } }
/** * Insert {@see PdfPage} into specific one-based position. * * @param index one-base index of the page * @param pdfPage {@link PdfPage} to insert. */ public void addPage(int index, PdfPage pdfPage) { --index; if (index > pageRefs.size()) throw new IndexOutOfBoundsException("index"); if (index == pageRefs.size()) { addPage(pdfPage); return; } loadPage(index); pdfPage.makeIndirect(document); int parentIndex = findPageParent(index); PdfPages parentPages = parents.get(parentIndex); parentPages.addPage(index, pdfPage); pdfPage.parentPages = parentPages; correctPdfPagesFromProperty(parentIndex + 1, +1); pageRefs.add(index, pdfPage.getPdfObject()); pages.add(index, pdfPage); }