我的应用程序是使用itext#生成PDF文档 . 文件打开正常并在Foxit Reader中正确显示,但在Adobe Acrobat中它出错:
There was an error processing page. There was a problem reading this document (109).
为什么文件在一个文件中打开而另一个文件不打开?
这是我的代码:
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();
在 writer.Close(); 行之前添加 document.Close(); 行后,它现在显示在Foxit和Acrobat中 .
writer.Close();
document.Close();
我想使用itext#的关键是要非常小心对象是否正确关闭 . 这可能反映出它是一个移植的库,而不是从头开始为.NET构建的库 .
一些pdf阅读器在各个领域比其他阅读器更宽容 . Foxit可能会忽略它不支持的pdf中的位 . 不同版本的杂技演员窒息不同的东西,只是为了浑水 . 如果没有看到有问题的PDF,我们所拥有的只是猜测 .
2 回答
这是我的代码:
在
writer.Close();
行之前添加document.Close();
行后,它现在显示在Foxit和Acrobat中 .我想使用itext#的关键是要非常小心对象是否正确关闭 . 这可能反映出它是一个移植的库,而不是从头开始为.NET构建的库 .
一些pdf阅读器在各个领域比其他阅读器更宽容 . Foxit可能会忽略它不支持的pdf中的位 . 不同版本的杂技演员窒息不同的东西,只是为了浑水 . 如果没有看到有问题的PDF,我们所拥有的只是猜测 .