【发布时间】:2015-01-27 17:35:45
【问题描述】:
我今天开始使用 docx4j;
我已经成功创建了一个带有表格的文档,其中包含来自外部来源的内容。
这个内容里面有简单的HTML,例如一列可能包含这样的字符串:
String content = "Hello <strong>Word</strong><br>";
如果我使用createParagraphOfText() 方法将此字符串放入列中:
Tc tableCell = factory.createTc();
tableCell.getContent().add(
wordMLPackage.getMainDocumentPart().createParagraphOfText(content)
);
tableRow.getContent().add(tableCell);
它在 Word 文档中按原样呈现(如预期的那样):
Hello <strong>Word</strong><br>
我想要实现的是在文档中放置 渲染 HTML,以获得以下输出:
你好单词
我在 StackOverflow 和 Web 上进行了搜索,并尝试了几乎所有找到的示例,但信息非常零散,在更深入地挖掘之前,我至少想知道我的方向是否正确。
我已将 docx4j-ImportXHTML jar 添加到 Maven,但在文档中它声明内容必须是 格式良好的 XHTML,而我只有一堆文本和 HTML 混合在一起。
使用它的许多(少数)示例包括将现有的 XML 文件转换为 docx,而我很擅长手动完全创建 docx,并且只需要呈现包含 HTML 的单个字符串。这个模块可以吗?
我也看到有other docx4j modules(例如xhtmlrenderer),但我不确定哪个是好的。
有人知道在迭代期间在表格(的单元格)中添加 HTML 块的正确过程吗?
【问题讨论】:
-
您是否尝试过使用
AlternativeFormatInputPart? -
谢谢,我现在就试试。第二个是我正在尝试的,在继续之前我在这里停下来询问,因为我不能保证我的源代码是 XHTML,也不能保证格式正确......除了打开/关闭标签,我可以假设它是正确嵌套的。因此,如果我得到
,那是完全有效的 HTML5,它会因为缺少 void 元素自闭合斜线而中断? -
@Ascalonian 我尝试过不更改内容,但它按预期失败,因为它不是有效的 XHTML,引发
org.xml.sax.SAXParseException: Content is not allowed in prolog.我现在尝试AlternativeFormatInputPart方式并让你知道跨度> -
期待了解:-)
标签: java escaping docx4j html-escape-characters html-escape