当前位置: 首页 > 面试题库 >

从HTML转换为DocX时如何处理特殊字符

花欣然
2023-03-14
问题内容

我有一个使用DocX4J将html文件转换为DocX的应用程序。我在使用ç,á,é,í,ã等特殊字符时遇到问题。我在html文件中的文本字体是Arial,但是当我将它们转换为DocX时,前面提到的特殊字符将设置为calibri字体。因此,在同一个单词(例如Cláudio)中,我用Arial字体写了“
Cl”,用Calibri字体写了“á”字符,用Arial字体写了“ udio”。

我看到也许我必须在w:r中设置字体属性,但是我很难看到如何对所有已转换的文本执行此操作。另外,我在下面列出的转换代码(带有示例html)中看不到该怎么做。

关于如何进行此转换并处理这些特殊字符的任何提示或建议都非常好。

干杯。

public WordprocessingMLPackage export(String xhtml) {

WordprocessingMLPackage wordMLPackage = null;
try {
    wordMLPackage = WordprocessingMLPackage.createPackage();
    XHTMLImporter importer = new XHTMLImporterImpl(wordMLPackage);
    List<Object> content = importer.convert(xhtml,null);
    wordMLPackage.getMainDocumentPart().getContent().addAll(content);
}
catch (Docx4JException e) {
    // ...
}
return wordMLPackage;
}
<html>
<head>
<meta charset="ISO-8859-1" />
<style type="text/css">
h1 {
    page-break-before: always;
}

p, h1 {
    font-family: Arial;
    font-size: 12pt;
}

p {
    line-height: 150%;
}

h1 {
    font-weight: bold;
    line-height: 130%
}
</style>
</head>
<body>
    <h1>RESUMO<br /></h1>
<p>
    <span>Um resumo para o relatório.</span><br />
</p>
</body>
</html>

问题答案:

按照JasonPlutext给出的技巧,我在DocX4J论坛(http://www.docx4java.org/forums/docx-
java-f6/docx-to-html-and上
找到了一个如何将字体映射到XHTMLImporter的示例-back-to-
docx-t1913.html
)。

现在我的代码正在运行!请参阅下面的最终版本。

public WordprocessingMLPackage export(String xhtml) {

WordprocessingMLPackage wordMLPackage = null;
try {
    RFonts arialRFonts = Context.getWmlObjectFactory().createRFonts();
    arialRFonts.setAscii("Arial");
    arialRFonts.setHAnsi("Arial");
    XHTMLImporterImpl.addFontMapping("Arial", arialRFonts);

    wordMLPackage = WordprocessingMLPackage.createPackage();
    XHTMLImporter importer = new XHTMLImporterImpl(wordMLPackage);
    List<Object> content = importer.convert(xhtml,null);
    wordMLPackage.getMainDocumentPart().getContent().addAll(content);
}
catch (Docx4JException e) {
    // ...
}
return wordMLPackage;
}


 类似资料:
  • 我有一个应用程序,可以使用DocX4J将html文件转换为DocX。我对特殊字符有问题,比如ç、á、é、í、ã等。我在html文件中的文本字体是Arial,但当我将它们转换为DocX时,前面提到的特殊字符被设置为calibri字体。所以,在同一个单词中(例如Cláudio),我用Arial字体写“Cl”,用Calibri字体写“á”,用Arial字体写“udio”。 我看到也许我必须在w: r中设

  • 问题内容: 有人知道如何将特殊字符转换为in 吗? 例: (“&”号)变为。 (双引号)成为时未设置。 (单引号)仅在被设置时才变为。 (小于)变为。 (大于)变为。 问题答案: 您需要一个功能类似于 但是要考虑到您希望对单/双引号进行不同处理的愿望。

  • 我正在使用Apache POI读取<代码>。docx文件,并在一些操作后写入。<代码>。我使用的docx文件是法语的,但当我在它将一些法语字符转换为特殊字符。示例转换为 下面的代码用于编写文件 默认使用UTF-8。 在调试时,我在写入<代码>之前进行了检查。csv数据保持原样。但它在写作时被转换了吗?我已将默认语言环境设置为语言环境。法语 我错过了什么吗?

  • 上面的代码给了我一个错误,如下所示 线程“main”java.lang.nosuchmethoderror:org.docx4j.org.xhtmlrenderer.docx.docx.docx.docxrenderer.(ljava/lang/string;)V在org.docx4j.convert.in.xhtml.xhtmlimporterimpl.getrenderer(xhtmlimpo

  • 我在将HTML转换为docx时遇到了新问题,它引发了异常: 组织。xml。萨克斯。SAXS异常;行号:4;栏目号:73;实体“nbsp”已被引用,但未被声明 正如我所理解的,这是因为docx4j认为我的文件是XML,并希望将其转换为docx但XML中只有5个预定义的实体,而nbsp等实体没有在XML中定义。如何让docx4j将超文本标记语言转换为doc,而无需在doctype中声明实体nbsp?

  • 问题内容: 有没有一种方法可以将字符串转换为可以在Web文档中正确显示的字符串?例如,更改字符串 至 问题答案: 具有专门为此设计的功能: http://commons.apache.org/proper/commons- lang/javadocs/api-3.1/org/apache/commons/lang3/StringEscapeUtils.html