• Java 在PDF中添加水印


    在日常工作和学习中,PDF的普及给人们带来了极大的便利,但同时也出现了很多问题。 PDF文件容易复制和传播,版权难以保护。 这时我们可以在PDF文档中添加水印。水印是一种数字保护的手段,在文档中添加水印既能证明本人的版权,还能对版权的保护做出贡献。 本文将分为两部分来演示如何在Java应用程序中为PDF文档添加水印。

    • 添加文本水印
    • 添加图像水印

    程序环境:

    在程序中导入jar,如下两种方法:

    方法1:

    手动引入。将 Free Spire.PDF for Java 下载到本地,解压,找到lib文件夹下的Spire.PDF.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:

     

    方法2:

    如果您想通过 Maven安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。

    复制代码
    
            
                com.e-iceblue
                https://repo.e-iceblue.cn/repository/maven-public/
            
        
    
        
            e-iceblue
            spire.pdf.free
            5.1.0
        
    
    复制代码

    添加文本水印

    • 创建一个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();
    
        }
    }
    复制代码

     

    效果图:

     

  • 相关阅读:
    腾讯云短信使用
    JavaScript基础语法
    京东云开发者|探寻软件架构的本质,到底什么是架构?
    windows php7.3安装rabbitmq扩展
    spring为什么要使用三级缓存来解决循环依赖
    基于蜻蜓优化算法的配电网重构求解(Python代码实现)【IEEE123节点算例】
    腾讯面试题:无网络环境,如何部署Docker镜像?
    【学习记录】实例分割的发展与区别
    IDEA中报错:因为在此系统上禁止运行脚本有关详细信息,请参阅...(图文解释 亲测已解决)
    华为机试 - 高矮个子排队
  • 原文地址:https://www.cnblogs.com/Carina-baby/p/16620517.html