【发布时间】:2013-03-31 15:42:24
【问题描述】:
我正在尝试获取签名 PDF 的原始文档,以便将其哈希值与存储的文档进行比较。
当文档有多个签名时,这真的很容易,使用 acrobat reader 你可以去文档的上一个版本保存它,就是这样。
令人惊讶的是,这不适用于第一个签名,因为没有直接的方法来获取原始数据。
由于无法通过阅读器来完成,我已尝试使用 iTextSharp 以编程方式进行操作。但是,尽管我已经深入搜索,但我还没有找到如何做到这一点。我找到的唯一相关帖子是 one,但没有提供解决方案。
有没有人遇到过这个问题并找到了解决方案?
提前致谢。
编辑:我将根据 mkl 的响应提取数据的代码放在这里。阅读响应的 cmets 以提防未签名 PDF 长度不固定的问题。
String sOriginalText = File.ReadAllText("FileSigned.pdf", Encoding.Default);
int sTrailerNumberPosition = sOriginalText.LastIndexOf("]/Prev ") + "]/Prev ".Length;
int sTrailerNumberEndPosition = sOriginalText.IndexOf(">", sTrailerNumberPosition);
String sTrailerIndex = sOriginalText.Substring(sTrailerNumberPosition, sTrailerNumberEndPosition -sTrailerNumberPosition);
int iTrailerIndexPosition = sOriginalText.IndexOf(sTrailerIndex + "\r\n%%EOF");
int iEndPosition = sOriginalText.IndexOf("%%EOF", iTrailerIndexPosition) + "%%EOF".Length;
String sOutText = sOriginalText.Substring(0, iEndPosition);
File.WriteAllText("c:/OriginalFile.pdf", sOutText, Encoding.Default);
【问题讨论】:
标签: .net pdf itextsharp itext digital-signature