1、我们的需求需要对pdf加水印,其中有加密的和未加密的,

操作过程中发现 有的虽然加密了 但是符合PDFReader的五种加密算法,就可以成功破解加水印,还有一些就会抛出一些异常

第一种报错:com.itextpdf.text.exceptions.InvalidPdfException: Unknown encryption type R=6

这种是加密算法无法破解

还有些就是文件内容或者格式有问题

第二种报错:com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: trailer not found.; Original message: Dictionary key 0 is not a name. at file pointer 589754
fileWrapper.notLike("file_title","Heavy Metals.pdf"); //PDF header signature not found
第三 种报错:com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: '>' not expected at file pointer 454159; Original message: '>' not expected at file pointer 454159

第四种报错:java.io.EOFException: null

第五种报错:

com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: Dictionary key 1 is not a name. at file pointer 993774; Original message: Dictionary key 1 is not a name. at file pointer 993774

除了第一种提示加密失败 其他我们都抛出加水印异常;

同时需求要求对加水印的pdf需要加密控制权限,不可复制,不可编辑,不可…… 但是可以打印

一开始收到的答案通篇都是

得到的效果

但是发现这样的文件始终都有copy的权限,仔细看了官网也没有确切的解释

官网地址:Overview (iText 5.5.13 API) (itextpdf.com)

这个True和False的区别只是一种枚举默认值的区分,通过另外一位博主 userpassword和ownerpassword的演示,才发现这个权限设置对我来说太多了,只需要一种即可

//只保留打印权限 其他权限不放开
stamper.setEncryption(null, ownerPassword, PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128);

其他的权限不需要就不写,

//只保留打印权限 其他权限不放开
stamper.setEncryption(null, ownerPassword, PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128); 也可以用 true或者fasle来替换,

true:没有“复制功能的内容复制“权限

false:  有“复制功能的内容复制“权限

如果都不写,默认是权限都放开 不做控制,所以必须有一个权限,刚好我们放开了打印权限 完美实现了功能 ,

记住这个问题

itextPDF5.5.13 pdf加水印的权限控制相关推荐

  1. Springboot使用itext及documents4j操作pdf(word转pdf、pdf加水印(文字或图片,可指定位置)、pdf加密(打开密码,编辑密码))

    pom.xml引入 <!-- pdf文档生成 --><dependency><groupId>com.documents4j</groupId>< ...

  2. PDF转换图片,图片的切割,图片转换PDF以及PDF加水印等记录贴

    PDF转变为图片: 把图片进行切割: 把图片转变回PDF: 为PDF加水印文字: 为PDF加水印图片. 1,PDF转变为图片 /*** @author dalin*将PDF格式的文件转换成png文件* ...

  3. java pdf水印排布问题_java 实现 PDF 加水印功能

    使用java代码实现给PDF加水印的功能 首先导入所需要的依赖 com.itextpdf itextpdf 5.5.11 com.itextpdf itext-asian 5.2.0 java 代码实 ...

  4. Java实现Excel和word转pdf加水印,复制及可用

    Java实现Excel和word转pdf加水印,复制及可用 时隔大半年,之前朋友,今天突然找我说,他们有个需求要做这东西.想起来之前自己照着官方文档写,也走了不少坑.今天就索性写个,也为了方便以后使用 ...

  5. java如何给pdf加水印_java pdf加水印的方法

    本文实例为大家分享了java pdf加水印的具体代码,供大家参考,具体内容如下 引入依赖 com.itextpdf.tool xmlworker 5.5.10 com.itextpdf itextpd ...

  6. XDOC Office Server 发布 1.1.0 版本,支持 PDF 加水印

    XDOC Office Server 是一个 JavaEE 服务,用于将 Office 文档转换为 PDF,格式兼容性好. 版本更新 支持 &_watermark 参数,对生成的 PDF 加水 ...

  7. java使用2种方法操作liberoffice把word转pdf,pdf加水印,java远程调用Linux执行命令

    文章目录 libreoffice下载地址 安装 (第一种) java调用 (第二种 推荐) java调用Linux命令转pdf java远程连接Linux执行命令(少数情况) linux安装windo ...

  8. 怎么给pdf加水印,pdf加水印步骤

    怎么给pdf加水印?有时候位置方式别人随意使用pdf文件里面的内容,我们需要给做好的pdf文件添加水印,这样可以起到一定的保护作用,那么怎么给pdf文件添加水印呢?有的小伙伴肯定会说,用专业的pdf编 ...

  9. 看这里,你要的快速、批量PDF加水印工具!

    今天在网上看到有人提问:"求怎么给PDF加水印,要快速批量的那种",好吧,算问对人了.最近在工作中也遇到同事问这个问题,主要是快速和批量,时间宝贵,不能浪费,所以这里大家推荐一个P ...

最新文章

  1. 计算机应用基础浙大,2014春浙大远程教育计算机应用基础-3.Word知识题
  2. NVIDIA Jetson Xavier NX使用SD镜像刷机流程
  3. OpenCV中向量是可以转化为MAT类型的~
  4. Jquery通过ajax请求NodeJS返回json数据
  5. 强化学习笔记 experience replay 经验回放
  6. Linux中 set、env、declare、export显示shell变量的区别
  7. 微信好友特征数据分析及可视化
  8. 【转】crontab 详解
  9. codeforces71A-C语言解题报告
  10. c语言数组与函数,C语言的数组与函数
  11. python integral_Pycharm:应为“Integral”类型,而应为“str”
  12. linux 低功耗模式,stm32的低功耗模式:
  13. js正则表达式匹配多个条件
  14. 语法俱乐部1:基本句型及补语
  15. 雷曼 疯狂兔子 java_《雷曼:疯狂兔子》详细流程攻略+个人心得分享
  16. workunit 的指的工作单元是什么_workunit是什么意思
  17. 什么是SystemUI?简单分析
  18. ListView 实现阻尼回弹效果 并去除边缘阴影
  19. 用网线连接电脑传输文件
  20. Android 解析软件包时出现问题

热门文章

  1. Java AjaxResult 操作消息提醒返回
  2. mysql查看、开启慢查询、分析执行SQL的效率
  3. 有关java中equals()与hashCode()的探讨
  4. 跟老韩学安全之信息收集
  5. 计算机软件专业与甲骨文关系,基于本体的甲骨文专业文档语义标注方法-计算机应用与软件.PDF...
  6. The Company Requires Superficial StudyPHP 打开执行PHP ②
  7. 《小猪佩奇》动画将推出两集新春特辑,迎接中国“猪年”到来
  8. 好用的XManager6 注册机
  9. 如何使能RT5350 1T2R ANTENNA DIVERSITY
  10. 九州云边缘管理平台获评年度明星产品