Преобразование таблиц HTML со стилями в PDF в .NET 1.1

У меня есть коллеги, работающие над проектом .NET 1.1, где они получают файлы XML от внешней стороны и программно инструктируют iTextSharp для создания содержимого PDF на основе данных XML.

Сложность в том, что в этом XML есть сегменты произвольного содержимого HTML. Это HTML-код, который пользователи скопировали и вставили из своих приложений Office. По-прежнему выглядит нормально в веб-браузере, но когда этот HTML-код загружается в объект HTMLWorker iTextSharp для анализа и преобразования в объекты PDF, форматирование и выравнивание выполняются повсюду в сгенерированном документе PDF. Например.

<span id="mceBoundaryType" class="portrait"></span>
<table border="0" cellspacing="0" cellpadding="0" width="636" class="MsoNormalTable"
    style="margin: auto auto auto 4.65pt; width: 477pt; border-collapse: collapse">
    <tbody>
        <tr style="height: 15.75pt">
            <td width="468" valign="bottom" style="padding-right: 5.4pt; padding-left: 5.4pt;
                padding-bottom: 0in; width: 351pt; padding-top: 0in; height: 15.75pt; background-color: transparent;
                border: #ece9d8">
                <p style="margin: 0in 0in 0pt" class="MsoNormal">
                    <font face="Times New Roman">&nbsp;</font></p>
            </td>
            <td colspan="3" width="168" valign="bottom" style="padding-right: 5.4pt; padding-left: 5.4pt;
                padding-bottom: 0in; width: 1.75in; padding-top: 0in; height: 15.75pt; background-color: transparent;
                border: #ece9d8">
                <p style="margin: 0in 0in 0pt; text-align: center" class="MsoNormal" align="center">
                    <u><font face="Times New Roman">Group</font></u></p>
            </td>
        </tr>

Теги полны атрибутов стиля, а iTextSharp не поддерживает CSS и интерпретацию этого атрибута. Какие альтернативы пытались обойти другие пользователи iTextSharp или другие возможные компоненты преобразования HTML в PDF?


person icelava    schedule 17.12.2008    source источник


Ответы (2)


Я нашел компоненты на основе .NET 2.0, такие как ExpertPDF и ABCpdf неплохо справляется с интерпретацией стилей CSS и правильным выравниванием таблиц в PDF. Прямо сейчас я предлагаю своим коллегам использовать отдельную веб-службу .NET 2.0, которая может использовать такие компоненты, которые будут проинформированы веб-приложением ASP.NET 1.1, чтобы продолжить и очистить сгенерированную веб-страницу, которая, по сути, является отчетом. в представлении HTML.

ОБНОВИТЬ:

Это ответ, так как это рекомендуемый подход, предлагаемый команде разработчиков.

person icelava    schedule 18.12.2008

У меня нет однозначных ответов, но я дам вам два направления для исследования, оба из которых я использовал раньше.

1 - используйте что-то вроде HtmlAgilityPack, чтобы очистить свой HTML - вы можете перемещаться по DOM и удалять стили и классы, что, очевидно, могло в определенной степени испортить компоновку. Мне непонятно, нужно ли вам сохранять этот стиль или нет. Затем вы можете использовать iTextSharp или другую программу, например HtmlDoc (которая также не поддерживает CSS), чтобы рендерить в PDF. Мы написали простую оболочку с методом, который принимает URL, а затем вызывает Htmldoc для создания PDF-файла. .

2 - визуализируйте HTML на стороне сервера с помощью элемента управления WebBrowser, сгенерируйте из него изображение, затем преобразуйте изображение в PDF с помощью PDFsharp или выбранную вами библиотеку. Очевидно, это не даст вам PDF-файлов, из которых вы можете искать или копировать текст. здесь для преобразования визуализированного страницу в изображение (примечание: вы можете получить изображения в полную высоту, а не только то, что вы видите без прокрутки).

Изменить: я не думаю, что элемент управления WebBrowser доступен в .NET 1.1.

person D'Arcy Rittich    schedule 17.12.2008
comment
Да, я тоже пробовал версию .NET 1.1 для HtmlAgilityPack, но в ней есть некоторые ошибки, которые удаляют разделы содержимого абзаца, которые мне нужно отладить в другой день. - person icelava; 17.12.2008
comment
Да, стиль должен быть сохранен для тегов HTML - они в первую очередь обеспечивают правильное выравнивание таблиц. Таким образом, их удаление - это то же самое, что и текущая ситуация, когда они игнорируются. - person icelava; 17.12.2008
comment
Что ж, если вы можете жить с изображениями в вашем PDF-файле, я предлагаю вариант 2. - person D'Arcy Rittich; 17.12.2008