栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java pdf加水印的方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java pdf加水印的方法

本文实例为大家分享了java pdf加水印的具体代码,供大家参考,具体内容如下

引入依赖


 com.itextpdf.tool
 xmlworker
 5.5.10


 com.itextpdf
 itextpdf
 5.5.10

‘/static/fonts/SIMYOU.TTF' 字体 本机没有的话, 可以百度下载


 public byte[] pdfAddWaterMark(byte[] byes) {

  String fileName = UUID.randomUUID().toString() + ".pdf";
  String courseFile = "";
  try {
   // 第二种:获取项目路径 D:gitdaotiedaotie
   //生成临时文件 , 读取完删除
   File directory = new File("");// 参数为空
   courseFile = directory.getCanonicalPath() + "/";
  } catch (IOException e) {
   e.printStackTrace();
  }
  byte[] returnBytes = null;
  // 待加水印的文件
  PdfReader reader = null;
  PdfStamper stamper = null;
//  ByteArrayOutputStream baos = null;
  FileOutputStream os = null;
  try {
   reader = new PdfReader(byes);
   // 加完水印的文件
//   baos = new ByteArrayOutputStream();
//   stamper = new PdfStamper(reader, baos);
   // 加完水印的文件
   os = new FileOutputStream(courseFile + fileName);
   stamper = new PdfStamper(reader, os);

   int total = reader.getNumberOfPages() + 1;
   PdfContentByte content;
   // baseFont font = baseFont.createFont();
   baseFont basefont = baseFont.createFont("/static/fonts/SIMYOU.TTF", baseFont.IDENTITY_H, baseFont.NOT_EMBEDDED);
   //这里的字体设置比较关键,这个设置是支持中文的写法
   

   

   PdfContentByte under;
   com.itextpdf.text.Rectangle pageRect = null;

   // 循环对每页插入水印
   for (int i = 1; i < total; i++) {
    pageRect = stamper.getReader().getPageSizeWithRotation(i);
    // 计算水印X,Y坐标
    float x = (float) (pageRect.getWidth() / 1.98);
    float y = (float) (pageRect.getHeight() / 2.8);
    // 获得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(basefont, pageRect.getHeight() / 17);
    under.setColorFill(baseColor.RED);

    // 水印文字成45度角倾斜
    System.out.println("width" + pageRect.getWidth());
    System.out.println("height" + pageRect.getHeight());
    System.out.println("x" + x);
    System.out.println("y" + y);
    under.showTextAligned(Element.ALIGN_CENTER, "图片仅供预览,不可用于商业用途", x, y, 45);
    // 添加水印文字
    under.endText();
    under.setLineWidth(1f);
    under.stroke();
   }
//   returnBytes = baos.toByteArray();
  } catch (IOException e) {
   e.printStackTrace();
  } catch (documentException e) {
   e.printStackTrace();
  } finally {
   try {
    stamper.close();
    if (os != null) {
     os.close();
    }
    if (reader != null) {
     reader.close();
    }
   } catch (documentException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/137247.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号