Можно ли изменить шрифт разбираемого HTML в IText? - PullRequest
0 голосов
/ 23 января 2019

Сначала позвольте мне рассказать об этой проблеме:

Я использую CKEditor для реализации некоторых полей расширенного текста в проекте, редактор включен через javascript и обрабатывает поля, создавая HTML, который правильно отображается браузером.

Задача состояла в том, чтобы включить таблицы, сгенерированные редактором, в PDF, я пробовал использовать Jasper Reports, но он работал не очень хорошо (проанализированный HTML не отображал таблицы и некоторые стили, созданные CKEditor).

Я протестировал IText, и он работал очень хорошо, я смог проанализировать таблицы и почти все стили CKEditor с помощью следующего кода:

CSSResolver cssResolver = new StyleAttrCSSResolver();
CssFile cssFile = XMLWorkerHelper.getCSS(new FileInputStream(new File(CKEDITOR_CSS_FILE));
cssResolver.addCss(cssFile);

HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());

PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);

XMLWorker worker = new XMLWorker(css, true);
htmlParser = new XMLParser(worker);

// Parsing the HTML generated by the editor
htmlParser.parse(new FileInputStream(HTML));

Он правильно учитывает CSS при разборе и выводит мне следующую таблицу:

enter image description here

Мой вопрос: Можно ли изменить шрифт анализируемого HTML-кода, чтобы использовать, например, шрифт меньшего размера или жирный шрифт?

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

1 Ответ

0 голосов
/ 25 января 2019

Я изменил свой подход и отказался от идеи включить CSS CKEditor в свой отчет.

Вместо этого я настроил свой собственный CSS для HTML, сгенерированного CKEditor, в конце у меня есть такая структура:

  1. Пользовательский CSS для моего отчета, содержащий все настройки и форматирование:

* {
  font-size: 13px;
  line-height: 20px;
}

table {
  border-collapse: collapse;
  width: 100%;
}

th, td {
  padding: 6px; 
}

table, th, td {
  border: 1px solid black;
}

th {
  font-weight: bold;
}

В результате получается следующая таблица:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...