Сначала позвольте мне рассказать об этой проблеме:
Я использую 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 при разборе и выводит мне следующую таблицу:
Мой вопрос: Можно ли изменить шрифт анализируемого HTML-кода, чтобы использовать, например, шрифт меньшего размера или жирный шрифт?
У меня будет много полей, которые необходимо включить в PDF, каждое поле будет находиться в отдельном разделе, требующем различного форматирования. Мне не удалось найти интерфейс, позволяющий эту настройку на XMLWorker
.