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

使用itext生成的PDF文档将在Foxit中打开,但不会在Acrobat中打开,pdf,itextsharp,acrobat,foxit,Pdf,Itextsharp,Acrobat,Foxit,我的应用程序正在使用itext#生成PDF文档。文件在Foxit Reader中可以正常打开并正确显示,但在Adobe Acrobat中会出现以下错误: There was an error processing page. There was a problem reading this document (109). 为什么文件会在其中一个区域打开,而不是在另一个区域打开?一些pdf阅读器在不同的区域比其他阅读器更宽容。Foxit可能会忽略pdf中不支持的部分。不同版本的《杂技演员》会被不

我的应用程序正在使用itext#生成PDF文档。文件在Foxit Reader中可以正常打开并正确显示,但在Adobe Acrobat中会出现以下错误:

There was an error processing page. There was a problem reading this document (109).

为什么文件会在其中一个区域打开,而不是在另一个区域打开?

一些pdf阅读器在不同的区域比其他阅读器更宽容。Foxit可能会忽略pdf中不支持的部分。不同版本的《杂技演员》会被不同的东西噎住,只是为了混水。没有看到有问题的PDF,我们只能猜测。

这是我的代码:

        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();
添加行
document.Close()后
writer.Close()之前行,它现在显示在Foxit和Acrobat中


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

在writer.Close()导致程序崩溃之前添加行document.Close()。writer.Close()希望文档仍然可用。与itext书籍中的所有示例一样,请使用document.Close()。不需要PdfWriter.close(),并导致生成的pdf被破坏。在我的例子中,我将文档和PdfWriter都包装在子句中-我觉得某种类型的close可能会与隐式Dispose一起调用,结果是,在PdfWriter上-我去掉并移动了显式调用以Dispose,这两种调用都是针对文档和PdfWriter的,为了最终阻止-问题得到了解决,多亏了这个线程,当我删除writer.close()时它起了作用。谢谢,这很有帮助!此外,在Acrobat Reader中打开文档时,除了上面的消息外,当从服务器请求相关PDF时默认打开的Internet Explorer Acrobat Reader加载项/扩展查看器会给我以下消息(本地\有时更改后的代码):对象标签格式不正确。本地\EWH-1884-0