obter o conteúdo original de um pdf assinado com itextsharp

Estou tentando obter o documento original de um PDF assinado para comparar o hash com um documento armazenado.

Isso é realmente fácil quando o documento tem várias assinaturas, com o acrobat reader você pode ir a revisão anterior do documento salvá-lo e é isso.

Surpreendentemente, isso não funciona com a primeira assinatura, em que não há uma maneira direta de obter os dados originais.

Como não é possível fazê-lo com o leitor, tentei programaticamente com o iTextSharp. No entanto, embora eu tenha pesquisado profundamente, não encontrei como fazê-lo. O único post relevante que encontrei é este1 mas nenhuma solução é oferecida.

Alguém já enfrentou esse problema e encontrou uma solução?

Desde já, obrigado.

EDIT: eu coloquei aqui o código que extrai os dados com base na resposta do mkl. Leia os comentários da resposta para tomar cuidado com o problema com o tamanho não corrigido dos PDFs não assinados.

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);

questionAnswers(1)

yourAnswerToTheQuestion