使用itext#生成的PDF文档在Foxit中打开,但不在Acrobat中打开

Gid*_*sey 3 pdf acrobat itextsharp foxit

我的应用程序是使用itext#生成PDF文档.文件打开正常并在Foxit Reader中正确显示,但在Adobe Acrobat中它出错:

There was an error processing page. There was a problem reading this document (109).
Run Code Online (Sandbox Code Playgroud)

为什么文件在一个文件中打开而另一个文件不打开?

Gid*_*sey 6

这是我的代码:

        var document = new Document(_pageSize, PageMargin, PageMargin, PageMargin, PageMargin);
        var writer = PdfWriter.GetInstance(document, output);
        writer.CloseStream = false;
        writer.PageEvent = new Footer(HeaderFont, _defaultFont.BaseFont, report.Name);
        document.Open();

        if (report.Results.Any())
            document.Add(CreateTable(report.Results, report.Types, report.RootType));
        else
            document.Add(new Paragraph("No results", _defaultFont));

        writer.Close();
Run Code Online (Sandbox Code Playgroud)

在行document.Close();之前添加writer.Close();行后,它现在在FoxitAcrobat中显示.

我想使用itext#的关键是要非常小心对象是否正确关闭.这可能反映出它是一个移植的库,而不是从头开始为.NET构建的库.

  • 正如在itext书中的所有例子中一样,使用Document.close().不需要PdfWriter.close(),导致生成的pdf损坏. (2认同)