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

引入依赖

com.itextpdf.tool

xmlworker

5.5.10

com.itextpdf

itextpdf

5.5.10

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

/**

* pdf 加水印

*

* @return

*/

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

String fileName = UUID.randomUUID().toString() + ".pdf";

String courseFile = "";

try {

// 第二种:获取项目路径 D:\git\daotie\daotie

//生成临时文件 , 读取完删除

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);

//这里的字体设置比较关键,这个设置是支持中文的写法

/*BaseFont base = BaseFont.createFont("STSong-Light",

"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 使用系统字体*/

/*//设置透明度

PdfGState gs = new PdfGState();

gs.setFillOpacity(1f);

gs.setStrokeOpacity(1f);*/

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();

}

}

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

java如何给pdf加水印_java pdf加水印的方法相关推荐

  1. java 转换pdf页面尺寸_Java PDF页面设置——页面大小、页边距、纸张方向、页面旋转...

    下面的示例将介绍通过Java编程来对PDF页面进行个性化设置的方法,包括设置页面大小.页边距.纸张方向.页面旋转等.这里有如下多种页面大小尺寸可供选择: 同时,设置文档内容旋转时,可支持如下角度进行内 ...

  2. java 设置pdf页面大小_Java PDF页面设置——页面大小、页边距、纸张方向、页面旋转...

    Java PDF页面设置--页面大小.页边距.纸张方向.页面旋转 发布时间:2020-08-31 01:32:03 来源:51CTO 阅读:157 作者:E_iceblue 下面的示例将介绍通过Jav ...

  3. java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...

    Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...

  4. java 图片水印_JAVA实现图片水印

    一.JAVA图片水印实现原理 1.1.JAVA图片水印实现思路 1.创建缓存图片对象. 2.创建Java绘图工具对象. 3.使用绘图工具对象将原图绘制到缓存图片对象. 4.使用绘图工具将水印(文字/图 ...

  5. java时间加减_java时间加减

    展开全部 1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...

  6. java热加载_java热加载

    应用服务器一般都支持热部署(Hot Deployment),更新代码时把新编译的确类 替换旧的就行,后面的程序就执行新类中的代码.这也是由各种应用服务器的独 有的类加载器层次实现的.那如何在我们的程序 ...

  7. java pdfreader去除水印_Java - PDF操作库 ItextPdf和PdfBox添加水印

    目录 PDFBox和Itext是操作PDF文档最常用的两种java library. 这里记录一下用两种内库给pdf添加水印的方法. Itext import com.itextpdf.text.Do ...

  8. java pdf验签_java pdf验签

    java pdf验签 [2021-02-09 19:35:21]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/(\s ...

  9. java pdf替换内容_java PDF批量替换关键词

    java PDF批量替换关键词 要求:将要替换的字段封装到一个类中,并规定字段名与PDF中关键字的映射. 准备: 关键词信息类-----MatchItem package pdf.replace; i ...

最新文章

  1. ANT集成SVNANT访问SVN(Subversion)
  2. matlab错误:vl_feat工具箱问题
  3. sprintf作用2
  4. 如何使得WIN7下用VS2010做出的MFC程序具有XP风格(摆脱传统界面的效果)
  5. 前端inline元素间隙问题解决办法
  6. 汉字转html实体符号js_js转html实体
  7. 如何实现快速高效开发?低代码平台jeecgboot完美解决—jeecgboot3.1新特性
  8. 干净虚拟机(centos 6.4)上从头到尾安装并调试Mdrill(四)
  9. YUV序列下采样以及彩色4:2:0与灰度4:0:0转换---基于matlab实现
  10. C语言编程软件的下载安装、使用和写代码
  11. 用C语言实现PID控制代码
  12. 读《大学之路》有感---谈谈书房对于一个家庭的重要性
  13. android studio深色模式,Xamarin 中的深色模式
  14. 唱响艾泽拉斯_搞笑篇
  15. windows 下 c++ 二维码生成库
  16. 如何用 Kaldi 训练一个 DNN 声学模型
  17. Node16.xx 解压版安装
  18. Leanback(1)-播放控制栏下添加新的行
  19. 金属表面酸洗废水除锰除铬过滤装置,除铬树脂
  20. 安霸平台led芯片aw9523b调试

热门文章

  1. sbt介绍与构建Scala项目
  2. ASM磁盘组添加ASM磁盘
  3. LevOJ B3408热浪
  4. 离散数学:聚会上的名人
  5. 英语----我们快乐生活的一部分
  6. 重新认识软件测试,去掉这些标签
  7. DirectUI技术与无句柄窗口应用
  8. webpack5 基础配置(4下)模块化原理 初识source map
  9. linux qt地图开发教程,基于QT的电子地图的设计与实现
  10. Ardunio开发实例-磁簧开关