在日常辦公中,PDF文件的使用越來越普遍胖翰。為了防止自己撰寫的文件內(nèi)容被抄襲或者被他人盜用接剩,給PDF文件添加上水印是一個不錯的選擇。根據(jù)添加的水印內(nèi)容不同一般可分為文本水印和圖片水印萨咳。本文將通過使用Java程序來詳細介紹如何在PDF文件中添加文本水印和圖片水印懊缺。
使用工具:Free Spire.PDF for Java(免費版)
Jar文件獲取及導入:
方法1:通過官方網(wǎng)站下載獲取jar包。解壓后將lib文件夾下的Spire.Pdf.jar文件導入Java程序培他。(如下圖)
方法2:通過maven倉庫安裝導入鹃两。具體安裝詳解參見此網(wǎng)頁。
【示例1】添加文本水印
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.*;
public class TextWatermark {
public static void main(String[] args) {
//創(chuàng)建PdfDocument對象
??????? PdfDocument pdf = new PdfDocument();
//加載示例文檔
??????? pdf.loadFromFile("D:\\Desktop\\Sample.pdf");
//獲取第一頁
??????? PdfPageBase page = pdf.getPages().get(0);
//調(diào)用insertWatermark方法插入文本水印
??????? insertWatermark(page, "Confidential");
//保存文檔
??????? pdf.saveToFile("output/TextWaterMark.pdf");
??? }
static voidinsertWatermark(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);
??? }
}
文本水印添加效果:
【示例2】添加圖片水印
import com.spire.pdf.*;
import java.awt.geom.Rectangle2D;
public class ImageWatermark {
public static void main(String[] args) {
//加載PDF文檔
??????? PdfDocument doc = new PdfDocument();
??????? doc.loadFromFile("D:\\Desktop\\Sample.pdf");
//獲取第一頁
??????? PdfPageBase page = doc.getPages().get(0);
//設置背景圖片
??????? page.setBackgroundImage("D:\\Desktop\\Image.jpg");
//設置背景區(qū)域
??????? Rectangle2D.Float rect = new Rectangle2D.Float();
??????? rect.setRect(280, 300, 150, 150);
? ? ?? page.setBackgroundRegion(rect);
//保存文檔
??????? doc.saveToFile("output/ImageWaterMark.pdf");
??????? doc.close();
??? }
}
圖片水印添加效果:
(本文完)