/** * Selects the pages to keep in the document. The pages are described as a * <CODE>List</CODE> of <CODE>Integer</CODE>. The page ordering can be changed but * no page repetitions are allowed. Note that it may be very slow in partial mode. * @param pagesToKeep the pages to keep in the document */ public void selectPages(List pagesToKeep) { pageRefs.selectPages(pagesToKeep); removeUnusedObjects(); }
/** * Selects the pages to keep in the document. The pages are described as a * <CODE>List</CODE> of <CODE>Integer</CODE>. The page ordering can be changed but * no page repetitions are allowed. Note that it may be very slow in partial mode. * @param pagesToKeep the pages to keep in the document */ public void selectPages(List pagesToKeep) { pageRefs.selectPages(pagesToKeep); removeUnusedObjects(); }
/** * Selects the pages to keep in the document. The pages are described as a * <CODE>List</CODE> of <CODE>Integer</CODE>. The page ordering can be changed * but no page repetitions are allowed. Note that it may be very slow in * partial mode. * * @param pagesToKeep * the pages to keep in the document */ public void selectPages(List pagesToKeep) { pageRefs.selectPages(pagesToKeep); removeUnusedObjects(); }
PdfReader reader = new PdfReader(baos.toByteArray()); int startToc = 13; int n = reader.getNumberOfPages(); reader.selectPages(String.format("1,%s-%s, 2-%s, %s", startToc, n-1, startToc - 1, n)); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); stamper.close();
/** * Removes given pages from a document. * @param reader document * @param pagesToRemove pages to remove; 1-based */ public static void removePages(PdfReader reader, int... pagesToRemove) { int pagesTotal = reader.getNumberOfPages(); List<Integer> allPages = new ArrayList<>(pagesTotal); for (int i = 1; i <= pagesTotal; i++) { allPages.add(i); } for (int page : pagesToRemove) { allPages.remove(new Integer(page)); } reader.selectPages(allPages); }
PdfReader reader = new PdfReader(SOURCE); int pageToReplace = NROFPAGETOREPLACE; List<Integer> pagesToKeep = new ArrayList<Integer>(); for (int i = 1; i <= reader.getNumberOfPages(); i++) if (i != pageToReplace) pagesToKeep.add(i); reader.selectPages(pagesToKeep); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(TARGET)); stamper.insertPage(pageToReplace, reader.getPageSizeWithRotation(1)); Image image = Image.getInstance(IMAGESOURCE); stamper.getOverContent(pageToReplace).addImage(image, image.getWidth(), 0, 0, image.getHeight(), 30, 30); stamper.close();
/** * Selects the pages to keep in the document. The pages are described as * ranges. The page ordering can be changed but no page repetitions are * allowed. Note that it may be very slow in partial mode. * * @param ranges * the comma separated ranges as described in {@link SequenceList} */ public void selectPages(String ranges) { selectPages(SequenceList.expand(ranges, getNumberOfPages())); }
/** * Selects the pages to keep in the document. The pages are described as * ranges. The page ordering can be changed but * no page repetitions are allowed. Note that it may be very slow in partial mode. * @param ranges the comma separated ranges as described in {@link SequenceList} */ public void selectPages(String ranges) { selectPages(SequenceList.expand(ranges, getNumberOfPages())); }
/** * Selects the pages to keep in the document. The pages are described as * ranges. The page ordering can be changed but * no page repetitions are allowed. Note that it may be very slow in partial mode. * @param ranges the comma separated ranges as described in {@link SequenceList} */ public void selectPages(String ranges) { selectPages(SequenceList.expand(ranges, getNumberOfPages())); }
public static void main(String[] args) throws DocumentException, IOException { PdfReader reader = new PdfReader("resources/Abdomen.pdf"); int n = reader.getNumberOfPages(); reader.close(); String path; PdfStamper stamper; for (int i = 1; i <= n; i++) { reader = new PdfReader("resources/abdomen.pdf"); reader.selectPages(String.valueOf(i)); path = String.format("results/abdomen/p-%s.pdf", i); stamper = new PdfStamper(reader,new FileOutputStream(path)); stamper.close(); reader.close(); } }
void addDocument(PdfReader reader, List pagesToKeep) throws DocumentException, IOException { if (!readers2intrefs.containsKey(reader) && reader.isTampered()) throw new DocumentException("The document was reused."); reader = new PdfReader(reader); reader.selectPages(pagesToKeep); if (reader.getNumberOfPages() == 0) return; reader.setTampered(false); addDocument(reader); }
void addDocument(PdfReader reader, List pagesToKeep) throws DocumentException, IOException { if (!readers2intrefs.containsKey(reader) && reader.isTampered()) throw new DocumentException(MessageLocalization.getComposedMessage("the.document.was.reused")); reader = new PdfReader(reader); reader.selectPages(pagesToKeep); if (reader.getNumberOfPages() == 0) return; reader.setTampered(false); addDocument(reader); }
void addDocument(PdfReader reader, List pagesToKeep) throws DocumentException, IOException { if (!readers2intrefs.containsKey(reader) && reader.isTampered()) throw new DocumentException(MessageLocalization.getComposedMessage("the.document.was.reused")); reader = new PdfReader(reader); reader.selectPages(pagesToKeep); if (reader.getNumberOfPages() == 0) return; reader.setTampered(false); addDocument(reader); }
public void execute(MergeParameters parameters) throws TaskException { int currentStep = 0; File tmpFile = createTemporaryPdfBuffer(); LOG.debug("Created output temporary buffer {} ", tmpFile); for (PdfMergeInput input : parameters.getInputList()) { LOG.debug("Opening input {} ", input.getSource()); reader = input.getSource().open(sourceOpener); createCopierIfNeeded(parameters, tmpFile); outlineMerger.updateOutline(reader, input, copier.getNumberOfCopiedPages()); if (!input.isAllPages()) { String selection = join(input.getPageSelection(), ','); LOG.debug("Setting pages selection"); reader.selectPages(selection); LOG.trace("Pages selection set to {}", selection); } copier.addAllPages(reader); if (parameters.isBlankPageIfOdd()) { LOG.debug("Adding blank page if required"); copier.addBlankPageIfOdd(reader); } copier.freeReader(reader); notifyEvent(getNotifiableTaskMetadata()).stepsCompleted(++currentStep).outOf(totalSteps); } copier.setOutline(outlineMerger.getOutline()); closeResources(); outputWriter.setOutput(file(tmpFile).name(parameters.getOutputName())); parameters.getOutput().accept(outputWriter); LOG.debug("Input documents merged correctly and written to {}", parameters.getOutput()); }