iTextSharp创建的简单PDF无法被Acrobat Reader打开?

5

我使用iTextSharp创建简单的测试PDF文档。我只是使用PdfContentByte来显示一些文本。以下是代码:

    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)。”
问题出在哪里?如何解决?谢谢。

有什么想法吗?我猜这只是一些非常简单的东西,就像我的愚蠢错误一样,但我就是看不到它... - Rasto
1
我运行了你的代码,没有出现任何错误,你使用的ITextSharp版本是哪个? - dada686
当我尝试打开生成的文件时,我没有收到C#代码运行时的错误提示,只有在打开生成的文件时才会出现错误。 - Rasto
不,它在底部完美地显示了“aaa”。 - dada686
@dada686:奇怪...是什么原因呢?我会尝试删除文件并重新启动VS,然后再次运行并生成PDF。 - Rasto
2个回答

3

重新启动VS后问题得到解决。未进行任何代码更改。


2

我似乎无法复制您遇到的问题,但请考虑由于任何异常情况可能导致资源泄漏,因此请适当地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();
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接