如图:docx文件内容
1206652-20220614173715446-896221977.png (58.8 KB)
转换后的pdf内容:
1206652-20220614173701036-950503314.png (46.7 KB)
问题补充:
其他内容都正常,就算有图片也能正常转换,就是这个标题艺术字不行
另外我这是在windows环境就这样,不是Linux环境
如图:docx文件内容
1206652-20220614173715446-896221977.png (58.8 KB)
转换后的pdf内容:
1206652-20220614173701036-950503314.png (46.7 KB)
问题补充:
其他内容都正常,就算有图片也能正常转换,就是这个标题艺术字不行
另外我这是在windows环境就这样,不是Linux环境
@alone19825, 看起来一些字体缺少。请运行以下代码,并检查是否报告字体是否丢失:
Document doc = new Document("in.docx");
FontSubstitutionWarningCollector callback = new FontSubstitutionWarningCollector();
doc.setWarningCallback(callback);
doc.save("out.pdf")
private static class FontSubstitutionWarningCollector implements IWarningCallback {
/// <summary>
/// Called every time a warning occurs during loading/saving.
/// </summary>
public void warning(WarningInfo info) {
if (info.getWarningType() == WarningType.FONT_SUBSTITUTION)
System.out.println(info.getDescription());
}
}
如果您收到有关缺少字体的消息,请确保已安装字体。 或者,您可以使用以下方法之一指定字体位置:
例如:
FontSettings.getDefaultInstance().setFontsSources(
new FontSourceBase[] { new SystemFontSource(), new FolderFontSource("path to font folder", true) });
如果没有帮助,请附上显示问题的 Aspose.Words 创建的Word文档和PDF。
我这个是 aspose-words-15.8.0-crack.jar 版本的,好像没有FontSettings.getDefaultInstance()方法
@alone19825, 您正在使用非常旧版本的 Aspose.Words for Java。 最新版本的 Aspose.Words for Java 中存在 Fontsettings.getDefaultInstance
方法。
这是一个证明 Aspose.Java for Java 22.5 的文字可以使您的文档与 Microsoft Word 相同的方式渲染:
123.Aspose.Words.22.5.pdf
123.Word2019.pdf
请考虑购买最新版本的 Aspose.Words for Java 的许可证:Pricing - Purchase - aspose.com
:
Font ‘华康简标题宋’ has not been found. Using ‘FangSong’ font instead. Reason: font info substitution.
:
Font ‘方正小标宋_GBK’ has not been found. Using ‘Times New Roman’ font instead. Reason: default font substitution.
提示少这两个字段,并自动替换了,怎么才能设置这两个字体
@alone19825, 我无法用Aspose.Words 21.1复制该问题,您用来将Word文件转换为PDF文件。
您可以共享用于将Word文档转换为PDF的代码吗?
451xx市xx区xx关于市十六届人xx第20222533号建议答复的函.aspose.words.21.1.pdf (126.8 KB)
public static String doc2pdf(String wordPath, String pdfPath) {
try {
long old = System.currentTimeMillis();
File file = new File(pdfPath);
FileOutputStream os = new FileOutputStream(file);
Document doc = new Document(wordPath);
// FontSettings.getDefaultInstance().setFontsSources(
// new FontSourceBase[] { new SystemFontSource(), new FolderFontSource("C:\\Windows\\Fonts", true) });
WordPdfUtil callback = new WordPdfUtil();
doc.setWarningCallback(callback);
doc.save(os, SaveFormat.PDF);
long now = System.currentTimeMillis();
os.close();
//转化用时
System.out.println("Word 转 Pdf 共耗时:" + ((now - old) / 1000.0) + "秒");
} catch (Exception e) {
System.out.println("Word 转 Pdf 失败...");
e.printStackTrace();
}
return pdfPath;
}
@alone19825, 您需要将丢失的字体文件复制到 Linux 中的某个文件夹,例如,复制到 /home/user/fonts。 然后运行以下代码:
FontSettings.getDefaultInstance().setFontsSources(
new FontSourceBase[] {
new SystemFontSource(),
new FolderFontSource("/home/user/fonts", true)
});
Document doc = new Document(wordPath);
doc.save(pdfPath);
请参考本文档: