Aspose.Words将.docx转换成HTML_FIXED出现的几个问题

Aspose.Words将.docx转换成HTML_FIXED出现的三个问题咨询解决方案:
#问题1:中文和数字基线不一致,出现位置偏差;
#问题2:文本设置字符间距时紧缩(Condensed)10磅,出现文本显示不全,更大的磅数更会直接导致文本被丢弃;
#问题3:删除线的位置不对,不在文本的竖直居中位置上。

Microsoft Office Word的展示效果参考附件1.word2htmlBugMS.png (149.2 KB)
Aspose.Words HTML_FIXED的展示效果参考附件2. word2htmlBubAW.jpg (79 KB)
原始.docx文件参考附件3.Word2Html问题汇总.docx.zip (13.6 KB)

开发环境说明:
Aspose.Words版本:aspose-words-19.9-android.via.java.jar
运行系统:Android OS 8.1.0
HtmlFixedSaveOptions实例:
saveOptions.setPageIndex(0);
saveOptions.setPageCount(Integer.MAX_VALUE);
saveOptions.setShowPageBorder(false);
saveOptions.setPageMargins(0D);
saveOptions.setFontFormat(ExportFontFormat.TTF);
saveOptions.setOptimizeOutput(false);
saveOptions.setPrettyFormat(true);
saveOptions.setMemoryOptimization(false);

若有其他需要补充的内容,请反馈。

@RyanPan,

请确保将以下字体文件安装在要转换为HTML_FIXED的Android设备上。

  • 宋体
  • 仿宋

请参考以下文章以了解详细信息:
真型字体

如果问题仍然存在,请也ZIP并上传Aspose.Words生成的输出HTML_FIXED文件,此处显示了不良行为以供测试。 然后,我们将进一步对问题进行调查,并为您提供更多信息。

@awais.hafeez
Hi,感谢回复,尝试了你所提及的方案,问题仍然存在。相关的尝试如下:

通过调用FontSettings.getDefaultInstance().getSubstitutionSettings().getTableSubstitution().addSubstitutes()设置字体规则,且通过LoadOptions.setWarningCallback()设置的IWarningCallback确认宋体和仿宋字体替换规则被应用上了。然而,只有问题1得到了解决,问题2和问题3仍然存在。

Aspose.Words生成的输出HTML_FIXED文件参考附件output-html_fixed.zip (1.4 MB)

@RyanPan,

我们正在检查这种情况,并将尽快与您联系。

@awais.hafeez
请问有新进展吗?

@RyanPan,

请抽出一些时间来调查这种情况。 我们将尽快与您联系并提供调查结果。

@RyanPan,

我们测试了这种情况,并最终设法重现了同样的问题。 为了更正,我们已将此问题记录在问题跟踪系统中。 此问题的ID为WORDSJAND-443。 我们将进一步调查该问题的详细信息,并让您及时了解更正的状态。 对于给您带来的不便,我们深表歉意。

@RyanPan,

您能否从Windows计算机中复制所需的字体并将其粘贴到自定义的Fonts文件夹中,然后执行程序并在此处共享您的发现以进行进一步测试?

@RyanPan,

关于WORDSJAND-443,是对您进行了更新,我们已经完成了对这一问题的分析,并且很可能以“ Not Bug”状态关闭此问题。 请查看以下分析详细信息:

请使用FontSettings类指定所需的字体:

FontSettings settings = new FontSettings();
settings.setFontsSources(
        new FontSourceBase[]
                {
                        new FolderFontSource("X:\\443\\output-html_fixed-from Customer\\output-html_fixed\\bcd652fb_c0000000_0\\", false),
                        //      new SystemFontSource()
                });

LoadOptions lo = new LoadOptions();
lo.setFontSettings(settings);
Document doc = new Document("X:\\443\\in.docx", lo);