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