我正在使用ASPOSE.Slides创建一个.pptx文件。我正在尝试使用Aspose嵌入字体,但是由于某些问题,它无法正常工作。因此,我正在寻找实现相同功能的替代方法。
我想将自定义字体嵌入.pptx文件中。您能否提供有关使用Apache poi或其他字体将字体嵌入MS Power Point中的建议。
请不要给出静态或本地系统的答案。
答案 0 :(得分:1)
答案 1 :(得分:0)
@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的支持开发人员/传播者。
答案 2 :(得分:0)
在POI 4.1.0(将于2019年2月左右发布)中,我还在Apache POI中添加了font embedding功能。所提供的方法只是“半故事”,因为您不能简单地添加.ttf / .otf文件。
为了将True-Type(.ttf)或Open-Type(.otf)字体转换为Office兼容的EOT/MTX字体,我使用sfntly。尚未将snftly类作为Maven工件提供,并且我不喜欢将整个块导入POI或以我的名字发布我重新打包的googles代码版本,因此您需要克隆并改编我的example project。
要向幻灯片放映中添加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
答案 3 :(得分:-1)
我不知道如何使用Apache进行更改,但是您可以使用powerpoint轻松更改它...