Java 在PDF中添加水印
- 2022 年 8 月 24 日
- 筆記
- JAVA, PDF, Spire.PDF for Java, 添加水印
在日常工作和學習中,PDF的普及給人們帶來了極大的便利,但同時也出現了很多問題。 PDF文件容易複製和傳播,版權難以保護。 在海量文件中也很難區分資訊,例如,你有沒有打開一個文件夾,裡面有這麼多同名的 PDF 文檔? 甚至你也分不清哪一個是最終的修改版本。 現在使用水印可以為您解決這些問題。 本文將分兩部分來演示如何在Java應用程式中為PDF添加水印。
- 添加文本水印
- 添加影像水印
程式環境:
在程式中導入jar,如下兩種方法:
方法1:
手動引入。將 Free Spire.PDF for Java 下載到本地,解壓,找到lib文件夾下的Spire.PDF.jar文件。在IDEA中打開如下介面,將本地路徑中的jar文件引入Java程式:
方法2:
如果您想通過 Maven安裝,則可以在 pom.xml 文件中添加以下程式碼導入 JAR 文件。
<repositories> <repository> <id>com.e-iceblue</id> <url>https://repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf.free</artifactId> <version>5.1.0</version> </dependency> </dependencies>
添加文本水印
- 創建一個PdfDocument 實例。
- 使用 PdfDocument.loadFromFile() 方法載入示例文檔。
- 使用 PdfPageBase.getPages() 方法獲取 PDF 的第一頁。
- 使用 insertWatermark() 方法插入水印。
- 使用 PdfDocument.saveToFile ()方法將文檔保存到文件中。
完整程式碼:
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) { //創建一個PdfDocument 實例 PdfDocument pdf = new PdfDocument(); //載入示例文檔 pdf.loadFromFile("西雙版納.pdf"); //獲取 PDF 的第一頁 PdfPageBase page = pdf.getPages().get(0); //用 insertWatermark() 方法插入水印 insertWatermark(page, "內部使用"); //保存文檔 pdf.saveToFile("文本水印.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); } }
效果圖:
添加影像水印
- 創建一個PDF 文檔並使用PdfDocument.loadFromFile() 方法從文件中載入示例文檔。
- 使用 PdfPageBase.getPages() 方法獲取第一頁。
- 使用 PdfPageBase.setBackgroundImage() 方法載入影像並將其設置為背景影像。
- 使用 Rectangle2D.Float.setRect() 方法設置背景區域。
- 使用 PdfDocument.saveToFile() 方法保存 PDF 文件。
完整程式碼:
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("西雙版納.pdf"); //獲取第一頁 PdfPageBase page = doc.getPages().get(0); //設置背景圖片 page.setBackgroundImage("logo.png"); //設置背景區域 Rectangle2D.Float rect = new Rectangle2D.Float(); rect.setRect(280, 300, 150, 150); page.setBackgroundRegion(rect); //保存文檔 doc.saveToFile("圖片水印.pdf"); doc.close(); } }
效果圖: