@Override public void freeReader(PdfReader reader) throws IOException { if (mergeFields) throw new UnsupportedOperationException(MessageLocalization.getComposedMessage("it.is.not.possible.to.free.reader.in.merge.fields.mode")); PdfArray array = reader.trailer.getAsArray(PdfName.ID); if (array != null) originalFileID = array.getAsString(0).getBytes(); indirectMap.remove(reader); // TODO: Removed - the user should be responsible for closing all PdfReaders. But, this could cause a lot of memory leaks in code out there that hasn't been properly closing things - maybe add a finalizer to PdfReader that calls PdfReader#close() ?? // if (currentPdfReaderInstance != null) { // if (currentPdfReaderInstance.getReader() == reader) { // try { // currentPdfReaderInstance.getReader().close(); // currentPdfReaderInstance.getReaderFile().close(); // } // catch (IOException ioe) { // // empty on purpose // } currentPdfReaderInstance = null; // } // } super.freeReader(reader); }
@Override public void freeReader(PdfReader reader) throws IOException { if (mergeFields) throw new UnsupportedOperationException(MessageLocalization.getComposedMessage("it.is.not.possible.to.free.reader.in.merge.fields.mode")); PdfArray array = reader.trailer.getAsArray(PdfName.ID); if (array != null) originalFileID = array.getAsString(0).getBytes(); indirectMap.remove(reader); // TODO: Removed - the user should be responsible for closing all PdfReaders. But, this could cause a lot of memory leaks in code out there that hasn't been properly closing things - maybe add a finalizer to PdfReader that calls PdfReader#close() ?? // if (currentPdfReaderInstance != null) { // if (currentPdfReaderInstance.getReader() == reader) { // try { // currentPdfReaderInstance.getReader().close(); // currentPdfReaderInstance.getReaderFile().close(); // } // catch (IOException ioe) { // // empty on purpose // } currentPdfReaderInstance = null; // } // } super.freeReader(reader); }
public static void stampBackground(PdfReader reader, PdfStamper stamper, String signature, boolean isStamp) throws IOException, DocumentException { int num_pages = reader.getNumberOfPages(); PdfReader r = new PdfReader(signature); PdfImportedPage page = stamper.getImportedPage(r, 1); for (int i = 1; i <= num_pages; i++) { PdfContentByte canvas = isStamp ? stamper.getOverContent(i) : stamper.getUnderContent(i); canvas.addTemplate(page, 0, 0); } stamper.getWriter().freeReader(r); } }