java如何给pdf加水印_java pdf加水印的方法
本文实例为大家分享了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加水印的方法相关推荐
- java 转换pdf页面尺寸_Java PDF页面设置——页面大小、页边距、纸张方向、页面旋转...
下面的示例将介绍通过Java编程来对PDF页面进行个性化设置的方法,包括设置页面大小.页边距.纸张方向.页面旋转等.这里有如下多种页面大小尺寸可供选择: 同时,设置文档内容旋转时,可支持如下角度进行内 ...
- java 设置pdf页面大小_Java PDF页面设置——页面大小、页边距、纸张方向、页面旋转...
Java PDF页面设置--页面大小.页边距.纸张方向.页面旋转 发布时间:2020-08-31 01:32:03 来源:51CTO 阅读:157 作者:E_iceblue 下面的示例将介绍通过Jav ...
- java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...
Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...
- java 图片水印_JAVA实现图片水印
一.JAVA图片水印实现原理 1.1.JAVA图片水印实现思路 1.创建缓存图片对象. 2.创建Java绘图工具对象. 3.使用绘图工具对象将原图绘制到缓存图片对象. 4.使用绘图工具将水印(文字/图 ...
- java时间加减_java时间加减
展开全部 1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...
- java热加载_java热加载
应用服务器一般都支持热部署(Hot Deployment),更新代码时把新编译的确类 替换旧的就行,后面的程序就执行新类中的代码.这也是由各种应用服务器的独 有的类加载器层次实现的.那如何在我们的程序 ...
- java pdfreader去除水印_Java - PDF操作库 ItextPdf和PdfBox添加水印
目录 PDFBox和Itext是操作PDF文档最常用的两种java library. 这里记录一下用两种内库给pdf添加水印的方法. Itext import com.itextpdf.text.Do ...
- java pdf验签_java pdf验签
java pdf验签 [2021-02-09 19:35:21] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/(\s ...
- java pdf替换内容_java PDF批量替换关键词
java PDF批量替换关键词 要求:将要替换的字段封装到一个类中,并规定字段名与PDF中关键字的映射. 准备: 关键词信息类-----MatchItem package pdf.replace; i ...
最新文章
- ANT集成SVNANT访问SVN(Subversion)
- matlab错误:vl_feat工具箱问题
- sprintf作用2
- 如何使得WIN7下用VS2010做出的MFC程序具有XP风格(摆脱传统界面的效果)
- 前端inline元素间隙问题解决办法
- 汉字转html实体符号js_js转html实体
- 如何实现快速高效开发?低代码平台jeecgboot完美解决—jeecgboot3.1新特性
- 干净虚拟机(centos 6.4)上从头到尾安装并调试Mdrill(四)
- YUV序列下采样以及彩色4:2:0与灰度4:0:0转换---基于matlab实现
- C语言编程软件的下载安装、使用和写代码
- 用C语言实现PID控制代码
- 读《大学之路》有感---谈谈书房对于一个家庭的重要性
- android studio深色模式,Xamarin 中的深色模式
- 唱响艾泽拉斯_搞笑篇
- windows 下 c++ 二维码生成库
- 如何用 Kaldi 训练一个 DNN 声学模型
- Node16.xx 解压版安装
- Leanback(1)-播放控制栏下添加新的行
- 金属表面酸洗废水除锰除铬过滤装置,除铬树脂
- 安霸平台led芯片aw9523b调试