How to add text and image watermark to PDF files in Java applications

Watermark is generally used in commercial field to show the documents are authorized that others can¡¯t copy to use them directly, and sometimes, the watermark will show the basic status of the documents, such as draft status or the final version of the documents. This article will demonstrate how to add image watermark and text watermark into the PDF files using free Spire.PDF on Java applications.

Java add Text Watermark to PDF. We need to draw the text string that we want to use for the watermark. And then we need to set the text font, color, position and text format to fit the PDF page suitably. We can do it easily by calling the method: drawString(string s, PdfFont font, PdfBrushes brush, float x, float y, PdfStringFormat format). Please see the code snippet below:

<span>import</span> <span>com.spire.pdf.*</span><span>;</span>
<span>import</span> <span>com.spire.pdf.graphics.*</span><span>;</span>
<span>import</span> <span>java.awt.*</span><span>;</span>
<span>import</span> <span>java.awt.geom.Dimension2D</span><span>;</span>
<span>import</span> <span>java.awt.geom.Point2D</span><span>;</span>
<span>import</span> <span>java.awt.geom.Rectangle2D</span><span>;</span>
<span>import</span> <span>java.io.*</span><span>;</span>
<span>public</span> <span>class</span> <span>textWatermark</span> <span>{</span>
<span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>throws</span> <span>IOException</span> <span>{</span>
<span>//load the sample document</span>
<span>PdfDocument</span> <span>doc</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>
<span>doc</span><span>.</span><span>loadFromFile</span><span>(</span><span>"Sample.pdf"</span><span>);</span>
<span>//get the first page</span>
<span>PdfPageBase</span> <span>page</span> <span>=</span> <span>doc</span><span>.</span><span>getPages</span><span>().</span><span>get</span><span>(</span><span>0</span><span>);</span>
<span>//insert text watermark</span>
<span>insertWatermark</span><span>(</span><span>page</span><span>,</span><span>"Draft version"</span><span>);</span>
<span>//save the file</span>
<span>doc</span><span>.</span><span>saveToFile</span><span>(</span><span>"TextWatermark.pdf"</span><span>);</span>
<span>}</span>
<span>static</span> <span>void</span> <span>insertWatermark</span><span>(</span><span>PdfPageBase</span> <span>page</span><span>,</span> <span>String</span> <span>watermark</span><span>)</span> <span>{</span>
<span>Dimension2D</span> <span>dimension2D</span> <span>=</span> <span>new</span> <span>Dimension</span><span>();</span>
<span>dimension2D</span><span>.</span><span>setSize</span><span>(</span><span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>getClientSize</span><span>().</span><span>getWidth</span><span>()</span> <span>/</span> <span>2</span><span>,</span> <span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>getClientSize</span><span>().</span><span>getHeight</span><span>()</span> <span>/</span> <span>3</span><span>);</span>
<span>PdfTilingBrush</span> <span>brush</span> <span>=</span> <span>new</span> <span>PdfTilingBrush</span><span>(</span><span>dimension2D</span><span>);</span>
<span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>setTransparency</span><span>(</span><span>0.3</span><span>F</span><span>);</span>
<span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>save</span><span>();</span>
<span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>translateTransform</span><span>((</span><span>float</span><span>)</span> <span>brush</span><span>.</span><span>getSize</span><span>().</span><span>getWidth</span><span>()</span> <span>/</span> <span>2</span><span>,</span> <span>(</span><span>float</span><span>)</span> <span>brush</span><span>.</span><span>getSize</span><span>().</span><span>getHeight</span><span>()</span> <span>/</span> <span>2</span><span>);</span>
<span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>rotateTransform</span><span>(-</span><span>45</span><span>);</span>
<span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>drawString</span><span>(</span><span>watermark</span><span>,</span> <span>new</span> <span>PdfFont</span><span>(</span><span>PdfFontFamily</span><span>.</span><span>Helvetica</span><span>,</span> <span>24</span><span>),</span> <span>PdfBrushes</span><span>.</span><span>getViolet</span><span>(),</span> <span>0</span><span>,</span> <span>0</span><span>,</span> <span>new</span> <span>PdfStringFormat</span><span>(</span><span>PdfTextAlignment</span><span>.</span><span>Center</span><span>));</span>
<span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>restore</span><span>();</span>
<span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>setTransparency</span><span>(</span><span>1</span><span>);</span>
<span>Rectangle2D</span> <span>loRect</span> <span>=</span> <span>new</span> <span>Rectangle2D</span><span>.</span><span>Float</span><span>();</span>
<span>loRect</span><span>.</span><span>setFrame</span><span>(</span><span>new</span> <span>Point2D</span><span>.</span><span>Float</span><span>(</span><span>0</span><span>,</span> <span>0</span><span>),</span> <span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>getClientSize</span><span>());</span>
<span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>drawRectangle</span><span>(</span><span>brush</span><span>,</span> <span>loRect</span><span>);</span>
<span>}</span>
<span>}</span>
<span>import</span> <span>com.spire.pdf.*</span><span>;</span>
<span>import</span> <span>com.spire.pdf.graphics.*</span><span>;</span>
<span>import</span> <span>java.awt.*</span><span>;</span>
<span>import</span> <span>java.awt.geom.Dimension2D</span><span>;</span>
<span>import</span> <span>java.awt.geom.Point2D</span><span>;</span>
<span>import</span> <span>java.awt.geom.Rectangle2D</span><span>;</span>
<span>import</span> <span>java.io.*</span><span>;</span>

