c# java - Eccezione iTextSharp:firma dell'intestazione del PDF non trovata





download dll (2)


Dopo alcune ricerche, ho scoperto che questo problema riguarda il danneggiamento di un file durante la generazione di PDF o 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.

Quindi, eseguendo 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;
}

Sto usando iTextSharp per leggere il contenuto dei documenti 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();
                }

Il 99% delle volte funziona perfettamente. Tuttavia, esiste questo unico file PDF che a volte genera questa eccezione:

Firma dell'intestazione del PDF non trovata. StackTrace: su iTextSharp.text.pdf.PRTokeniser.CheckPdfHeader () su iTextSharp.text.pdf.PdfReader.ReadPdf () su iTextSharp.text.pdf.PdfReader..ctor (nome file String, Byte [] ownerPassword) su Reader.PDF .DownloadPdf (String) in C: \ Documents \ Visual Studio

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




Mi dispiace, sono riuscito a trovare la risposta io stesso usando google e un po 'di fortuna:)

Per chi è interessato;

Ho installato il pdftk (pdf toolkit) sul nostro server debian e utilizzando il seguente comando ho ottenuto l'output desiderato:

pdftk file1.pdf file2.pdf cat output output.pdf

O

gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf file3.pdf ...

Questo a sua volta può essere convogliato direttamente in pdf2ps.





c# .net pdf itext