title: Watermarking with PDFBox
body: <p>I am trying to add a watermark to a PDF specifically with PDFBox. I've been able to get the image to appear on each page, but it loses the background transparency because it appears as though PDJpeg converts it to a JPG. Perhaps there's a way to do it using PDXObjectImage.</p>
  
  <p>Here is what I have written thus far:</p>
  
  <pre><code>public static void watermarkPDF(PDDocument pdf) throws IOException
  {
      // Load watermark
      BufferedImage buffered = ImageIO.read(new File("C:\\PDF_Test\\watermark.png"));
      PDJpeg watermark = new PDJpeg(pdf, buffered);
  
      // Loop through pages in PDF
      List pages = pdf.getDocumentCatalog().getAllPages();
      Iterator iter = pages.iterator();
      while(iter.hasNext())
      {
          PDPage page = (PDPage)iter.next();
  
          // Add watermark to individual page
          PDPageContentStream stream = new PDPageContentStream(pdf, page, true, false);
          stream.drawImage(watermark, 100, 0);
          stream.close();
      }
  
      try 
      {
          pdf.save("C:\\PDF_Test\\watermarktest.pdf");
      } 
      catch (COSVisitorException e) 
      {
          e.printStackTrace();
      }
  }
  </code></pre>