Word中的带圈字符转为html之后会圈与字符分离

代码如下:

    public static String wordToHtml(String filePath) throws Exception {
        Document document = new Document(filePath);
        HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
        htmlSaveOptions.setOfficeMathOutputMode(HtmlOfficeMathOutputMode.MATH_ML);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        document.save(baos, htmlSaveOptions);
        return baos.toString("UTF-8");
    }

文件如下:
带圈字符.docx (13.6 KB)

转化后的效果图:

@pizhai2

在将带圈字符从Word转换为HTML时,字符和圈分离的问题可能与HTML保存选项的设置有关。以下是解决此问题的具体步骤:

  1. 使用适当的HTML保存选项:确保您在保存文档时使用了正确的HtmlSaveOptions设置。特别是,将OfficeMathOutputMode设置为HtmlOfficeMathOutputMode.Image,这将改善数学公式的呈现。

  2. 检查字体和样式:确保在Word文档中使用的字体能够在转换过程中正确嵌入。通过设置setExportFontResources(true)来确保字体资源被导出。

  3. 导出为Base64编码:如果希望将字体嵌入到HTML中,可以使用setExportFontsAsBase64(true),这将使字体以Base64格式嵌入到生成的HTML中。

以下是一个示例代码,展示如何设置这些选项:

Document document = new Document("path/to/your/document.docx");
HtmlSaveOptions options = new HtmlSaveOptions();
options.setOfficeMathOutputMode(HtmlOfficeMathOutputMode.Image);
options.setExportFontResources(true);
options.setExportFontsAsBase64(true);
document.save("path/to/output.html", options);

通过这些设置,您应该能够改善带圈字符在HTML中的显示效果。如果问题仍然存在,请检查生成的HTML文件,确保没有其他样式或布局问题导致字符和圈分离。

请按照上述步骤操作,并确保每个设置都正确应用。如果您有其他问题或需要进一步的帮助,请随时告诉我!

1 Like

我的需求不能将OfficeMathOutputMode 设置为HtmlOfficeMathOutputMode.Image

为什么不回复我???????

@pizhai2 "Professionalize.Discourse "是第一个人工智能答案,它可以尝试提供第一手信息。有时它无法提供正确的答案,因为任务可能很复杂。我会尽快检查您的问题并回复您。很抱歉给您带来不便。

1 Like

@pizhai2 感谢您报告此问题。 我们已经在我们的内部问题跟踪系统中打开了以下新工单,并将根据 免费支持政策 中提到的条款提供它们的修复:

Issue ID(s): WORDSNET-28546

如果您需要优先支持以及直接联系我们的付费支持管理团队,您可以获得 付费支持服务

@pizhai2 分析表明,这是一个错误,作为一种变通方法,您可以尝试用 Unicode 圆圈数字替换 EQ 字段: none

可以给我一份使用Unicode 圆圈数字的示例docx文件吗?

@pizhai2 您可以使用下面的代码作为示例:

Document doc = new Document("input.docx");
FieldCollection fields = doc.getRange().getFields();

for (int i = 0; i <= fields.getCount() - 1; i++) {
    Field field = fields.get(i);

    if (field.getType() == FieldType.FIELD_EQUATION && field.getFieldCode().contains("1")) {
        Run newRun = new Run(doc, "\u2460");

        field.getStart().getParentNode().insertBefore(newRun, field.getStart());
        field.remove();
    }
}

doc.save("output.docx");

下面是输出文件:
output.docx (11.1 KB)