getRangeStream不是从PdfSignatureAppearance重构为PdfSigner的唯一方法,并以此方式受到保护.其他方法也存在同样的问题,例如preClose和close,它们也是用于PDF文档的数字签名的PreSign和PostSign servlet中使用的方法,您似乎使用这些方法或者至少借用代码.

正如我所说,这已经完成,使iText 7用户使用signDeferred,signDetached和signExternalContainer方法,这些方法通常足以签署应用程序并“正确执行”,即使用另一种,现在不再使用公共方法了这会创建有效的签名.

不幸的是,PreSign和PostSign servlet不能使用这三种方法,它们实际上就像signDetached代码被分成两半,相关的局部变量存储在HTTP会话中.

因此,您基本上有两个选择:

尽管如此,请使用受保护的方法

除非我忽略了某些内容,否则甚至可以通过从PdfSigner派生自己的签名者类并使这些方法和可能的成员变量再次公开访问来完成;乍一看使用反射魔法似乎没有必要.

更改PreSign和PostSign servlet体系结构

如果您可以从保留内存中的签名相关对象(通过HTTP会话引用)切换到仅将中间PDF文件保存在内存中甚至磁盘上,并且可能是内存中的半成品签名容器,您可以这样继续:

>使用带有IfternalSignatureContainer实现的PdfSigner.signExternalContainer“签署”PDF的servlet替换PreSign servlet,该实现仅提供虚拟签名,例如:新字节[0].

此IExternalSignatureContainer检索所寻找的范围流作为其sign方法的参数,因此它可以计算范围流哈希.

现在,带有虚拟签名的PDF可以保存到磁盘或保存在内存中.并且基于范围流哈希,您可以像以前一样继续构建和提供PdfPKCS7实例.并将其保存在内存中,例如从HTTP会话引用.

>用一个servlet替换PostSign servlet,该servlet在完成PdfPKCS7实例的送入之前生成一个CMS签名容器.然后使用PdfSigner.signDeferred方法将此容器注入已保存的PDF.

或者,您甚至可以将整个CMS签名容器创建移动到客户端.在这种情况下,所有会话必须记住中间PDF存储的位置…

java流方式接收pdf_java – 在Itext 7中,如何获取范围流来签署pdf?相关推荐

  1. vue获取input的属性_Vue中自动获取input焦点

    1.给input属性添加autofocus属性,缺点autofocus 在移动版 Safari 上不工作 2.Vue官网给出的解决办法 // 注册一个全局自定义指令 `v-focus` Vue.dir ...

  2. java接收并存储文件_客户端读取本地文件的数据,发送到服务器,服务器接收并存储到文件中...

    只实现了传送文件的功能. 编写Socket客户端和服务器程序,客户端读取本地文件的数据,发送到服务器,服务器接收并存储到文件中. 消息格式: 字段 长度(单位字节) 内容 -------------- ...

  3. java io使用哪些设计模式_JAVA IO中的设计模式

    在java语言 I/O库的设计中,使用了两个结构模式,即装饰模式和适配器模式. 在任何一种计算机语言中,输入/输出都是一个很重要的部分.与一般的计算机语言相比,java将输入/输出的功能和使用范畴做了 ...

  4. java中什么方法用来清空流_这个真的写的很细,JavaIO中的常用处理流,看完只有10%的人还不懂了...

    JavaIO中的常用处理流 在前面,我们了解了有关JavaIO流基础的使用,其中对于IO流来说最基础的四大基类就是InputStream.OutputStream.Reader.Writer.而我们对 ...

  5. java读取gxk文件,Java中常见的IO流及其使用

    Java中IO流分成两大类,一种是输入流,所有的输入流都直接或间接继承自InputStream抽象类,输入流作为数据的来源,我们可以通过输入流的read方法读取字节数据:另一种是输出流,所有的输出流都 ...

  6. java.util.stream_java.util.stream.Stream 接口中的常用方法

    流模型的操作很丰富,下面介绍一些常用的API.这些方法可以被分成两种: 延迟方法 返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用.(除了终结方法外,其余方 法均为延迟方法.) 终 ...

  7. java发送接收UDP数据包:字符串,byte[]字节数组,文件等

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java发送接收UDP数据包,数据内容为byte[],包括一切可以转换为byte[]的内容. 测试代码 public static void ma ...

  8. java 汉字个数_java语言中如何获取字符串中汉字的个数

    java语言中如何获取字符串中汉字的个数? [实例描述] 字符串中可以包含数字,字母.汉字或者其他字符.使用Character 类的isDigit()方法可以判断字符中的某个字符是否为数字,使用Cha ...

  9. j1_12_01.实现手机号计数功能关键算法.传入字符串数组,获取符合手机号格式的字符串.从键盘接收一行字符串,字符串中只包含数字和空格,统计其中所有的手机号码数量。

    import java.util.Scanner;/*** 任务一:实现手机号计数功能关键算法并绘制流程图(30 分) 从键盘接收一行字符串,字符串中只包含数字和空格,统计其中所有的手机号码数量. 比 ...

最新文章

  1. oracle Hash Join及三种连接方式
  2. mdb导入SqlServer
  3. 解决JS浮点数(小数)计算加减乘除的BUG
  4. mysql5.6 优点_MySQL5.6复制:GTID的优点和限制(第一部分)_MySQL
  5. springboot 物联网_Confluent Kafka,KSQL,Spring Boot和分布式SQL开发物联网实战
  6. 东方PHP授权系统修复版盗版检测源码
  7. 从王者荣耀看设计模式(一.策略模式)
  8. 模二多项式环 及 BCH码 的纯python实现和一些问题
  9. mysql 父子关系查询_如何让MySQL中单句实现无限层次父子关系查询
  10. IT精英《非诚》引论战 泰国帅哥转角遇到爱
  11. 优化 ASP 应用程序和 VBScript 的技巧。
  12. Liunx学习笔记 - 07 - 02 正则表达式与文件格式化处理
  13. 图文详解 Windows 2003服务器集群安装(5)(完)
  14. HTTPS 方式访问网站
  15. 有关智能操作系统的讨论
  16. 冯诺依曼体系结构、操作系统的认识
  17. 开源夏令营《基于HackRF开发GPS信号仿真模拟器》开题报告
  18. java ocr技术原理_Java OCR 图像智能字符识别技术,可识别中文
  19. 原生微信小程序开发-黑马优购(一)
  20. Pycharm无法导入第三方库终极解决方法!!!

热门文章

  1. 这里天刚黑,而家里都已经后半夜了
  2. 函数不可访问_C++之访问控制与继承
  3. 4.4 为什么使用深层表示-深度学习-Stanford吴恩达教授
  4. STM32 基础系列教程 34 - Lwip_tcp_server
  5. 【PC工具】推荐11个在四大使用场景中的常用工具,按场景总结常用电脑工具软件,常用办公工具软件...
  6. 一次犹豫不决策略选择
  7. 5.MATLAB路径管理
  8. 计算机网络·详解TCP流量控制,拥塞控制,运输连接管理
  9. linux (ubuntu) 命令学习笔记
  10. 新书发布《每天5分钟玩转Docker容器技术》