ハッシュを保存されたドキュメントと比較するために、署名された PDF の元のドキュメントを取得しようとしています。
ドキュメントに複数の署名がある場合、これは非常に簡単です。acrobat リーダーを使用すると、ドキュメントの以前のリビジョンに移動して保存することができます。
驚くべきことに、これは、元のデータを取得するための簡単な方法がない最初の署名では機能しません。
リーダーでそれを行うことはできないため、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);