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:
O que é irritante é que nem sempre consigo reproduzir o erro. Alguém encontrou este problema?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
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;
}