Неправильный рендеринг при генерации PDF из HTML в Java - PullRequest
2 голосов
/ 11 марта 2019

Я пытаюсь преобразовать простой HTML в PDF, но стиль в моем браузере отличается от стиля в PDF. Я использую летающую тарелку-PDF v9.1.18. У вас есть идеи, почему?

вот как это выглядит в веб-браузере и как это выглядит в сгенерированном PDF: https://i.stack.imgur.com/MB7DB.jpg

Вот мой простой HTML-шаблон:

<html>

<head>
    <style>
        .aligned {
            vertical-align: bottom;
        }
        
        .colored {
            color: red;
            font-weight: bold;
        }
    </style>
</head>

<body>
    <table border="1" width="300px" height="300px">
        <tr>
            <td>1</td>
            <td>2</td>
        </tr>
        <tr>
            <td>3</td>
            <td class="colored">4</td>
        </tr>
        <tr>
            <td>5</td>
            <td class="aligned">6</td>
        </tr>
    </table>
</body>

</html>

1 Ответ

1 голос
/ 11 марта 2019

Из документов:

Нет поддержки устаревшего или "уличного" HTML, хотя есть несколько доступных очистителей Java с открытым исходным кодом HTML различного качества.Мы визуализируем правильно сформированный XML;XHTML - это правильно сформированный XML-документ, который использует специальный набор тегов.Мы не можем рендерить большую часть HTML "в дикой природе".В лучшем случае вы можете «очистить» старый HTML с помощью TagSoup или JTidy или подобной библиотеки и надеяться на лучшее.Но без большой работы вы не сможете использовать Flying Saucer в качестве реального компонента веб-браузера.Однако обратите внимание, что это не техническое ограничение, а просто нехватка времени и ресурсов.

Атрибут "height" тега TABLE вообще является стандартным, я полагаю, что летающая тарелка его игнорирует.

См., Например, Установка высоты таблицы в HTML не имеет никакого эффекта

...