你的诊断错了。问题与 AcroForms 的存在无关。问题与您的文档是否为Reader Enabled有关。 Reader-enabling 只能使用 Adobe 软件完成。这是一个需要使用 Adobe 私钥进行数字签名的过程。如果存在有效签名,则在 Adobe Reader 中解锁特定功能(在签名时的使用权限中定义)。

请查看此问题的答案,了解如何检测 PDF 是否为 Reader-enabled:如何使用 C#检查 PDF 是否启用了 Reader?

您更改此类 PDF 的内容,因此您打破了签名。打破这个签名是导致丑陋的错误消息的原因:

本文档在 Adobe Acrobat Reader DC 中启用了扩展功能。该文档自创建以来已更改,并且不再使用扩展功能。请联系作者以获取本文档的原始版本。

有两种方法可以避免此错误消息:

删除使用权限。这将导致表单不再启用 Reader。例如:如果文档的创建者允许填写的表单可以在本地保存,则在删除使用权限后将无法再进行此操作。

在追加模式下填写表格。这将导致更大的文件大小,但将保留 Reader 启用。

删除使用权限的方式如下:

PdfReader reader = new PdfReader(path_to_file);

if (reader.hasUsageRights()) {

reader.removeUsageRights();

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(path_to_new_file));

stamper.close();

}

reader.close();

在追加模式下使用 iText 是这样的:

PdfReader reader = new PdfReader(src);

PdfStamper stamper =

new PdfStamper(reader, new FileOutputStream(dest), '\0', true);

stamper.close();

reader.close();

注意PdfStamper中的额外参数。

java pdfreader 用法_使用 iText 进行 Acroform 编辑的 Pdf相关推荐

  1. java 优先队列 用法_优先队列的基本用法(java和c++)

    #include #define ll long long #define mod 1000000007 using namespace std; //熟悉一下优先队列的基本用法 int main() ...

  2. java future用法_纯干货:Java学习过程中的21个知识点和技术点

    我们在Java学习过程中要学会抓重点,善于总结,Java学习过程中常见的21个知识点和技术点你知道吗?下面和千锋广州小编一起来看看吧! 1. JVM相关 对于刚刚接触Java的人来说,JVM相关的知识 ...

  3. java future用法_你必须掌握的 21 个 Java 核心技术

    作者:工程师-搁浅来源:https://www.jb51.net/article/122070.htm 写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知 ...

  4. 利用itext包实现java报表打印_利用iText包实现Java报表打印

    在信息系统应用中,报表处理一直起着比较重要的作用.Java报表制作中最常使用的是iText组件,它是一种生成PDF报表的Java组件.本文讨论两种形式的PDF报表处理,一种是通过程序对象生成整个PDF ...

  5. java hashmap用法_备战金九银十:Java核心技术面试题100+,助你搞定面试官

    一线互联网公司工作了几年,我作为求职者参加了不少面试,也作为面试官面试了很多同学,整理这份面试指南,一方面是帮助大家更好的准备面试,有的放矢,另一方面也是对自己知识框架做一个体系化的梳理. 这篇文章梳 ...

  6. java创建pdf空白页_使用itext将html转成PDF,PDF空白的问题。

    我将一个html转换成Pdf,结果转出的PDF是空白的. 经过排查,导致的原因是里面有一个最外层的div设置了CSS样式为width: 800px; 这个数字如果设置成660px就没有问题,再大就会空 ...

  7. java callable用法_使用Callable返回结果(译)

    使用Callable返回结果 本文是Sun官方以Blog形式发布的Java核心技术窍门(JavaCoreTechTip)中的一个.本文主要介绍了Callable及其相关接口和类的使用,篇幅不长且易于理 ...

  8. java finally用法_深入浅析java中finally的用法

    finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下. 之前在写爬虫的时候数据 ...

  9. java parameters用法_(四)Parameters,简单参数就用这个

    Parameters注解在测试方法上指定参数列表,然后在测试方法中声明对应的形参,形参与参数列表一一对应,但名字可以不同,如下所示: public class Test1 { @Parameters( ...

  10. java开关用法_如何在Java中使用带开关盒的枚举?

    Java中的枚举(枚举)是一种存储一组常量值的数据类型.您可以使用枚举来存储固定值,例如一周中的天,一年中的月等.enum Days { SUNDAY, MONDAY, TUESDAY, WEDNES ...

最新文章

  1. java 继承 意义_Java中继承,类的高级概念的知识点
  2. C# winform WebBrowser怎么获取js中的变量的值?怎么触发js的事件?
  3. matlab的离散求导,高手留步:MATLAB五阶拟合函数,求导后离散化,输出结果是星号...
  4. 成为奥运冠军需要天赋和努力
  5. Linux系统服务及其创建详解(service/chkconfig)
  6. 电脑维修之——启动错误时的解决办法
  7. windows 查看ttf字体
  8. 微信小程序位置定位php,【微信开发】微信小程序通过经纬度计算两地距离php代码实现...
  9. 从零开始学WEB前端——VUE介绍
  10. 漏洞扫描工具AppScan下载网盘
  11. 计算机基础a3知识点,《计算机应用基础》期末试卷A(A3版).doc
  12. Unity 2D Animation(2D动画)学习
  13. Windows XP下如何清理日志文件
  14. C++ Reference: Standard C++ Library reference: C Library: cstdio: fprintf
  15. windows下更改中文用户名为英文
  16. JavaScript小练习-计算银行卡余额案例
  17. Solidworks2017安装遇到问题:前一个安装中的Windows重启操作正在等待处理。
  18. 有生之年转ta系列2.1色彩空间
  19. 字符串什么时候用单引号,什么时候用双引号?
  20. 解锁华为NFC多种高科技玩法

热门文章

  1. Socket编程入门(一)实现简单的Socket实例
  2. vue日历插件vue-calendar
  3. 群体智能优化算法之粒子群优化算法
  4. pyinstaller编译出的exe被杀毒软件认为是木马
  5. 中了计算机病毒改怎么办,计算机中病毒了怎么办?清除计算机病毒方法有哪些...
  6. 如何在百度文库复制文字
  7. 驱动人生病毒清除教程
  8. Gantt - attachEvent事件监听 - 一个参数事件
  9. 鸿蒙大陆7.1正式版隐藏英雄,守塔V7.01下载 守塔V7.01正式版 附游戏攻略及隐藏英雄密码 魔兽防守地图 下载-脚本之家...
  10. 仿macos风格的windows11桌面(适用win10,win11,齐全模板与配件,及相关问题解决方案)