2010-08-13 101 views
5

Creo un documento PDF de prueba simple usando iTextSharp. Solo estoy usando PdfContentByte para mostrar algo de texto. Este es el código:PDF simple creado con iTextSharp no puede ser abierto por 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(); 

Se crea el archivo, pero cuando trato de abrirlo (usando Acrobat Reader), todo lo que se obtiene es el siguiente mensaje:

Hubo un error al abrir este documento . Hubo un problema al leer este documento (14).

¿Dónde está el problema? ¿Cómo lo arreglo? Gracias

+0

¿Alguna idea? Supongo que esto es algo muy fácil, algo así como mi muy estúpido error, pero no puedo verlo ... – drasto

+1

He ejecutado tu código y no he recibido ningún error, ¿qué versión de ITextSharp estás usando? – dada686

+0

¿Ni siquiera cuando intenta abrir el archivo generado? No obtengo el error cuando ejecuto el código C#, solo cuando abro el archivo generado. – drasto

Respuesta

3

El problema se solucionó después de reiniciar VS. No se realizó ningún cambio de código.

2

Me parece que no puede replicar el problema que está encontrando, pero por favor tener en cuenta las posibles fugas de recursos debido a las condiciones excepcionales que pueden surgir y adecuadamente Dispose() esos objetos tales como:

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