HTMLWorker.parseToList игнорирует цвет фона

#java #pdf-generation #itext

#java #генерация pdf #itext

Вопрос:

Я использую java i text для генерации pdf. Некоторые данные в моем pdf взяты из html. Я использую HTMLWorker.parseToList для его создания.

Моя проблема в том, что он игнорирует цвет фона, который записан внутри html-тегов. Есть идеи, почему? Как я могу это решить?

Заранее спасибо.

Комментарии:

1. Какую версию iText вы используете? Как вы настраиваете цвет фона?

2. @Mark Storer: я использую itext 5.0.6 , и я не устанавливаю фон, текст, который я хочу создать в pdf, — это текст, который я получаю из текстового редактора tinymce.

3. Хорошо… позвольте мне попробовать еще раз: как определяется цвет фона в первую очередь?

4. @Mark Storer: Фон определяется следующим образом: «background: #ff9900;» . Я не могу контролировать, как он определяется — текстовый редактор генерирует его автоматически.

Ответ №1:

Пятнистая поддержка CSS снова поражает.

В настоящее время iText не поддерживает backgroundcolor стиль. Однако он поддерживает bgcolor атрибут, а атрибуты и стили отображаются в одно и то же пространство имен.

Поэтому, если вы выполняете XSLT входящий HTML-код, вы можете добавить соответствующий атрибут bgcolor или просто изменить строку стиля на bgcolor .

Некрасиво, но эффективно.


Предполагается, что код преобразования iText в HTML-> PDF получит серьезное обновление в следующем выпуске. Основа была заложена в выпуске 5.0.6, хотя я пока не видел никаких изменений в коде, которые действительно улучшили бы результат.

Комментарии:

1. спасибо за вашу помощь. я заменил все версии «backgroundcolor» в своем html-коде и изменил его на «bgcolor» , но у меня это все еще не работает — я не вижу фона в сгенерированном pdf.. Есть идеи?

2. Я попробовал только этот текст, и он также не сработал : text = «<span style=»bgcolor: #ffff00;»> Выделенная информация</span>»; «я что-то делаю н е так? как я должен это нап исать? спасибо.

3. Единственный оставшийся реальный вариант — получить исходный код и выполнить его пошаговое выполнение. Удачной охоты.

4. По-прежнему нет поддержки цвета фона 🙂

Ответ №2:

Он работает с bgcolor при использовании в качестве прямого атрибута (но не в атрибуте style с «background-color»)

 <table border="1" cellpadding="2">
  <tr bgcolor="#C0C0C0">
    <td><b>Gray Header</b></td>
    <td><b>Second header</b></td>
  </tr>
  <tr>
    <td style="color:green">Green text</td>
    <td bgcolor="#FFC0C0">Red background</td>
  </tr>
</table>
  

Ответ №3:

Я попробовал приведенный ниже обходной путь, и он отлично работает для меня.

 .tr-bg{
        background-color: #D3D3D3;
      }
  

И используйте этот класс для требуемого элемента dom.