excepção iTextSharp: a assinatura do cabeçalho PDF não foi encontrada

estou a utilizar iTextSharp para ler o conteúdo de PDF documentos:

  PdfReader reader = new PdfReader(pdfPath);

                using (StringWriter output = new StringWriter())
                {
                    for (int i = 1; i <= reader.NumberOfPages; i++)
                        output.WriteLine(PdfTextExtractor.GetTextFromPage(reader, i, new SimpleTextExtractionStrategy()));

                    reader.Close();
                    pdfText = output.ToString();
                }

99% da vez em que funciona muito bem. No entanto, há este arquivo PDF que às vezes vai lançar esta exceção:

a assinatura do cabeçalho PDF não foi encontrada. StackTrace: at é muito estranho.texto.documento.PRTokeniser.CheckPdfHeader () at é muito estranho.texto.documento.PdfReader.ReadPdf () at é muito estranho.texto.documento.PdfReader..ctor (nome do ficheiro de texto, Byte[] authorities (ownerPassword) at Leitor.DOCUMENTO.Transferadpdf (url do texto) em C:\Documents\Visual Studio

O que é irritante é que nem sempre consigo reproduzir o erro. Alguém encontrou este problema?

Author: developer_117, 2012-05-16

1 answers

Depois de alguma pesquisa, descobri que este problema se relaciona com um arquivo sendo corrompido durante a geração PDF, ou um erro relacionado a um objeto no documento que não está em conformidade com o padrão PDF como implementado no iTextSharp. Também parece acontecer apenas quando você lê a partir de um arquivo PDF do disco.

Não encontrei uma solução completa para o problema, mas apenas uma solução. O que eu fiz foi ler o documento PDF usando o objeto pdfreader itextsharp e ver se um erro ou exceção acontece antes de ler o arquivo em uma operação normal. Então executando algo semelhante a isto:
private bool IsValidPdf(string filepath)
{
    bool Ret = true;

    PdfReader reader = null;

    try
    {
        reader = new PdfReader(filepath);
    }
    catch
    {
        Ret = false;
    }

    return Ret;
}
 16
Author: Anonymous coward, 2012-05-20 19:50:59