当前位置: 首页 > 知识库问答 >
问题:

itext 7:保存数字签名文档(java)时出现问题

茅才
2023-03-14

我有一个经过数字签名的文档,当从第一个文档创建新文档时,它会丢失签名,这里我显示了代码:

    String src = "C:\\sign\\testpdf\\signed_document.pdf";
    String dest = "C:\\sign\\testpdf\\modified_document.pdf";
    PdfReader pdfReader = new PdfReader(src);
    PdfWriter pdfWritter = new PdfWriter(dest);
    PdfDocument pdf2 = new PdfDocument(pdfReader, pdfWritter);
    pdf2.close();
 

有没有办法让新文件保持签名?谢谢

编辑:签名出现在新文档上,但显示为“未知”。也就是说,签名人的姓名不会出现

共有1个答案

连德义
2023-03-14

要对已签名的PDF应用更改并保持签名的加密有效性,必须创建增量更新。在iText行话中,这意味着使用append模式。在iText 7中,通过相应地指定戳记属性来使用追加模式:

java prettyprint-override">PdfDocument pdf2 = new PdfDocument(pdfReader, pdfWritter, new StampingProperties().useAppendMode());

注意,你只允许对签名的PDF应用一小部分更改,请阅读以下答案。

 类似资料:
  • 我一直在网络和java教程中寻找这一点。但我没有澄清如何为文档生成数字签名。java教程对此进行了解释,但我真正想要的是 用户附带一个文件和一个字符串密钥 使用该密钥,文件被数字签名 相应的公钥,该标志与该文档一起发布 那么,如何转换给定的String私钥来做到这一点。在尝试java教程和web中给出的示例(带有将字节从字符串而不是文件中放置的一些变体)时,我遇到了如下异常

  • 我试图对pdf文件进行签名,但在Adobe中打开签名的pdf文件时,遇到“文档自签名后已被更改或损坏”错误。 这个错误不是那么描述性的,我不确定应该在哪里查看,因为代码对我来说似乎很好,但显然不是。。 我使用的代码是: 签名的哈希的Base64格式为(tmp文件sha_前缀): 签名(AMA)的Base64格式为: 有人能帮忙吗?

  • 我希望我们拥有iPhone的员工能够让公众对一份文件进行数字签名,该文件最初是基于Spring的网络表单。 此表格仅在我们的内部网上,仅由我们的员工填写。 到目前为止,我的研究考虑了一些可能的解决方案: 手机屏幕上的电子湿墨水签名 目的是证明某个人签署了一份文件。 1从技术上讲是可能的,但并不重要,因为它很容易被复制。 是否可以在iOS设备上通过浏览器和javascript捕获指纹? 3能适应这种

  • 我在这里读到了关于saveIncremental是如何工作的,我的最终结果需要类似于这里,我已经成功地基于签名字段本身创建了具有多重可视化的可见签名(与响应中的情况不同,但响应对我帮助很大)。为了详细说明标题,我目前的基本任务是在已经签名的文档上创建一个空签名字段,而不中断现有签名。但是,这里的示例不适用于saveIncremental。我在主函数的末尾添加了以下片段(改编),但没有结果: 生成的

  • 问题内容: 我有一个将文件保存到gridfs的功能。重构后,它以某种方式停止工作,我花了两个多小时呆呆地盯着它。我发誓它与以前大致相同。我似乎记得起初在添加内容之前它不起作用,然后开始起作用,但这可能是失眠。从本质上讲,问题在于db.fs.files集合没有任何记录,但是将块添加到db.fs.chunks中。 数据 是通过fs.readFile()从磁盘加载的缓冲区 问题答案: 有两种解决方案。您