如何在.pptx文件中嵌入字体

时间:2018-09-18 06:20:51

标签: javascript java apache-poi font-embedding aspose-slides

我正在使用ASPOSE.Slides创建一个.pptx文件。我正在尝试使用Aspose嵌入字体,但是由于某些问题,它无法正常工作。因此,我正在寻找实现相同功能的替代方法。

我想将自定义字体嵌入.pptx文件中。您能否提供有关使用Apache poi或其他字体将字体嵌入MS Power Point中的建议。

请不要给出静态或本地系统的答案。

4 个答案:

答案 0 :(得分:1)

如上所述,您可以在没有Apache的情况下轻松完成此工作。

Official site

您可以通过访问C:\ Windows \ Fonts来查看/添加/删除字体

答案 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轻松更改它...