使用iTextSharp创建的简单PDF无法由Acrobat Reader打开?

使用iTextSharp创建的简单PDF无法由Acrobat Reader打开?

问题描述:

我使用iTextSharp创建简单的测试PDF文档。我只是使用PdfContentByte来显示一些文本。这是代码:使用iTextSharp创建的简单PDF无法由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(); 

被创建的文件,但是当我尝试打开它(使用Acrobat Reader软件),我得到的是以下信息:

时出错打开此 文件。阅读 本文档(14)时出现问题。

问题在哪里?我如何解决它?谢谢

+0

有什么建议吗?我想这只是非常简单的事情,就像我非常愚蠢的错误,但我只是不能看到它... – drasto 2010-08-13 12:56:38

+1

我跑你的代码,并没有得到任何错误,你使用的是哪种版本的ITextSharp? – dada686 2010-08-13 12:59:56

+0

甚至当试图打开生成的文件?当我运行C#代码时,我不会收到错误,只有当我打开生成的文件时。 – drasto 2010-08-13 13:03:11

重新启动VS后问题解决了。没有更改代码。

我似乎无法复制您遇到的问题,但请考虑到资源的潜在泄漏,由于可能遇到的特殊情况,妥善Dispose()这些对象为这样:

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