我用的 ASPOSE.WORD for JAVA 22.12
aspose 转换word为pdf的时候,针对于mathtype的数学公式,会有乱码的情况出现、window环境上转换是正常的,但是Linux环境不行,找相关资料说是Linux缺少对应的字体。但是服务器上安装好用到的字体后还是有这个问题,用的代码是:Document document = new Document(“xxx.docx”);
document.save(“xxx.pdf”,SaveFormart.PDF);转换前后的样子可以参考图片:后_20230822103703.png (45.8 KB)
前_20230822103626.png (1.6 KB)
@SalesDhorde, 这与此线程中的问题相同吗?
Microsoft Word 使用 Cambria Math 字体来表示数学公式。 你能检查一下这个字体是否安装了吗?
如果安装Cambria Math字体后问题仍然存在,请附上输入的Word文档和输出的PDF文件进行分析。
word 可以正常展示,但是转换后的pdf文件是乱码。注意 是word转换后的pdf文件
@wsws2188,
正如我之前所写,您需要安装Symbol字体。 在您的Word文档中,数学公式使用符号字体。 请比较您的 PDF 和 Microsoft Word 创建的 PDF 的屏幕截图:
demo.word.pdf (47.9 KB)
图片 我都看不到,麻烦您再发一次图片
@wsws2188, 您能否在出现字体问题的服务器上运行以下代码,并检查是否打印了任何字体替换警告:
Document doc = new Document("demo.doc");
doc.setWarningCallback(new IWarningCallback() {
@Override
public void warning(WarningInfo warningInfo) {
if (WarningType.FONT_SUBSTITUTION == warningInfo.getWarningType()) {
System.out.println(warningInfo.getDescription());
}
}
});
doc.save("output.pdf");
@wsws2188, 您能否在出现字体问题的服务器上运行以下代码并检查 Aspose.Words 可以找到的所有可用字体:
// Get available fonts from FontSettings
ArrayList<FolderFontSource> fontSources = new ArrayList(
Arrays.asList(FontSettings.getDefaultInstance().getFontsSources()));
// Convert the Arraylist of source back into a primitive array of FontSource
// objects.
FontSourceBase[] updatedFontSources = (FontSourceBase[]) fontSources
.toArray(new FontSourceBase[fontSources.size()]);
for (PhysicalFontInfo fontInfo : (Iterable<PhysicalFontInfo>) updatedFontSources[0].getAvailableFonts()) {
System.out.println("FontFamilyName : " + fontInfo.getFontFamilyName());
System.out.println("FullFontName : " + fontInfo.getFullFontName());
System.out.println("Version : " + fontInfo.getVersion());
System.out.println("FilePath : " + fontInfo.getFilePath());
}