maven项目开发遇到的问题。
这个问题有点坑,测试时doc(x)、xls(x)添加水印后正常显示,而ppt(x)打开后水印看不到,但是可以被选中。不了解pdf文档,搜了半天,最后发现pdf文档是分层的(用词不准)…设置水印时必须获取pdf文档的最上层(getOverContent())才能使得你设置的水印显示出来。mark下

/*** pdf添加水印** @param filePO po* @param response res* @param waterMarkContent 水印内容* @throws DocumentException* @throws IOException*/
public static void setTextWaterMarkForPdf(FilePO filePO, HttpServletResponse response, String waterMarkContent)throws DocumentException, IOException {PdfReader reader = new PdfReader(filePO.getOnlinePath());PdfStamper stamper = new PdfStamper(reader, response.getOutputStream());PdfGState gs = new PdfGState();//设置透明度gs.setFillOpacity(0.3f);BaseFont font = BaseFont.createFont("Courier", "Cp1252", false);JLabel label = new JLabel();label.setText(waterMarkContent);FontMetrics metrics = label.getFontMetrics(label.getFont());int textH = metrics.getHeight() * 2;int textW = metrics.stringWidth(label.getText()) * 2;int total = reader.getNumberOfPages() + 1;PdfContentByte content;for (int i = 1; i < total; i++) {//**注意!这里是获取pdf最顶层,否则会使得部分pdf文档无法显示水印content = stamper.getOverContent(i);content.beginText();content.setGState(gs);content.setColorFill(BaseColor.RED);content.setFontAndSize(font, 30);// 开始写入水印float pageWidth = reader.getPageSize(i).getWidth();float pageHigh = reader.getPageSize(i).getHeight();for (float heigh = 20; heigh < pageHigh; heigh += textH * 2) {for (float width = 20; width < pageWidth; width += textW + 30) {content.showTextAligned(Element.ALIGN_LEFT, waterMarkContent, width, heigh, -45);}}content.endText();}stamper.close();}

maven依赖:

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version>
</dependency>

基于itextpdf java pdf添加水印后,部分文档无法显示水印的问题相关推荐

  1. ns-3-model-library wifi 浅析_ns-3wifi部分解析_ns-3网络模拟器wifi部分文档分析_Part2

    ns(来源于"network simulator")是一系列离散事件网络模拟器,包括ns-1.ns-2和ns-3.他们主要应用于研究和教学.ns-3是自由软件,以GNU GPLv2 ...

  2. itextpdf给pdf添加水印

    第一步:添加依赖 <!--pdf 处理 --><dependency><groupId>com.itextpdf</groupId><artifa ...

  3. java中字符串后加Box_字符串未显示在JavaFX中ComboBox的Tableview上

    我一直在尝试在Java中显示我从组合框到表视图的选择 . 我花了好几个小时都在寻找解决方案,但没有用 . 我没有任何错误,但我似乎无法在TableView上显示一个字符串 . 我想请求帮助 . Mai ...

  4. 修改java或css后不生效,还是显示修改之前的样式,问题已解决

    在jsp中修改css样式后,重启浏览器发现还是之前的CSS样式,这可能是因为浏览器读取的是之前的缓存,解决方法如下: 1.clear项目 2.删除tomcat服务器 3.在本地磁盘的服务器文件夹web ...

  5. ns-3-model-library wifi 浅析_ns-3wifi部分解析_ns-3网络模拟器wifi部分文档分析_Part1

    ​ns(来源于"network simulator")是一系列离散事件网络模拟器,包括ns-1.ns-2和ns-3.他们主要应用于研究和教学.ns-3是自由软件,以GNU GPLv ...

  6. QT(5.14.2) 部分文档中文译文

    由于QT之后的几个文档并不像之前的,会有明确·解释,大部分信息都需要从详细描述中获得,因此本文对其中部分详细描述进行翻译,后续也会不断更新: QPushButton: 按钮或命令按钮可能是任何图形用户 ...

  7. ES _source字段介绍——json文档,去掉的话无法更新部分文档,最重要的是无法reindex...

    摘自:https://es.xiaoleilu.com/070_Index_Mgmt/31_Metadata_source.html The _source field stores the JSON ...

  8. kkFileView集成LibreOffice,解决部分文档预览500

    背景 Apache OpenOffice 已经不再支持更新, 最新版本4.1+ kkfileview 官方docker镜像集成的office就是OpenOffice 但对于支持文档预览,特别是doc, ...

  9. Anki Cozmo(Vector)人工智能机器人玩具部分文档

    Cozmo人工智能机器人SDK使用笔记(X)-总结- |人工智能基础(中小学版)实践平台| https://blog.csdn.net/ZhangRelay/article/details/86675 ...

最新文章

  1. 使用CDN之后APACHE日志记录中IP地址不正确的解决方案
  2. python中__init__和__new__方法的使用
  3. JSP页面中实现使用taglib导入库时自动提示(JSTL 库安装)
  4. 【论文写作】JSP旅游网如何写概念设计
  5. 为什么需要软件过程改善(Software Process Improvement)?
  6. 蓝牙模块HC-06的基本设置和他的AT指令集
  7. 怎么用手机修改图片大小?在线修改图片的方法?
  8. 原生 js html 开发成桌面应用 以及打包
  9. 深度学习的显卡对比评测:2080ti vs 3090 vs A100
  10. mysql increment_mysql中auto_increment用法详解
  11. 【操作教程】AI安防监控智能视频平台EasyCVR如何重置密码?
  12. 蓝队攻击的四个阶段(二)
  13. 线性插值、抛物插值、Lagrange插值 | Lagrange拉格朗日插值法(一)
  14. Matlab在电路原理中的应用
  15. 在CANoeCANalyzer中“在线回放”CAN Log.asc/blf文件
  16. SAP顾问生涯闲记:做过的最好玩的Global项目是什么样子
  17. 华硕fl8000u是什么型号_华硕fl8000u怎么样 华硕笔记本fl8000u配置及报价
  18. 有人整理了一个月的淘宝各行业NO.1名店(值得收藏)
  19. 解决 微信二维码 出不来的问题
  20. 快速进行OneHot编码——get_dummies()函数

热门文章

  1. 内存读数据和磁盘读数据的区别
  2. 西门子S7-PLCSIM仿真软件的应用
  3. docker安装kafka镜像
  4. java when循环_Kotlin基础 --- 循环和when 的使用
  5. unexpected EOF while looking for matching `“‘
  6. 转自知乎,深度强化学习论文https://zhuanlan.zhihu.com/p/23600620
  7. git报错 git libpng warning: iCCP以及fatal: Authentication failed for ‘https://git.weixin.qq.com‘
  8. 快乐大掌柜源码--快乐大掌柜系统开发模式介绍
  9. 如何在公众号添加视频链接
  10. mysql内存回收_mysql占用内存过多