版权声明:如需转载使用,请注明原文地址

一般而言,许多公司在做pdf之后,都会将公司的logo或者网址以水印的方式添加到pdf文件中。本篇文章,我们将介绍在制作pdf的时候,如何将水印加入到pdf中去。

package cn.tomtocc.pdf;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfGState;
import com.itextpdf.text.pdf.PdfWriter;public class pdfTest {public static void main(String[] args) throws FileNotFoundException,DocumentException {//实现A4纸页面 并且横向显示(不设置则为纵向)Document document = new Document(PageSize.A4.rotate());PdfWriter pdfWriter = PdfWriter.getInstance(document,new FileOutputStream("d:/demo.pdf"));// 打开文档document.open();// 创建第一页(如果只有一页的话,这一步可以省略)document.newPage();// 加入水印PdfContentByte waterMar = pdfWriter.getDirectContentUnder();// 开始设置水印waterMar.beginText();// 设置水印透明度PdfGState gs = new PdfGState();// 设置填充字体不透明度为0.4fgs.setFillOpacity(0.4f);try {// 设置水印字体参数及大小                                  (字体参数,字体编码格式,是否将字体信息嵌入到pdf中(一般不需要嵌入),字体大小)waterMar.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED), 60);// 设置透明度waterMar.setGState(gs);// 设置水印对齐方式 水印内容 X坐标 Y坐标 旋转角度waterMar.showTextAligned(Element.ALIGN_RIGHT, "www.tomatocc.com" , 500, 430, 45);// 设置水印颜色waterMar.setColorFill(BaseColor.GRAY);//结束设置waterMar.endText();waterMar.stroke();} catch (IOException e) {e.printStackTrace();}finally {waterMar = null;gs = null;}// 加入文档内容document.add(new Paragraph("my first pdf demo"));// 关闭文档document.close();pdfWriter.close();}
}
  • 然后我们打开我们的pdf,如下:

这里要说明一点:水印是要放在pdf中的,因此在创建PdfContentByte对象之前,一定要先 document.newPage();。二者顺序是不能反过来的,如果反过来的意思就是先画水印,在创建一个pdf页面,显然不符合逻辑了。

  • 接下来,我们继续操作“图片水印”
package cn.tomtocc.pdf;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfGState;
import com.itextpdf.text.pdf.PdfWriter;public class pdfTest {public static void main(String[] args) throws FileNotFoundException,DocumentException {//实现A4纸页面 并且横向显示(不设置则为纵向)Document document = new Document(PageSize.A4.rotate());PdfWriter pdfWriter = PdfWriter.getInstance(document,new FileOutputStream("d:/demo.pdf"));// 打开文档document.open();// 创建第一页(如果只有一页的话,这一步可以省略)document.newPage();// 加入水印PdfContentByte waterMar = pdfWriter.getDirectContentUnder();// 开始设置水印waterMar.beginText();// 设置水印透明度PdfGState gs = new PdfGState();// 设置笔触字体不透明度为0.4fgs.setStrokeOpacity(0.4f);try {Image image = Image.getInstance("d:/tomatocc.jpg");// 设置坐标 绝对位置 X Yimage.setAbsolutePosition(200, 300);// 设置旋转弧度image.setRotation(30);// 旋转 弧度// 设置旋转角度image.setRotationDegrees(45);// 旋转 角度// 设置等比缩放image.scalePercent(90);// 依照比例缩放// image.scaleAbsolute(200,100);//自定义大小// 设置透明度waterMar.setGState(gs);// 添加水印图片waterMar.addImage(image);// 设置透明度waterMar.setGState(gs);//结束设置waterMar.endText();waterMar.stroke();} catch (IOException e) {e.printStackTrace();}finally {waterMar = null;gs = null;}// 加入文档内容document.add(new Paragraph("my first pdf demo"));// 关闭文档document.close();pdfWriter.close();}
}

然后我们打开文档,就可以看到一个带图片水印的pdf了

  • 到目前为止,关于pdf的简单操作就介绍到这里,在下篇文章中,我们将要介绍印章水印。

点击下载《ITEXT官方英文API+中文使用说明》

【itext学习之路】系列教程

【itext学习之路】-----(第一篇)创建一个简单的pdf文档
【itext学习之路】-----(第二篇)设置pdf的一些常用属性
【itext学习之路】-----(第三篇)对pdf文档进行加密和权限设置
【itext学习之路】-----(第四篇)给pdf增加文本水印和图片水印
【itext学习之路】-----(第五篇)对pdf进行盖章/签章/数字签名
【itext学习之路】-----(第六篇)将html转成pdf(解决中文不显示)

欢迎关注本人个人公众号,交流更多技术信息

【itext学习之路】-------(第四篇)给pdf增加文本水印和图片水印相关推荐

  1. 【itext学习之路】--4.给pdf增加文本水印和图片水印

    来源:[itext学习之路]-------(第四篇)给pdf增加文本水印和图片水印_tomatocc的博客-CSDN博客_itext添加水印 一般而言,许多公司在做pdf之后,都会将公司的logo或者 ...

  2. 【itext学习之路】--5.对pdf进行盖章/签章/数字签名

    来源:[itext学习之路]-------(第五篇)对pdf进行盖章/签章/数字签名_tomatocc的博客-CSDN博客_itext 数字签名 在上一篇文章中,我们学习了使用itext对pdf增加图 ...

  3. 最简单人工智能python_Python人工智能之路 - 第四篇 : jieba gensim 最好别分家之最简单的相似度实现...

    简单的问答已经实现了,那么问题也跟着出现了,我不能确定问题一定是"你叫什么名字",也有可能是"你是谁","你叫啥"之类的,这就引出了人工智能 ...

  4. 【itext学习之路】--6.将html转成pdf(解决中文不显示)

    来源:[itext学习之路]-------(第七篇)将html转成pdf(解决中文不显示)_tomatocc的博客-CSDN博客 在上一篇文章中,我们学习了使用对pdf进行盖章/签章/数字签名,到此为 ...

  5. alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组)

    alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组) 1. SQL语句 1.1 sql语言类型 sql是一门独立的 ...

  6. 个人开发经历--我的java学习之路(学校篇)

    个人开发经历--我的java学习之路(学校篇) 个人介绍: 姓名: 不在这里说明 联系信息: 个人历程 jdbc阶段 sql生成器 一代代码生成器 servlet阶段 servlet项目中,sql生成 ...

  7. 强化学习的学习之路(四十四)2021-02-13 Monotonic Improvement with KL Divergence

    作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助.这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学 ...

  8. alin的学习之路(数据库篇:五)(MySQL的相关语句及API的C语言实现)

    alin的学习之路(数据库篇:五)(MySQL的相关语句及API的C语言实现) 1. MySQL概述与登陆MySQL mysql 与 oracle 的区别 oracle 是一个数据库实例下有多个用户, ...

  9. 强化学习的学习之路(四十六)2021-02-15自然梯度法实现策略上的单调提升(Monotonic Improvement with Natural gradient descent)

    作为一个新手,写这个强化学习-基础知识专栏是想和大家分享一下自己学习强化学习的学习历程,希望对大家能有所帮助.这个系列后面会不断更新,希望自己在2021年能保证平均每日一更的更新速度,主要是介绍强化学 ...

