在日常工作和学习中,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(); } }
效果图: