2010-08-13 7 views
5

Ich erstelle einfache Test PDF-Dokument mit iTextSharp. Ich benutze nur PdfContentByte, um etwas Text anzuzeigen. Dies ist der Code:Einfaches mit iTextSharp erstelltes PDF kann nicht mit dem Acrobat Reader geöffnet werden?

Document document = new Document(); 
    Stream outStream = new FileStream("D:\\aaa\\test.pdf", FileMode.OpenOrCreate); 
    PdfWriter writer = PdfWriter.GetInstance(document, outStream); 
    document.Open(); 
    PdfContentByte to = writer.DirectContent; 
    to.BeginText(); 
    to.SetFontAndSize(BaseFont.CreateFont(), 12); 
    to.SetTextMatrix(0, 0); 
    to.ShowText("aaa"); 
    to.EndText(); 
    document.Close(); 
    outStream.Close(); 

Die Datei wird erstellt, aber wenn ich versuche, es zu öffnen (Acrobat Reader), alles, was ich bekommen ist folgende Meldung:

Es wurde ein Fehler dieses Dokument öffnen . Es gab ein Problem beim Lesen dieses Dokuments (14).

Wo ist das Problem? Wie repariere ich es? Danke

+0

Irgendwelche Ideen? Ich denke, das ist einfach etwas sehr Einfaches, etwas wie mein sehr dummer Fehler, aber ich kann es einfach nicht sehen ... – drasto

+1

Ich habe deinen Code ausgeführt und keinen Fehler bekommen, welche Version von ITextSharp benutzt du? – dada686

+0

Nicht einmal beim Versuch, die generierte Datei zu öffnen ?? Ich bekomme keinen Fehler, wenn ich C# -Code ausführen, nur wenn ich generierte Datei öffne. – drasto

Antwort

3

Problem wurde nach dem Neustart von VS gelöst. Es wurde keine Codeänderung vorgenommen.

2

Ich kann nicht scheinen, das Problem, das Sie stoßen, aber bitte beachten Sie, mögliche Leckagen von Ressourcen aufgrund irgendwelcher außergewöhnlichen Bedingungen zu replizieren Sie und richtig Dispose() diese Objekte als solche auftreten können:

using (Stream outStream = new FileStream("D:\\aaa\\test.pdf", FileMode.OpenOrCreate)) 
    { 
     Document document = new Document(); 
     PdfWriter writer = PdfWriter.GetInstance(document, outStream); 

     document.Open(); 
     try 
     { 
      PdfContentByte to = writer.DirectContent; 

      to.BeginText(); 
      try 
      { 
       to.SetFontAndSize(BaseFont.CreateFont(), 12); 
       to.SetTextMatrix(0, 0); 
       to.ShowText("aaa"); 
      } 
      finally 
      { 
       to.EndText(); 
      } 
     } 
     finally 
     { 
      document.Close(); 
     } 
    } 
Verwandte Themen