Schriftarten in Präsentationen mit Java einbetten

Eingebettete Schriftarten in PowerPoint sind nützlich, wenn Ihre Präsentation auf jedem System oder Gerät korrekt angezeigt werden soll. Wenn Sie eine Drittanbieter‑ oder nicht standardmäßige Schriftart verwendet haben, weil Sie kreativ waren, haben Sie noch mehr Gründe, Ihre Schriftart einzubetten. Andernfalls (ohne eingebettete Schriftarten) können Texte oder Zahlen auf Ihren Folien, das Layout, das Styling usw. sich ändern oder in verwirrende Rechtecke verwandeln.

Die Klasse FontsManager, die Klasse FontData, die Klasse Compress und ihre Schnittstellen enthalten die meisten Eigenschaften und Methoden, die Sie benötigen, um mit eingebetteten Schriftarten in PowerPoint‑Präsentationen zu arbeiten.

Eingebettete Schriftarten abrufen und entfernen

Aspose.Slides stellt die Methode getEmbeddedFonts (bereitgestellt von der Klasse FontsManager) zur Verfügung, um die in einer Präsentation eingebetteten Schriftarten abzurufen (oder herauszufinden). Um Schriftarten zu entfernen, wird die Methode removeEmbeddedFont (ebenfalls von derselben Klasse bereitgestellt) verwendet.

Dieser Java‑Code zeigt, wie Sie eingebettete Schriftarten aus einer Präsentation abrufen und entfernen:

// Instanziiert ein Presentation-Objekt, das eine Präsentationsdatei darstellt
Presentation pres = new Presentation("EmbeddedFonts.pptx");
try {
    // Rendert eine Folie, die einen Textframe enthält und die eingebettete "FunSized"-Schrift verwendet
    IImage slideImage = pres.getSlides().get_Item(0).getImage(new Dimension(960, 720));

    // Speichert das Bild auf der Festplatte im JPEG-Format
    try {
        slideImage.save("picture1_out.jpg", ImageFormat.Jpeg);
    } finally {
        if (slideImage != null) slideImage.dispose();
    }

    IFontsManager fontsManager = pres.getFontsManager();

    // Ruft alle eingebetteten Schriftarten ab
    IFontData[] embeddedFonts = fontsManager.getEmbeddedFonts();

    // Findet die Schriftart "Calibri"
    IFontData calibriEmbeddedFont = null;
    for (int i = 0; i < embeddedFonts.length; i++) {
        System.out.println(""+ embeddedFonts[i].getFontName());
        if ("Calibri".equals(embeddedFonts[i].getFontName())) {
            calibriEmbeddedFont = embeddedFonts[i];
            break;
        }
    }

    // Entfernt die Schriftart "Calibri"
    fontsManager.removeEmbeddedFont(calibriEmbeddedFont);

    // Rendert die Präsentation; die Schriftart "Calibri" wird durch eine vorhandene ersetzt
     slideImage = pres.getSlides().get_Item(0).getImage(new Dimension(960, 720));

     // Speichert das Bild auf der Festplatte im JPEG-Format
     try {
         slideImage.save("picture2_out.jpg", ImageFormat.Jpeg);
     } finally {
         if (slideImage != null) slideImage.dispose();
     }

    // Speichert die Präsentation ohne die eingebettete Schriftart "Calibri" auf der Festplatte
    pres.save("WithoutManageEmbeddedFonts_out.ppt", SaveFormat.Ppt);
} finally {
    if (pres != null) pres.dispose();
}

Eingebettete Schriftarten hinzufügen

Mit dem Aufzählungstyp EmbedFontCharacters und zwei Überladungen der Methode addEmbeddedFont können Sie die gewünschte (Einbettungs‑)Regel auswählen, um Schriftarten in einer Präsentation einzubetten. Dieser Java‑Code zeigt, wie Sie Schriftarten einbetten und zu einer Präsentation hinzufügen:

// Lädt die Präsentation
Presentation pres = new Presentation("Fonts.pptx");
try {
    IFontData[] allFonts = pres.getFontsManager().getFonts();
    IFontData[] embeddedFonts = pres.getFontsManager().getEmbeddedFonts();

    for (IFontData font : allFonts)
    {
        boolean embeddedFontsContainsFont = false;
        for (int i = 0; i < embeddedFonts.length; i++)
        {
            if (embeddedFonts[i].equals(font))
            {
                embeddedFontsContainsFont = true;
                break;
            }
        }
        if (!embeddedFontsContainsFont)
        {
            pres.getFontsManager().addEmbeddedFont(font, EmbedFontCharacters.All);

            embeddedFonts = pres.getFontsManager().getEmbeddedFonts();
        }
    }

    // Speichert die Präsentation auf der Festplatte
    pres.save("AddEmbeddedFont_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Eingebettete Schriftarten komprimieren

Damit Sie die in einer Präsentation eingebetteten Schriftarten komprimieren und die Dateigröße reduzieren können, stellt Aspose.Slides die Methode compressEmbeddedFonts (bereitgestellt von der Klasse Compress) zur Verfügung.

Dieser Java‑Code zeigt, wie Sie eingebettete PowerPoint‑Schriftarten komprimieren:

Presentation pres = new Presentation("pres.pptx");
try {
    Compress.compressEmbeddedFonts(pres);
    pres.save("pres-out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Wie kann ich erkennen, dass eine bestimmte Schriftart in der Präsentation trotz Einbettung beim Rendern noch substituiert wird?

Prüfen Sie die Substitutionsinformationen im Font‑Manager und die Fallback‑/Substitutionsregeln: Ist die Schriftart nicht verfügbar oder eingeschränkt, wird ein Ersatz verwendet.

Lohnt es sich, Systemschriftarten wie Arial/Calibri einzubetten?

In der Regel nein – sie sind fast immer verfügbar. Für volle Portabilität in „dünnen“ Umgebungen (Docker, ein Linux‑Server ohne vorinstallierte Schriftarten) kann das Einbetten von Systemschriftarten jedoch das Risiko unerwarteter Substitutionen beseitigen.