我正在使用 ASPOSE.Slides 创建一个 .pptx 文件。我正在尝试使用 Aspose 嵌入字体,但由于某些问题它无法正常工作。因此,我正在寻找实现相同功能的替代选项。
我想将我的自定义字体嵌入到 .pptx 文件中。您能否提供使用 Apache poi 或其他在 MS Power Point 中嵌入字体的建议。
请不要给出静态或本地系统的答案。
我正在使用 ASPOSE.Slides 创建一个 .pptx 文件。我正在尝试使用 Aspose 嵌入字体,但由于某些问题它无法正常工作。因此,我正在寻找实现相同功能的替代选项。
我想将我的自定义字体嵌入到 .pptx 文件中。您能否提供使用 Apache poi 或其他在 MS Power Point 中嵌入字体的建议。
请不要给出静态或本地系统的答案。
@Bhagyashree,
Aspose.Slides 允许您在演示文稿中嵌入字体。我建议您尝试在您的终端上使用以下示例代码来达到目的。
String dataDir = Utils.getDataDir(AddEmbeddedFonts.class);
Presentation pres=new Presentation(dataDir+"");
IFontData[] allFonts = pres.getFontsManager().getFonts();
IFontData[] embeddedFonts = pres.getFontsManager().getEmbeddedFonts();
for (IFontData font : except(allFonts, embeddedFonts))
{
pres.getFontsManager().addEmbeddedFont(font,EmbedFontCharacters.All);
}
pres.save("saved.pptx",SaveFormat.Pptx);
如果您遇到任何问题,请随时分享。我在 Aspose 担任支持开发人员/传播者。
在 POI 4.1.0(将在 2019 年 2 月左右发布)中,我还在 Apache POI 中添加了字体嵌入功能。提供的方法只是“半故事”,因为您不能简单地添加 .ttf/.otf 文件。
为了将 True-Type (.ttf) 或 Open-Type (.otf) 字体转换为与 Office 兼容的EOT/MTX字体,我使用的是sfntly。snftly 类尚未作为 maven 工件提供,我不喜欢将整个块导入 POI,也不喜欢以我的名义发布重新打包的 googles 代码版本,因此您需要克隆和调整我的示例项目。
要将 MTX 字体流添加到幻灯片(HSLF 或 XSLF,即SlideShow
它们的通用界面),您可以调用:
org.apache.poi.sl.usermodel.SlideShow.addFont(InputStream fontData)
对于字体子集,您需要使用的代码点,可以通过以下方式提取:
org.apache.poi.sl.extractor.SlideShowExtractor.getCodepoints(String typeface, Boolean italic, Boolean bold)
为了获取有关 MTX 字体数据流的信息,有一个新的辅助类:
org.apache.poi.common.usermodel.fonts.FontHeader
我不知道如何用 Apache 更改它,但是您可以使用 powerpoint 轻松更改它...