我们使用贵公司产品把Word转换为Html
因为交付给客户时不能带商业字体,所以我们内嵌了思源系列的开源字体,并配置了字体替换规则
Test.zip (3.1 MB)
附件中的文件有三个问题
1、A005文件的绿色字错位
2、A005表格中的文字显示不全
3、A008的文字显示不全,线条错乱
复制Simsun字体有改善,但仍存在问题
我们的转换代码为
Document document = new Document(sourceFileName);
HtmlFixedSaveOptions options = new HtmlFixedSaveOptions();
options.setUseTargetMachineFonts( false );
options.setUseHighQualityRendering( true );
options.setEncoding(Charset. forName (“UTF-8”));
options.setExportEmbeddedFonts( true );
document.save(targetFileName, options);
字体替换规则为
String defaultSong = “思源宋体 CN”;//Source Han Sans CN
String defaultHei = “思源黑体 CN”;//Source Han Serif CN
String defaultFont = defaultSong;
Map<String,String> fontMapping = new HashMap<String,String>();
fontMapping.put("微软雅黑", defaultHei);
fontMapping.put("微软雅黑 Bold", defaultHei);
fontMapping.put("华文西黑", defaultHei);
fontMapping.put("STXihei", defaultHei);
fontMapping.put("仿宋", defaultSong);
fontMapping.put("宋体", defaultSong);
fontMapping.put("Arial", defaultSong);
fontMapping.put("幼圆", defaultSong);
fontMapping.put("MS Mincho", defaultHei);
// word
FontSettings fontSettings = FontSettings. getDefaultInstance ();
fontSettings.setDefaultFontName(defaultFont);
fontSettings.setFontsFolder(fontFolder, false );
fontSettings.setEnableFontSubstitution( true );
for (Map.Entry<String, String> e :fontMapping.entrySet()) {
fontSettings.addFontSubstitutes(e.getKey(), e.getValue());
}