<span>public</span> <span>class</span> <span>textWatermark</span> <span>{</span>
    <span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>throws</span> <span>IOException</span> <span>{</span>

        <span>//load the sample document</span>
        <span>PdfDocument</span> <span>doc</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>
        <span>doc</span><span>.</span><span>loadFromFile</span><span>(</span><span>"Sample.pdf"</span><span>);</span>

        <span>//get the first page</span>
        <span>PdfPageBase</span> <span>page</span> <span>=</span>  <span>doc</span><span>.</span><span>getPages</span><span>().</span><span>get</span><span>(</span><span>0</span><span>);</span>

        <span>//insert text watermark</span>
        <span>insertWatermark</span><span>(</span><span>page</span><span>,</span><span>"Draft version"</span><span>);</span>

        <span>//save the file</span>
        <span>doc</span><span>.</span><span>saveToFile</span><span>(</span><span>"TextWatermark.pdf"</span><span>);</span>
    <span>}</span>

    <span>static</span> <span>void</span> <span>insertWatermark</span><span>(</span><span>PdfPageBase</span> <span>page</span><span>,</span> <span>String</span> <span>watermark</span><span>)</span> <span>{</span>
        <span>Dimension2D</span> <span>dimension2D</span> <span>=</span> <span>new</span> <span>Dimension</span><span>();</span>
        <span>dimension2D</span><span>.</span><span>setSize</span><span>(</span><span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>getClientSize</span><span>().</span><span>getWidth</span><span>()</span> <span>/</span> <span>2</span><span>,</span> <span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>getClientSize</span><span>().</span><span>getHeight</span><span>()</span> <span>/</span> <span>3</span><span>);</span>
        <span>PdfTilingBrush</span> <span>brush</span> <span>=</span> <span>new</span> <span>PdfTilingBrush</span><span>(</span><span>dimension2D</span><span>);</span>
        <span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>setTransparency</span><span>(</span><span>0.3</span><span>F</span><span>);</span>
        <span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>save</span><span>();</span>
        <span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>translateTransform</span><span>((</span><span>float</span><span>)</span> <span>brush</span><span>.</span><span>getSize</span><span>().</span><span>getWidth</span><span>()</span> <span>/</span> <span>2</span><span>,</span> <span>(</span><span>float</span><span>)</span> <span>brush</span><span>.</span><span>getSize</span><span>().</span><span>getHeight</span><span>()</span> <span>/</span> <span>2</span><span>);</span>
        <span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>rotateTransform</span><span>(-</span><span>45</span><span>);</span>
        <span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>drawString</span><span>(</span><span>watermark</span><span>,</span> <span>new</span> <span>PdfFont</span><span>(</span><span>PdfFontFamily</span><span>.</span><span>Helvetica</span><span>,</span> <span>24</span><span>),</span> <span>PdfBrushes</span><span>.</span><span>getViolet</span><span>(),</span> <span>0</span><span>,</span> <span>0</span><span>,</span> <span>new</span> <span>PdfStringFormat</span><span>(</span><span>PdfTextAlignment</span><span>.</span><span>Center</span><span>));</span>
        <span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>restore</span><span>();</span>
        <span>brush</span><span>.</span><span>getGraphics</span><span>().</span><span>setTransparency</span><span>(</span><span>1</span><span>);</span>
        <span>Rectangle2D</span> <span>loRect</span> <span>=</span> <span>new</span> <span>Rectangle2D</span><span>.</span><span>Float</span><span>();</span>
        <span>loRect</span><span>.</span><span>setFrame</span><span>(</span><span>new</span> <span>Point2D</span><span>.</span><span>Float</span><span>(</span><span>0</span><span>,</span> <span>0</span><span>),</span> <span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>getClientSize</span><span>());</span>
        <span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>drawRectangle</span><span>(</span><span>brush</span><span>,</span> <span>loRect</span><span>);</span>
    <span>}</span>
<span>}</span>
import com.spire.pdf.*; import com.spire.pdf.graphics.*; import java.awt.*; import java.awt.geom.Dimension2D; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.io.*; public class textWatermark { public static void main(String[] args) throws IOException { //load the sample document PdfDocument doc = new PdfDocument(); doc.loadFromFile("Sample.pdf"); //get the first page PdfPageBase page = doc.getPages().get(0); //insert text watermark insertWatermark(page,"Draft version"); //save the file doc.saveToFile("TextWatermark.pdf"); } static void insertWatermark(PdfPageBase page, String watermark) { Dimension2D dimension2D = new Dimension(); dimension2D.setSize(page.getCanvas().getClientSize().getWidth() / 2, page.getCanvas().getClientSize().getHeight() / 3); PdfTilingBrush brush = new PdfTilingBrush(dimension2D); brush.getGraphics().setTransparency(0.3F); brush.getGraphics().save(); brush.getGraphics().translateTransform((float) brush.getSize().getWidth() / 2, (float) brush.getSize().getHeight() / 2); brush.getGraphics().rotateTransform(-45); brush.getGraphics().drawString(watermark, new PdfFont(PdfFontFamily.Helvetica, 24), PdfBrushes.getViolet(), 0, 0, new PdfStringFormat(PdfTextAlignment.Center)); brush.getGraphics().restore(); brush.getGraphics().setTransparency(1); Rectangle2D loRect = new Rectangle2D.Float(); loRect.setFrame(new Point2D.Float(0, 0), page.getCanvas().getClientSize()); page.getCanvas().drawRectangle(brush, loRect); } }

The effective screenshot of the text watermark:

Java add Image Watermark to PDF. It is quite easy that we only need to load the image and set it as the background for PDF by calling page.setBackgroundImage(string filename) method to set the image as watermark for PDF.

<span>import</span> <span>com.spire.pdf.*</span><span>;</span>
<span>import</span> <span>com.spire.pdf.PdfDocument</span><span>;</span>
<span>import</span> <span>com.spire.pdf.PdfPageBase</span><span>;</span>
<span>public</span> <span>class</span> <span>imageWatermark</span> <span>{</span>
<span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>{</span>
<span>//create a pdf document and load file from disk</span>
<span>PdfDocument</span> <span>doc</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>
<span>doc</span><span>.</span><span>loadFromFile</span><span>(</span><span>"Sample.pdf"</span><span>);</span>
<span>//get the first page</span>
<span>PdfPageBase</span> <span>page</span> <span>=</span> <span>doc</span><span>.</span><span>getPages</span><span>().</span><span>get</span><span>(</span><span>0</span><span>);</span>
<span>//Set background image</span>
<span>page</span><span>.</span><span>setBackgroundImage</span><span>(</span><span>"E-logo.png"</span><span>);</span>
<span>//save pdf file</span>
<span>doc</span><span>.</span><span>saveToFile</span><span>(</span><span>"Imagewatermark.pdf"</span><span>,</span> <span>FileFormat</span><span>.</span><span>PDF</span><span>);</span>
<span>}</span>
<span>}</span>
<span>import</span> <span>com.spire.pdf.*</span><span>;</span>
<span>import</span> <span>com.spire.pdf.PdfDocument</span><span>;</span>
<span>import</span> <span>com.spire.pdf.PdfPageBase</span><span>;</span>

<span>public</span> <span>class</span> <span>imageWatermark</span> <span>{</span>
           <span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>{</span>
                <span>//create a pdf document and load file from disk</span>
                <span>PdfDocument</span> <span>doc</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>
                <span>doc</span><span>.</span><span>loadFromFile</span><span>(</span><span>"Sample.pdf"</span><span>);</span>

                <span>//get the first page</span>
                <span>PdfPageBase</span> <span>page</span> <span>=</span> <span>doc</span><span>.</span><span>getPages</span><span>().</span><span>get</span><span>(</span><span>0</span><span>);</span>

                <span>//Set background image</span>
                <span>page</span><span>.</span><span>setBackgroundImage</span><span>(</span><span>"E-logo.png"</span><span>);</span>

                <span>//save pdf file</span>
                <span>doc</span><span>.</span><span>saveToFile</span><span>(</span><span>"Imagewatermark.pdf"</span><span>,</span> <span>FileFormat</span><span>.</span><span>PDF</span><span>);</span>
            <span>}</span>
        <span>}</span>
import com.spire.pdf.*; import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; public class imageWatermark { public static void main(String[] args) { //create a pdf document and load file from disk PdfDocument doc = new PdfDocument(); doc.loadFromFile("Sample.pdf"); //get the first page PdfPageBase page = doc.getPages().get(0); //Set background image page.setBackgroundImage("E-logo.png"); //save pdf file doc.saveToFile("Imagewatermark.pdf", FileFormat.PDF); } }

Image background as watermark:

From the screenshot, we could find that the result is not pretty enough. Spire.PDF for Java offers a method page.drawImage() to add an image to PDF and adjust the size and position to make the image beautiful.

<span>import</span> <span>com.spire.pdf.*</span><span>;</span>
<span>import</span> <span>com.spire.pdf.PdfDocument</span><span>;</span>
<span>import</span> <span>com.spire.pdf.PdfPageBase</span><span>;</span>
<span>import</span> <span>com.spire.pdf.graphics.PdfBlendMode</span><span>;</span>
<span>import</span> <span>com.spire.pdf.graphics.PdfImage</span><span>;</span>
<span>import</span> <span>javax.imageio.ImageIO</span><span>;</span>
<span>import</span> <span>java.awt.*</span><span>;</span>
<span>import</span> <span>java.awt.geom.Point2D</span><span>;</span>
<span>import</span> <span>java.awt.image.BufferedImage</span><span>;</span>
<span>import</span> <span>java.io.File</span><span>;</span>
<span>import</span> <span>java.io.IOException</span><span>;</span>
<span>public</span> <span>class</span> <span>imageWatermark</span> <span>{</span>
<span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>throws</span> <span>IOException</span> <span>{</span>
<span>//create a pdf document and load file from disk</span>
<span>PdfDocument</span> <span>doc</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>
<span>doc</span><span>.</span><span>loadFromFile</span><span>(</span><span>"Sample.pdf"</span><span>);</span>
<span>//load an image</span>
<span>BufferedImage</span> <span>image</span> <span>=</span> <span>ImageIO</span><span>.</span><span>read</span><span>(</span><span>new</span> <span>File</span><span>(</span><span>"E-logo.png"</span><span>));</span>
<span>//adjust image size</span>
<span>int</span> <span>width</span> <span>=</span> <span>image</span><span>.</span><span>getWidth</span><span>();</span>
<span>int</span> <span>height</span> <span>=</span> <span>image</span><span>.</span><span>getHeight</span><span>();</span>
<span>float</span> <span>scale</span> <span>=</span> <span>1</span><span>f</span><span>;</span>
<span>BufferedImage</span> <span>scaleImage</span> <span>=</span> <span>new</span> <span>BufferedImage</span><span>((</span><span>int</span><span>)(</span><span>width</span> <span>*</span> <span>scale</span><span>),</span> <span>(</span><span>int</span><span>)(</span><span>height</span> <span>*</span> <span>scale</span><span>),</span> <span>BufferedImage</span><span>.</span><span>TYPE_INT_ARGB</span> <span>);</span>
<span>Graphics2D</span> <span>g</span> <span>=</span> <span>scaleImage</span><span>.</span><span>createGraphics</span><span>();</span>
<span>g</span><span>.</span><span>drawImage</span><span>(</span><span>image</span><span>,</span> <span>0</span><span>,</span> <span>0</span><span>,</span> <span>(</span><span>int</span><span>)(</span><span>width</span> <span>*</span> <span>scale</span><span>),</span> <span>(</span><span>int</span><span>)(</span><span>height</span> <span>*</span> <span>scale</span><span>),</span> <span>null</span><span>);</span>
<span>g</span><span>.</span><span>dispose</span><span>();</span>
<span>//insert an image into the first PDF page at specific position</span>
<span>PdfImage</span> <span>pdfImage</span> <span>=</span> <span>PdfImage</span><span>.</span><span>fromImage</span><span>(</span><span>scaleImage</span><span>);</span>
<span>PdfPageBase</span> <span>page</span> <span>=</span> <span>doc</span><span>.</span><span>getPages</span><span>().</span><span>get</span><span>(</span><span>0</span><span>);</span>
<span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>save</span><span>();</span>
<span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>setTransparency</span><span>(</span><span>0.5f</span><span>,</span> <span>0.5f</span><span>,</span> <span>PdfBlendMode</span><span>.</span><span>Multiply</span><span>);</span>
<span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>drawImage</span><span>(</span><span>pdfImage</span><span>,</span> <span>new</span> <span>Point2D</span><span>.</span><span>Float</span><span>(</span><span>160</span><span>,</span> <span>260</span><span>));</span>
<span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>restore</span><span>();</span>
<span>//save the Pdf document</span>
<span>doc</span><span>.</span><span>saveToFile</span><span>(</span><span>"ImageWatermark2.pdf"</span><span>,</span> <span>FileFormat</span><span>.</span><span>PDF</span><span>);</span>
<span>}</span>
<span>}</span>
<span>import</span> <span>com.spire.pdf.*</span><span>;</span>
<span>import</span> <span>com.spire.pdf.PdfDocument</span><span>;</span>
<span>import</span> <span>com.spire.pdf.PdfPageBase</span><span>;</span>
<span>import</span> <span>com.spire.pdf.graphics.PdfBlendMode</span><span>;</span>
<span>import</span> <span>com.spire.pdf.graphics.PdfImage</span><span>;</span>
<span>import</span> <span>javax.imageio.ImageIO</span><span>;</span>
<span>import</span> <span>java.awt.*</span><span>;</span>
<span>import</span> <span>java.awt.geom.Point2D</span><span>;</span>
<span>import</span> <span>java.awt.image.BufferedImage</span><span>;</span>
<span>import</span> <span>java.io.File</span><span>;</span>
<span>import</span> <span>java.io.IOException</span><span>;</span>

<span>public</span> <span>class</span> <span>imageWatermark</span> <span>{</span>
           <span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>throws</span> <span>IOException</span> <span>{</span>
                <span>//create a pdf document and load file from disk</span>
                <span>PdfDocument</span> <span>doc</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>
                <span>doc</span><span>.</span><span>loadFromFile</span><span>(</span><span>"Sample.pdf"</span><span>);</span>

               <span>//load an image</span>
               <span>BufferedImage</span> <span>image</span> <span>=</span> <span>ImageIO</span><span>.</span><span>read</span><span>(</span><span>new</span> <span>File</span><span>(</span><span>"E-logo.png"</span><span>));</span>

               <span>//adjust image size</span>
               <span>int</span> <span>width</span> <span>=</span> <span>image</span><span>.</span><span>getWidth</span><span>();</span>
               <span>int</span> <span>height</span> <span>=</span> <span>image</span><span>.</span><span>getHeight</span><span>();</span>
               <span>float</span> <span>scale</span> <span>=</span> <span>1</span><span>f</span><span>;</span>
               <span>BufferedImage</span> <span>scaleImage</span> <span>=</span> <span>new</span> <span>BufferedImage</span><span>((</span><span>int</span><span>)(</span><span>width</span> <span>*</span> <span>scale</span><span>),</span> <span>(</span><span>int</span><span>)(</span><span>height</span> <span>*</span> <span>scale</span><span>),</span> <span>BufferedImage</span><span>.</span><span>TYPE_INT_ARGB</span> <span>);</span>
               <span>Graphics2D</span> <span>g</span> <span>=</span> <span>scaleImage</span><span>.</span><span>createGraphics</span><span>();</span>
               <span>g</span><span>.</span><span>drawImage</span><span>(</span><span>image</span><span>,</span> <span>0</span><span>,</span> <span>0</span><span>,</span> <span>(</span><span>int</span><span>)(</span><span>width</span> <span>*</span> <span>scale</span><span>),</span> <span>(</span><span>int</span><span>)(</span><span>height</span> <span>*</span> <span>scale</span><span>),</span> <span>null</span><span>);</span>
               <span>g</span><span>.</span><span>dispose</span><span>();</span>

               <span>//insert an image into the first PDF page at specific position</span>
               <span>PdfImage</span> <span>pdfImage</span> <span>=</span> <span>PdfImage</span><span>.</span><span>fromImage</span><span>(</span><span>scaleImage</span><span>);</span>
               <span>PdfPageBase</span> <span>page</span> <span>=</span> <span>doc</span><span>.</span><span>getPages</span><span>().</span><span>get</span><span>(</span><span>0</span><span>);</span>
               <span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>save</span><span>();</span>
               <span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>setTransparency</span><span>(</span><span>0.5f</span><span>,</span> <span>0.5f</span><span>,</span> <span>PdfBlendMode</span><span>.</span><span>Multiply</span><span>);</span>
               <span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>drawImage</span><span>(</span><span>pdfImage</span><span>,</span> <span>new</span> <span>Point2D</span><span>.</span><span>Float</span><span>(</span><span>160</span><span>,</span> <span>260</span><span>));</span>
               <span>page</span><span>.</span><span>getCanvas</span><span>().</span><span>restore</span><span>();</span>

               <span>//save the Pdf document</span>
               <span>doc</span><span>.</span><span>saveToFile</span><span>(</span><span>"ImageWatermark2.pdf"</span><span>,</span> <span>FileFormat</span><span>.</span><span>PDF</span><span>);</span>
            <span>}</span>
        <span>}</span>
import com.spire.pdf.*; import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.graphics.PdfBlendMode; import com.spire.pdf.graphics.PdfImage; import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class imageWatermark { public static void main(String[] args) throws IOException { //create a pdf document and load file from disk PdfDocument doc = new PdfDocument(); doc.loadFromFile("Sample.pdf"); //load an image BufferedImage image = ImageIO.read(new File("E-logo.png")); //adjust image size int width = image.getWidth(); int height = image.getHeight(); float scale = 1f; BufferedImage scaleImage = new BufferedImage((int)(width * scale), (int)(height * scale), BufferedImage.TYPE_INT_ARGB ); Graphics2D g = scaleImage.createGraphics(); g.drawImage(image, 0, 0, (int)(width * scale), (int)(height * scale), null); g.dispose(); //insert an image into the first PDF page at specific position PdfImage pdfImage = PdfImage.fromImage(scaleImage); PdfPageBase page = doc.getPages().get(0); page.getCanvas().save(); page.getCanvas().setTransparency(0.5f, 0.5f, PdfBlendMode.Multiply); page.getCanvas().drawImage(pdfImage, new Point2D.Float(160, 260)); page.getCanvas().restore(); //save the Pdf document doc.saveToFile("ImageWatermark2.pdf", FileFormat.PDF); } }

Effective screenshot:

Conclusion:
Free Spire.PDF is a professional PDF API that enables developers to create, read, write, modify, convert and print PDF on Java applications. You could use it to operate PDF files for many rich features.

原文链接:How to add text and image watermark to PDF files in Java applications

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
Do not give in to fear
别在恐惧面前低下你的头
评论 抢沙发

请登录后发表评论

    暂无评论内容