2010-08-13 8 views
5

Creare un semplice documento PDF di prova utilizzando iTextSharp. Sto solo usando PdfContentByte per mostrare del testo. Questo è il codice:PDF semplice creato con iTextSharp non può essere aperto da Acrobat Reader?

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(); 

Il file viene creato, ma quando provo ad aprirlo (utilizzando Acrobat Reader), tutto quello che ottiene è seguente messaggio:

C'è stato un errore l'apertura di questo documento . Si è verificato un problema durante la lettura del documento (14).

Dove è il problema? Come lo aggiusto? Grazie

+0

Qualche idea? Immagino che questa sia solo una cosa molto semplice, qualcosa come il mio errore molto stupido ma non riesco a vederlo ... – drasto

+1

Ho eseguito il tuo codice e non ho ricevuto alcun errore, quale versione di ITextSharp stai usando? – dada686

+0

Neanche quando provi ad aprire il file generato ?? Non ricevo errori quando eseguo il codice C#, solo quando apro il file generato. – drasto

risposta

3

Il problema è stato risolto dopo il riavvio di VS. Non è stato effettuato alcun cambio di codice.

2

io non riesco a replicare il problema incontrato, ma si prega di tener conto di potenziali perdite di risorse a causa di situazioni eccezionali che si possono incontrare e correttamente Dispose() questi oggetti in quanto tali:

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(); 
     } 
    }