получить оригинальное содержание PDF, подписанного с помощью itextsharp
пытаюсь получить оригинальный документ с подписанным PDF, чтобы сравнить егохэш с сохраненным документом.
Это действительно легко, когда документ имеет несколько подписей, с помощью Acrobat Reader вы можете перейти к предыдущей редакции документа, сохранить его и т. Д. 'сидеть.
Удивительно, но это не работает с первой подписью, где нет прямого способа получить исходные данные.
Поскольку это невозможно сделать с помощью ридера, я пробовал программно с iTextSharp. Однако, хотя я глубоко гуглил, я не нашел, как это сделать. Единственный соответствующий пост, который я нашел, этоодин но решение не предлагается.
Кто-нибудь сталкивался с этой проблемой и нашел решение?
Заранее спасибо.
РЕДАКТИРОВАТЬ: Я поместил здесь код, который извлекает данные на основе ответа MKL. Прочитайте комментарии к ответу, чтобы остерегаться проблемы с нефиксированной длиной не подписанных 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);