zoukankan      html  css  js  c++  java
  • java 给pdf添加文字水印

    依赖使用的包:

    <dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.11</version>
    </dependency>

    <dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext-asian</artifactId>
    <version>5.2.0</version>
    </dependency>

     

    代码的实现;

    package com.gxever.zvn;

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

    import java.io.FileOutputStream;

    /**
    * @Author Lys
    * @Date 2019/8/15 13:39
    * @Version V1.0
    * @Description:
    */
    public class test {

    public static void main(String[] args) throws Exception {

    waterMark("D:\pdf\123.pdf", "D:\pdf\123Demo.pdf", "仅限际恒锐智使用,其他无效");
    }

    /**
    * @param inputFile 你的PDF文件地址
    * @param outputFile 添加水印后生成PDF存放的地址
    * @param waterMarkName 你的水印
    * @return
    */
    public static boolean waterMark(String inputFile,
    String outputFile, String waterMarkName) {
    try {
    PdfReader reader = new PdfReader(inputFile);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(
    outputFile));
    //这里的字体设置比较关键,这个设置是支持中文的写法
    BaseFont base = BaseFont.createFont("STSong-Light",
    "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 使用系统字体
    int total = reader.getNumberOfPages() + 1;

    PdfContentByte under;
    Rectangle pageRect = null;
    for (int i = 1; i < total; i++) {
    pageRect = stamper.getReader().
    getPageSizeWithRotation(i);
    // 计算水印X,Y坐标
    float x = pageRect.getWidth()/10;
    float y = pageRect.getHeight()/10-10;
    // 获得PDF最顶层
    under = stamper.getOverContent(i);
    under.saveState();
    // set Transparency
    PdfGState gs = new PdfGState();
    // 设置透明度为0.2
    gs.setFillOpacity(1.f);
    under.setGState(gs);
    under.restoreState();
    under.beginText();
    under.setFontAndSize(base, 60);
    under.setColorFill(BaseColor.ORANGE);

    // 水印文字成45度角倾斜
    under.showTextAligned(Element.ALIGN_CENTER
    , waterMarkName, x,
    y, 55);
    // 添加水印文字
    under.endText();
    under.setLineWidth(1f);
    under.stroke();
    }
    stamper.close();
    return true;
    } catch (Exception e) {
    e.printStackTrace();
    return false;
    }
    }

    }
  • 相关阅读:
    JAVA过滤器(Filter)与拦截器(Interceptor)区别及关系
    原创:shiro 入门配置三步骤
    Shiro笔记(三)----Shiro配置文件ini详解
    搭建用Selenium模拟chrome浏览器运行环境,为模拟登陆做准备
    IDEA编译时,idea java: 找不到符号
    mybatis分页插件 pageHelper 在dao、 service , 各模块单元测试及Web层配置使用
    CF 336494 B. Divisor Subtraction
    【动态规划】DP状态机(UP20210815)
    DP数字三角形变形——方格取数
    hold sb at bay
  • 原文地址:https://www.cnblogs.com/yishuo/p/11357473.html
Copyright © 2011-2022 走看看