java - iText 删除签名(扁平化过程)但保留其视觉表示

标签 java pdf itext signature

我使用以下链接中的函数删除了 pdf 中的所有签名。

iText Remove signatures

我得到的是一个没有签名的 pdf 文件,但在 pdf 内容中包含了它们的视觉表示。是否有一个功能也可以删除视觉表示?

我需要这个,因为我想计算原始 pdf 的哈希值。谢谢!

最佳答案

您声称:我使用以下链接中的此函数删除 PDF 中的所有签名,但该示例并不是要删除签名,而是旨在扁平化签名(该示例称为FlattenSignatures)。

扁平化意味着签名字段删除(签名消失了),但相应的小部件注释(视觉表示为你称之为)被保留。

如果要删除签名字段及其小部件注释,则需要删除该字段:

PdfReader reader = new PdfReader(src); 
AcroFields acroFields = reader.getAcroFields(); 
acroFields.removeField("my_signature_name"); 
PdfStamper stamper = new PdfStamper(reader, dest); 
stamper.close(); 
reader.close(); 

但是,您声称​​我需要这个,因为我想计算原始 pdf 的哈希值。这是完全错误的。删除签名不会生成原始 PDF!

如果您想验证签名,您应该按照签名字典中的定义从 PDF 中提取字节范围。请参阅Verifying digital signatures in PDF documents 。请注意,您之前曾问过这个问题,并且已经得到了充分的回答:iText verify integrity of a pdf in java .

除非在附加模式中添加签名(如果我是您,我不会假设),您将无法获得原始 PDF。您知道签名是否是在附加模式下添加的吗?如果是这样,请将此信息添加到您的问题中。

关于java - iText 删除签名(扁平化过程)但保留其视觉表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43918188/

相关文章:

html - CHM 或 HTML -> PDF,保留 HTML 链接?

c# - 如何传递毫米中可用的矩形大小以使用 iTextsharp 创建文档

split - ItextSHARP 表拆分问题

vb.net - 更改pdfptable的字体大小

Java RMI : setup-method returns immediatly and RMI threads aren't created

java - Bean 验证字符串的集合不为空

java - 为什么返回值与我尝试调用的值不同?

pdf - 如何在 Microsoft Word 2010 文档中添加隐藏文本(隐藏剧透)按钮

java - 'APPLICATION_JSON' 和 'APPLICATION_JSON_VALUE' 之间的区别

c# - ITextSharp SetVisibleSignature 未按预期工作