I create a pdf file and write the stream in response. Before writing in the stream, I want to add a background image as a watermark on all pages, so that the pdf document cleared of the answer is the last with a watermark.
Hi, this is my sample code. Any help will be ambiguous
private static String generatePDF(HttpServletRequest request, HttpServletResponse response, String fileName) throws Exception { Document document = null; PdfWriter writer = null; FileOutputStream fos = null; try { fos = new FileOutputStream(fileName); Document document = new Document(PageSize.A4); writer = PdfWriter.getInstance(document, fos); document.open(); return pdfFileName; } catch (Exception e) { FileUtil.deleteFile(fileName); throw e } finally { if (document != null) { document.close(); } fos.flush(); } }
Now I would like to add a background image using the code below and write the pdf output to the same stream
PdfReader sourcePDFReader = null; try { sourcePDFReader = new PdfReader(sourcePdfFileName); int noOfPages = sourcePDFReader.getNumberOfPages(); PdfStamper stamp = new PdfStamper(sourcePDFReader, new FileOutputStream(destPdfFileName)); int i = 0; Image templateImage = Image.getInstance(templateImageFile); templateImage.setAbsolutePosition(0, 0); PdfContentByte tempalteBytes; while (i < noOfPages) { i++; tempalteBytes = stamp.getUnderContent(i); tempalteBytes.addImage(templateImage); } stamp.close(); return destPdfFileName; } catch (Exception ex) { LOGGER.log(Level.INFO, "Error when applying tempalte image as watermark"); } finally { if (sourcePDFReader != null) { sourcePDFReader.close(); } }
source share