使用itextpdf为PDF添加文字水印

为PDF添加文字水印,百度搜了下,发现很多内容太老了,直接CV不能用,所以给出一段好用的。

  1. 项目中添加依赖。
    itextpdf经历过几次更新,需要使用以下最新的依赖。
        
            com.itextpdf
            itextpdf
            5.4.3
        
        
            com.itextpdf
            itext-asian
            5.2.0
        
  1. 核心代码
    因为需求中要让文字换行,尝试添加\n换行无果,所以添加了两段文字。
package com.example.springboot.pdfUtils;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Element;
import com.itextpdf.text.pdf.*;

import java.io.FileOutputStream;
import java.util.UUID;

public class Utils {
    /**
     * 添加文字水印,并附加UUID
     * @param srcFile 待加水印文件
     * @param destFile 加水印后输出文件
     * @param text 文本内容
     * @throws Exception
     */
    public static void addWaterMark(String srcFile, String destFile, String text) throws Exception {
        // 待加水印的文件
        PdfReader reader = new PdfReader(srcFile);
        // 加完水印的文件
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(destFile));

        int total = reader.getNumberOfPages() + 1;
        PdfContentByte content;

        // 设置透明度
        PdfGState gs = new PdfGState();
        gs.setFillOpacity(0.3f);
        // 设置字体
        BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
        // 循环对每页插入水印
        for (int i = 1; i < total; i++)
        {
            // 水印的起始
            content = stamper.getOverContent(i);
            content.setGState(gs);
            content.setFontAndSize(base, 32);
            // 开始
            content.beginText();
            // 设置颜色 默认为黑色
            content.setColorFill(BaseColor.BLACK);
            // 开始写入水印

            content.showTextAligned(Element.ALIGN_MIDDLE, text, 180,
                    340, 45);
            content.showTextAligned(Element.ALIGN_MIDDLE, UUID.randomUUID().toString(), 140,
                    240, 45);
            content.endText();
        }
        stamper.close();
    }
}
  1. 测试
    public static void main(String[] args) throws Exception{
        String fileSrc = "C:\\Users\\Keeping\\Desktop\\测试.pdf";
        String destFile = "C:\\Users\\Keeping\\Desktop\\测试2.pdf";
        String text = "这是一段测试文字";
        addWaterMark(fileSrc,destFile,text);
    }
  1. 测试结果


    测试结果

你可能感兴趣的:(使用itextpdf为PDF添加文字水印)