是否可以更改 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,最后我有这个结构:
- 我的报告的自定义 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:
先介绍一下这个问题的背景:
我正在使用 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,最后我有这个结构:
- 我的报告的自定义 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: