Документ 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, все, что у нас есть, это догадки.

Другие вопросы по тегам