是否可以更改 IText 中解析的 HTML 的字体?

Is it possible to change the font of a parsed HTML in IText?

先介绍一下这个问题的背景:

我正在使用 CKEditor 在项目中实现一些富文本字段,通过 javascript 包含编辑器,并处理创建正确呈现的 HTML 的字段通过浏览器。

挑战在于将编辑器生成的 table 包含在 PDF 中,我尝试使用 Jasper Reports 但效果不佳(解析的 HTML 未呈现tables和一些由CKEditor生成的样式。

我测试了 IText,它运行良好,我能够通过以下代码解析 tables 和 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 并向我输出以下 table:

我的问题是:是否可以更改已解析的字体 HTML 以使用例如较小的字体或粗体?

我将有很多字段需要包含在 PDF 中,每个字段将位于不同的部分,需要不同的格式。我无法在 XMLWorker.

上找到允许此自定义的任何界面

我改变了我的方法并放弃了将 CKEditor CSS 合并到我的报告中的想法。

相反,我为 CKEditor 生成的 HTML 定制了我自己的 CSS,最后我有这个结构:

  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;
}

结果是这样table: