A PDF image watermark is a semi-transparent picture integrated into a PDF page as a fixed element. It is often used to protect the copyright and other rights of the document owner since it can't be removed easily. What's more, for famous PDF publishers, image watermarks are also used to increase the credibility of their documents. With an image watermark of their logo, the readers of documents can identify them at a glance. This article will show how to insert image watermarks into PDF documents using Spire.PDF for Java with simple code.
Install Spire.PDF for Java
First of all, you're required to add the Spire.Pdf.jar file as a dependency in your Java program. The JAR file can be downloaded from this link. If you use Maven, you can easily import the JAR file in your application by adding the following code to your project's pom.xml file.
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf</artifactId> <version>10.10.0</version> </dependency> </dependencies>
Insert a Single Picture Watermark into PDF
A single image watermark is usually placed at the center of a PDF page. The detailed steps for inserting a single image watermark are as follows.
- Create a PdfDocument class instance.
- Load a PDF document using PdfDocument.loadFromFile() method.
- Load a picture using PdfImage.fromFile() method.
- Get the width and height of the picture using PdfImage.getWidth() and PdfImage.getHeight() methods.
- Loop through the pages in the PDF document to insert watermarks
- Get a page using PdfDocument.getPages().get() method.
- Get the width and height of the page using PdfPageBase.getActualSize().getWidth() and PdfPageBase.getActualSize().getHeight() methods.
- Set the transparency of the watermark picture using PdfPageBase.getCanvas().setTransparency() method.
- Draw the watermark picture at the center of the page using PdfPageBase.getCanvas().drawImage() method.
- Save the document using PdfDocument.saveToFile() method.
- Java
import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.graphics.PdfBrush; import com.spire.pdf.graphics.PdfImage; import java.awt.*; import java.awt.image.BufferedImage; public class insertSingleImageWatermark { public static void main(String[] args) { //Create a PdfDocument class instance PdfDocument pdf = new PdfDocument(); //Load a PDF file pdf.loadFromFile("Goodbye Pixel.pdf"); //Load a picture PdfImage image = PdfImage.fromFile("Logo.png"); //Get the width and height of the image int imageWidth = image.getWidth(); int imageHeight = image.getHeight(); //Loop through the pages to insert watermark for (int i = 0; i < pdf.getPages().getCount(); i++) { //Get a page PdfPageBase page = pdf.getPages().get(i); //Get the width and height of the page float pageWidth = (float) (page.getActualSize().getWidth()); float pageHeight = (float) (page.getActualSize().getHeight()); //Set the transparency of the watermark page.getCanvas().setTransparency(0.3f); //Draw the watermark picture at the middle of the page page.getCanvas().drawImage(image, pageWidth/2 - imageWidth/2, pageHeight/2 - imageHeight/2, imageWidth, imageHeight); } //Save the file pdf.saveToFile("SingleImageWatermark.pdf"); } }
Insert Tiled Picture Watermarks into PDF
Tiled image watermarks contain a picture that is displayed multiple times on one PDF page. When inserting a tiled image watermark, we can set the number of repetitions of its picture. The detailed steps for inserting a tiled image watermark are as follow.
- Create a PdfDocument class instance.
- Load a PDF document using PdfDocument.loadFromFile() method.
- Load a picture using PdfImage.fromFile() method.
- Loop through the pages to insert watermarks.
- Get a specific page using PdfDocument.getPages().get() method.
- Use the custom method insertImageWatermark() to insert a tiled image watermark.
- Save the document using PdfDocument.saveToFile() method.
- Java
import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; import com.spire.pdf.graphics.PdfBrush; import com.spire.pdf.graphics.PdfImage; import com.spire.pdf.graphics.PdfTilingBrush; import java.awt.*; public class insertTiledImageWatermark { public static void main(String[] args) { //Create a PdfDocument class instance PdfDocument pdf = new PdfDocument(); //Load a PDF file pdf.loadFromFile("Goodbye Pixel.pdf"); //Load a picture PdfImage image = PdfImage.fromFile("Logo.png"); //Loop through the pages in the PDF document to insert watermark for (int i = 0; i < pdf.getPages().getCount(); i++ ) { //Get a Page PdfPageBase page = pdf.getPages().get(i); //Use the custom method to insert a tiled image watermark insertImageWatermark(page, image, 3, 3); } //Save the file pdf.saveToFile("TiledImageWatermark.pdf"); } static void insertImageWatermark(PdfPageBase page, PdfImage image, int row, int column) { //Create a tile brush PdfTilingBrush brush = new PdfTilingBrush(new Dimension((int) (page.getActualSize().getWidth()/column), (int) (page.getActualSize().getHeight()/row))); brush.getGraphics().setTransparency(0.3f); brush.getGraphics().save(); brush.getGraphics().translateTransform(brush.getSize().getWidth()/2 - image.getWidth()/2, brush.getSize().getHeight()/2 - image.getHeight()/2); //Draw the watermark image at the center of the page brush.getGraphics().drawImage(image, 0, 0); brush.getGraphics().restore(); //Use the tile brush to draw the watermark picture page.getCanvas().drawRectangle(brush, new Rectangle(new Point(0, 0), new Dimension((int) (page.getActualSize().getWidth()), (int) (page.getActualSize().getHeight())))); } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.