最新文章

  1. Go 知识点(05)— 类型别名与类型定义
  2. eventfd和timerfd
  3. fiddler网络代理原理图_Fiddler–HTTP代理神器
  4. JavaScript实现更新数字指定偏移量上的值updateBit算法(附完整源码)
  5. c语言简单的模拟坐标,C语言模拟实现简单扫雷游戏
  6. var let const 区别
  7. SAP License:再谈SAP系统发票校验的”事后借记”
  8. Shiro面试题答案
  9. 深入浅出详解因子分析,附案例教学(全)
  10. 数据库COUNT(*)、COUNT(字段)和COUNT(1)的异同
  11. 何新生的英语史(八)—看好莱坞学英语,就是这么简单 1
  12. [Windows系统]visio安装时提示和即点即用版本不能并行怎么办
  13. 生物信息电脑运行环境搭建-Python R Linux
  14. AD软件——设计总结(差分布线,蛇形布线)
  15. html图片滤色,CSS3图片混合(Blend)效果详解
  16. [解决问题]注册表修改windows用户名后,vscode以前的扩展消失
  17. 多思计组实验 实验4总线与微命令实验
  18. 33款可用来抓数据的开源爬虫软件工具
  19. arcmap坐标点生成线和面
  20. 【ThinkPad E470C 】基本完美 附带镜像EFI等工具-Mojave后续自己升级为10.14

热门文章

  1. 63、灭火器配置要求
  2. 强大!一键转换LaTex公式,这款开源公式识别神器比Mathpix Snip更适合你
  3. YMTC X3 NAND 232L 终露真容,全球领先|国产芯之光
  4. 租用游艇问题---动态规划
  5. Windows快捷键---原创总结zyh
  6. 毕业论文(二)文章中多次引用同一参考文献的不同内容该如何标注
  7. Linux Foundation (LSB and FHS)
  8. 【Bootstrap导入模板完成实例-与模板完美契合】
  9. 微信测试睡眠的软件,这三款好用到停不下来的睡眠APP,一定要收藏起来!
  10. 逃跑的拉尔夫---题目建议BFS