首先让我介绍一下此问题的背景:
我正在使用CKEditor来实现项目中的一些RTF文本字段,该编辑器是通过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
上允许此自定义的任何界面。
答案 0 :(得分:0)