2012-05-16 23 views
13

sto usando iTextSharp per leggere il contenuto del PDF documenti:iTextSharp eccezione: PDF firma intestazione non trovato

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% del tempo funziona bene. Tuttavia, v'è questo unico file PDF che a volte lanciare questa eccezione:

PDF firma intestazione non trovato. StackTrace: a iTextSharp.text.pdf.PRTokeniser.CheckPdfHeader() in iTextSharp.text.pdf.PdfReader.ReadPdf() in iTextSharp.text.pdf.PdfReader..ctor (String nome del file, Byte [] OwnerPassword) a Reader.PDF.DownloadPdf (String url) in C: \ Documenti \ Visual Studio

Qual è fastidioso è che non riesco sempre riprodurre l'errore. A volte funziona, a volte no. Qualcuno ha riscontrato questo problema?

risposta

16

Dopo alcune ricerche, ho riscontrato che questo problema si riferisce a un file danneggiato durante la generazione di PDF o a un errore relativo a un oggetto nel documento non conforme allo standard PDF implementato in iTextSharp. Sembra anche che accada solo quando si legge da un file PDF dal disco.

Non ho trovato una soluzione completa al problema, ma solo una soluzione alternativa. Quello che ho fatto è leggere il documento PDF usando l'oggetto PdfReader itextsharp e vedere se si verifica un errore o un'eccezione prima di leggere il file in una normale operazione.

Così in esecuzione qualcosa di simile a questo:

private bool IsValidPdf(string filepath) 
{ 
    bool Ret = true; 

    PdfReader reader = null; 

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

    return Ret; 
} 
+4

Mi c'è voluto un po ', ma alla fine ho capito che il file è stato effettivamente danneggiato. La colpa va al sito Web che ha creato il PDF e non un bug con iTextSharp. Grazie per aver trovato il tempo di rispondere alla mia domanda. – broke

+2

Posso confermare che questo può verificarsi se si carica il lettore da un vapore e dal disco :) – JoshBerke

+1

Si è verificato che stavo guardando il file sbagliato nel mio caso. Il nome del file si riferiva a uno dei beni (immagini) che stavo usando in precedenza, cioè un jpg non è un pdf, doh :), quindi era in realtà un PDF corrotto (o non uno affatto). Grazie - mi ha fatto sulla strada giusta. –

Problemi correlati