Документ PDF, созданный с использованием itext #, открывается в Foxit, но не в Acrobat - PullRequest
3 голосов
/ 10 ноября 2010

Мое приложение генерирует документы PDF с использованием itext #. Файлы открываются нормально и отображаются правильно в Foxit Reader , но в Adobe Acrobat ошибки с:

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

Почему файл открывается в одном, а не в другом?

Ответы [ 2 ]

6 голосов
/ 10 ноября 2010

Это был мой код:

        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 с нуля.

2 голосов
/ 10 ноября 2010

Некоторые читатели PDF более терпимы в различных областях, чем другие.Foxit, вероятно, игнорирует биты в PDF, которые он не поддерживает.Разные версии акробата давятся разными вещами, просто чтобы мутить воду.Не видя рассматриваемого PDF-файла, все, что у нас есть, это догадки.

...