c# - lowagie - itextsharp pdf
Excepción de iTextSharp: firma de encabezado de PDF no encontrada (1)
Estoy usando iTextSharp
para leer el contenido de los documentos PDF :
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();
}
El 99% del tiempo funciona bien. Sin embargo, existe este archivo PDF que a veces lanzará esta excepción:
Firma del encabezado PDF no encontrada. StackTrace: en iTextSharp.text.pdf.PRTokeniser.CheckPdfHeader () en iTextSharp.text.pdf.PdfReader.ReadPdf () en iTextSharp.text.pdf.PdfReader..ctor (String filename, Byte [] ownerPassword) en Reader.PDF .DownloadPdf (String url) en C: / Documents / Visual Studio
Lo que es molesto es que no siempre puedo reproducir el error. A veces funciona, a veces no funciona. ¿Alguien ha encontrado este problema?
Después de algunas investigaciones, descubrí que este problema se relaciona con la corrupción de un archivo durante la generación de PDF o con un error relacionado con un objeto del documento que no cumple con el estándar de PDF implementado en iTextSharp. También parece suceder solo cuando lees un archivo PDF desde el disco.
No he encontrado una solución completa al problema, sino solo una solución alternativa. Lo que he hecho es leer el documento PDF utilizando el objeto itextsharp de PdfReader y ver si ocurre un error o excepción antes de leer el archivo en una operación normal.
Entonces ejecutando algo similar a esto:
private bool IsValidPdf(string filepath)
{
bool Ret = true;
PdfReader reader = null;
try
{
reader = new PdfReader(filepath);
}
catch
{
Ret = false;
}
return Ret;
}