Документ PDF, созданный с использованием itext#, открывается в Foxit, но не в Acrobat
Мое приложение генерирует документы PDF с использованием itext#. Файлы открываются и отображаются правильно в Foxit Reader, но в Adobe Acrobat это ошибки с:
There was an error processing page. There was a problem reading this document (109).
Почему файл открывается в одном, а не в другом?
2 ответа
Это был мой код:
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 с нуля.
Некоторые читатели PDF более терпимы в различных областях, чем другие. Foxit, вероятно, игнорирует биты в PDF, которые он не поддерживает. Разные версии акробата давятся разными вещами, просто чтобы мутить воду. Не видя рассматриваемый PDF, все, что у нас есть, это догадки.