作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
docx4j 中的 XHTMLImporter 不会将 转换为 MS WORD 不间断空格。
使用以下代码:
public void convert() throws Exception {
String stringFromFile = FileUtils.readFileToString(new File("tmp.xhtml"), "UTF-8");
String unescaped = stringFromFile;
System.out.println("Unescaped: " + unescaped);
// Setup font mapping
RFonts rfonts = Context.getWmlObjectFactory().createRFonts();
rfonts.setAscii("Century Gothic");
XHTMLImporterImpl.addFontMapping("Century Gothic", rfonts);
// Create an empty docx package
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
NumberingDefinitionsPart ndp = new NumberingDefinitionsPart();
wordMLPackage.getMainDocumentPart().addTargetPart(ndp);
ndp.unmarshalDefaultNumbering();
// Convert the XHTML, and add it into the empty docx we made
XHTMLImporter XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
XHTMLImporter.setHyperlinkStyle("Hyperlink");
wordMLPackage.getMainDocumentPart().getContent().addAll(
XHTMLImporter.convert(unescaped, null) );
System.out.println(
XmlUtils.marshaltoString(wordMLPackage.getMainDocumentPart().getJaxbElement(), true, true));
wordMLPackage.save(new java.io.File("OUT_from_XHTML.docx") );
}
当 XHTML 输入如下时:
<p style="LINE-HEIGHT: 120%; MARGIN: 0in 0in 0pt"
class="MsoNormal"><span
style="LINE-HEIGHT: 120%; FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'">Up
to Age 30<span
style="mso-spacerun: yes"> </span>
2.30<span
style="mso-spacerun: yes"> </span>
3.30</span></p>
那么 docx 输出如下:
<w:r>
<w:rPr>
<w:rFonts w:ascii="Courier New"/>
<w:b w:val="false"/>
<w:i w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="20"/>
</w:rPr>
<w:t>
2.30</w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Courier New"/>
<w:b w:val="false"/>
<w:i w:val="false"/>
<w:color w:val="000000"/>
<w:sz w:val="20"/>
</w:rPr>
<w:t>
3.30</w:t>
</w:r>
在 Word 2013 中打开文档时,根本没有空格。
最佳答案
我没有深入研究 docx4j 源代码,只是调用
String escaped = unescaped.replace(" ", "\u00A0");
不幸的是,在Word文档中它变成了平常的空间,但对我来说并不重要。
关于xhtml - docx4j XHTMLImporter 忽略  (不间断空格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33780103/
docx4j 中的 XHTMLImporter 不会将 转换为 MS WORD 不间断空格。 使用以下代码: public void convert() throws Exception {
我想使用 docx4j 和 XHTMLImporter 从给定的 HTML 片段生成一个 Word 文件。除了我无法告诉 XHTMLImporter 将 CSS 类名映射到 Word 格式定义之外,它
我是一名优秀的程序员,十分优秀!