Преобразование загруженных таблиц HTML-таблиц в PDF в .NET 1.1 - PullRequest
1 голос
/ 17 декабря 2008

У меня есть коллеги, работающие над проектом .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>

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

Ответы [ 2 ]

1 голос
/ 18 декабря 2008

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

UPDATE:

Это ответ, так как это рекомендуемый подход, предоставленный команде приложения.

0 голосов
/ 17 декабря 2008

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

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

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

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

...