/**
* 中间或者两边水印
* @param bos 添加完水印的输出
* @param input 原PDF文件输入
* @param word 水印内容
* @param model 水印添加位置1中间,2两边
*/
public static setWatermark(BufferedOutputStream bos, InputStream input, String word, int model)
throws DocumentException, IOException {
PdfReader reader = new PdfReader(input);
PdfStamper stamper = new PdfStamper(reader, bos);
PdfContentByte content;
// 创建字体,第一个参数是字体路径,itext有一些默认的字体比如说:
//BaseFont base = BaseFont.createFont(“STSong-Light”, “UniGB-UCS2-H”, BaseFont.EMBEDDED);
BaseFont base = BaseFont.createFont("/msyh.ttf", BaseFont.IDENTITY_H,
BaseFont.EMBEDDED);
PdfGState gs = new PdfGState();
// 获取PDF页数
int total = reader.getNumberOfPages();
// 遍历每一页
for (int i = 0; i < total; i++) {
float width = reader.getPageSize(i + 1).getWidth(); // 页宽度
float height = reader.getPageSize(i + 1).getHeight(); // 页高度
content = stamper.getOverContent(i + 1);// 内容
content.beginText();//开始写入文本
gs.setFillOpacity(0.3f);//水印透明度
content.setGState(gs);
content.setColorFill(BaseColor.LIGHT_GRAY);
content.setTextMatrix(70, 200);//设置字体的输出位置

     if (model == 1) { //平行居中的3条水印content.setFontAndSize(base, 50); //字体大小//showTextAligned 方法的参数分别是(文字对齐方式,位置内容,输出水印X轴位置,Y轴位置,旋转角度)content.showTextAligned(Element.ALIGN_CENTER, word, width / 2, 650, 30);content.showTextAligned(Element.ALIGN_CENTER, word, width / 2, 400, 30);content.showTextAligned(Element.ALIGN_CENTER, word, width / 2, 150, 30);} else { // 左右两边个从上到下4条水印float rotation = 30;// 水印旋转度数content.setFontAndSize(base, 20);content.showTextAligned(Element.ALIGN_LEFT, word, 20, height - 50, rotation);content.showTextAligned(Element.ALIGN_LEFT, word, 20, height / 4 * 3 - 50, rotation);content.showTextAligned(Element.ALIGN_LEFT, word, 20, height / 2 - 50, rotation);content.showTextAligned(Element.ALIGN_LEFT, word, 20, height / 4 - 50, rotation);content.setFontAndSize(base, 22);content.showTextAligned(Element.ALIGN_RIGHT, word, width - 20, height - 50, rotation);content.showTextAligned(Element.ALIGN_RIGHT, word, width - 20, height / 4 * 3 - 50, rotation);content.showTextAligned(Element.ALIGN_RIGHT, word, width - 20, height / 2 - 50, rotation);content.showTextAligned(Element.ALIGN_RIGHT, word, width - 20, height / 4 - 50, rotation);}content.endText();//结束写入文本  //要打图片水印的话//Image image = Image.getInstance("c:/1.jpg");  //content.addImage(image);  }stamper.close();
}

public static void main(String[] args) throws FileNotFoundException, DocumentException, IOException {
setWatermark(new BufferedOutputStream(new FileOutputStream(new File("/Users/mimhope/Documents/abc.pdf"))),
new FileInputStream("/Users/mimhope/Documents/周一.pdf"), “测试打印”, 1);
}
————————————————
版权声明:本文为CSDN博主「面向顶风」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41746337/article/details/97615150

pdf文字水印,后添加相关推荐

  1. php pdf 文字水印图片,php pdf添加水印(中文水印,图片水印)

    1.下载软件包 链接:https://pan.baidu.com/s/1cah-mf-SCtfMhVyst_sG8w&shfl=sharepset 提取码:ld8z 2.下载pdf_water ...

  2. 利用ffmpeg实现添加图片水印和文字水印,添加多个水印。代码和命令实现及中文水印乱码

    ffmpeg中文水印乱码两种原因 1.字符编码格式原因,中文必须是utf8编码格式的(我遇到的问题,在vs2013上写的中文,已做编码格式转码,放到centos7.2上编译运行也会出现中文乱码的问题, ...

  3. php pdf 文字水印图片,php如何给pdf加上文字水印和图片水印[未测试]

    php给pdf加上水印 环境 php5.5.12 fpdi-1.5.2 fpdf-1.7 原理 利用fpdi来加载已知pdf文件,用fpdf对pdf进行操作 注意事项 免费的fpdi只支持处理pdf1 ...

  4. 利用iTextSharp组件给PDF文档添加图片水印,文字水印

    最近在做关于PDF文档添加水印的功能,折腾了好久,终于好了.以下做个记录: 首先会用到iTextSharp组件,大家可以去官网下载,同时我也会在本文中附加进来. 代码中添加引用为:   usingSy ...

  5. java实现word和pdf添加文字水印

    相关jar包 链接:https://pan.baidu.com/s/1VkcCsKIqSHlg5vwIOHoHeg 提取码:ju96 实现代码 import com.itextpdf.text.Bas ...

  6. php怎么给视频加水印,视频怎么加水印 添加文字水印和图片水印 给视频加水印的软件...

    昨天由于台风"妮妲"来了深圳,所以在家休息了一天,而且势汹汹的台风"妮妲"于2日03时35分在深圳市大鹏半岛登陆,登陆时风力达到14级,成为近年来正面登陆珠江三 ...

  7. Java实现在图片上添加文字(水印)

    今天分享一个:通过Java代码,给图片添加文字. 比如下面这个图片,我们在左下角就添加了一个文字版的水印,那么这是如何实现的呢 ? 目录 [1]获取原图片对象 (1.1)读取本地图片 (1.2)读取网 ...

  8. 网页怎么在图片上添加文字_教你同时将图片水印和文字水印添加到视频画面

    随着剪辑软件的层出不穷,现在会制作创意视频的人越来越多.今天小编给大家分享一款剪辑软件--视频剪辑高手,以同时给视频添加图片水印和文字水印的效果为例,教大家如何操作. 编辑文字水印命令 勾选视频剪辑高 ...

  9. 二、VB.NET实现给图片添加文字水印

    VB.NET实现给图片添加文字水印 通过vb.net给选定的图片添加文字水印,添加的文字从文本文档中获取,可以一次给相同的图片添加不同的文字水印,并以添加的文字命名图片: Imports System ...

最新文章

  1. 微信小程序在web-view页面做分享,并且把分享的参数传递给小程序
  2. 网站设计怎样让搜索引擎对其另眼相待?
  3. mysql 列名能不能写成col1、col2_Mysql 寒假刷题TIPs
  4. Oracle编程入门经典 第2章 SQLPlus和基本查询
  5. HttpClient4.5.2调用示例(转载+原创)
  6. JQuery $作用
  7. 文本框输入怎么样让键盘消失
  8. procyon java8_java jdk 8反编译工具JD-GUI、procyon-decompiler、luyten、crf下载使用简介
  9. coji 编程机器人_WowWee编程机器人怎么样 WowWee编程机器人使用测评
  10. 2022年高压电工考试题模拟考试平台操作
  11. win10安装steam有损计算机,Win10安装steam平台提示“steam fatal error”报错的解决方法...
  12. Java快速对接微信登录
  13. 亿级 QQ 会员活动运营系统的设计之道
  14. ATECC508A芯片开发笔记(九):加密读写508芯片数据的流程及相应设置
  15. update与fixedupdate检测键盘输入的出现的问题
  16. 手机视频监控解决方案(客户端)
  17. NOIP(普及组):AK的故事之英语学习篇
  18. 第六届高分子材料国际研讨会(PMS-BT 2019)
  19. 生活总是麻烦不断,我还不习惯
  20. 计算机运行慢 卡是什么原因是什么原因,电脑很卡是什么原因

热门文章

  1. 网易云音乐数仓治理之数据任务重构实践
  2. python rsa256 padding pkcs#7 GDCA 之前难了半个月的难题
  3. Python -- 元组
  4. 静态时序分析 第二章 STA概念
  5. 用Python做一个知乎沙雕问题总结
  6. 输入npm相关命令,电脑没有反应问题
  7. 学习的答案:为终身学习者赋能
  8. 概率和回归方程——残差和R方
  9. 合金轮毂售后市场现状研究分析与预测报告
  10. java 画树_JAVA画树