PowerPoint-Schriften in .NET anpassen

Übersicht

Aspose.Slides ermöglicht es Ihnen, benutzerdefinierte Schriften in Präsentationen zu verwenden, ohne sie im Betriebssystem zu installieren. Sie können Schriften aus benutzerdefinierten Ordnern laden, Schriften für eine bestimmte Präsentation über dokumentenbezogene Schriftquellen bereitstellen oder externe Schriften direkt aus Binärdaten laden.

Geladene Schriften werden verwendet, wenn eine Präsentation gerendert oder exportiert wird, beispielsweise zu PDF, Bildern und anderen unterstützten Formaten. Dies trägt dazu bei, die Ausgabe der Präsentation in verschiedenen Umgebungen konsistent zu halten. Der Artikel erklärt außerdem, wie Sie die von Aspose.Slides verwendeten Schriftordner inspizieren und wie Sie den Schrift-Cache nach der Arbeit mit externen Schriften leeren können.

Die Registrierung benutzerdefinierter Schriften für das Rendern ist von der Einbettung von Schriften in eine PPTX‑Datei getrennt. Wenn eine Schrift innerhalb der Präsentation selbst gespeichert werden muss, verwenden Sie die Schrift‑Einbettungs‑Features explizit.

Ein Präsentationsthema kann für einzelne Schriftsysteme unterschiedliche Schriftfamilien referenzieren. Diese Zuordnungen speichern Schrift­namen, installieren oder laden jedoch nicht die Schriftdateien. Siehe Skriptspezifische Design‑Schriften, um die Zuordnungen zu verwalten, und verwenden Sie die untenstehenden Ladeoptionen, um die referenzierten Schriften für ein konsistentes Rendering verfügbar zu machen.

Laden benutzerdefinierter Schriften

Aspose.Slides ermöglicht das Laden von Schriften, die in einer Präsentation verwendet werden, ohne sie auf dem System zu installieren. Dies beeinflusst die Exportausgabe – wie PDF, Bilder und andere unterstützte Formate – so dass die resultierenden Dokumente in verschiedenen Umgebungen konsistent aussehen. Schriften werden aus benutzerdefinierten Verzeichnissen geladen.

  1. Geben Sie einen oder mehrere Ordner an, die die Schriftdateien enthalten.
  2. Rufen Sie die statische FontsLoader.LoadExternalFonts Methode auf, um Schriften aus diesen Ordnern zu laden.
  3. Laden und rendern/exportieren Sie die Präsentation.
  4. Rufen Sie FontsLoader.ClearCache auf, um den Schrift-Cache zu leeren.

Das folgende Code‑Beispiel demonstriert den Schrift‑Ladevorgang:

using Aspose.Slides;
using Aspose.Slides.Export;

// Definieren Sie Ordner, die benutzerdefinierte Schriftdateien enthalten.
string[] fontFolders = { @"C:\MyFonts", @"D:\Fonts" };

// Laden Sie benutzerdefinierte Schriften aus den angegebenen Ordnern.
FontsLoader.LoadExternalFonts(fontFolders);

using Presentation presentation = new Presentation("sample.pptx");

// Rendern/Exportieren Sie die Präsentation (z.B. zu PDF, Bildern oder anderen Formaten) mit den geladenen Schriften.
presentation.Save("output.pdf", SaveFormat.Pdf);

// Leeren Sie den Schrift-Cache, nachdem die Arbeit abgeschlossen ist.
FontsLoader.ClearCache();

Abrufen benutzerdefinierter Schriftordner

Aspose.Slides stellt die GetFontFolders Methode bereit, mit der Sie Schriftordner ermitteln können. Diese Methode gibt Ordner zurück, die über die LoadExternalFonts‑Methode hinzugefügt wurden, sowie System‑Schriftordner.

Dieser C#‑Code zeigt, wie Sie GetFontFolders verwenden:

using Aspose.Slides;

// Diese Zeile gibt die Ordner aus, die auf Schriftdateien geprüft werden.
// Das sind Ordner, die über die LoadExternalFonts‑Methode und System‑Schriftordner hinzugefügt wurden.
string[] fontFolders = FontsLoader.GetFontFolders();

Angeben benutzerdefinierter Schriften, die mit einer Präsentation verwendet werden

Aspose.Slides stellt die DocumentLevelFontSources Eigenschaft bereit, mit der Sie externe Schriften festlegen können, die mit der Präsentation verwendet werden sollen.

Dieser C#‑Code zeigt, wie Sie die DocumentLevelFontSources Eigenschaft verwenden:

using Aspose.Slides;

byte[] memoryFont1 = File.ReadAllBytes("customfonts\\CustomFont1.ttf");
byte[] memoryFont2 = File.ReadAllBytes("customfonts\\CustomFont2.ttf");

LoadOptions loadOptions = new LoadOptions();
loadOptions.DocumentLevelFontSources.FontFolders = new string[] { "assets\\fonts", "global\\fonts" };
loadOptions.DocumentLevelFontSources.MemoryFonts = new byte[][] { memoryFont1, memoryFont2 };
using (IPresentation presentation = new Presentation("MyPresentation.pptx", loadOptions))
{
    // Arbeiten mit der Präsentation
    // CustomFont1, CustomFont2 und Schriften aus den Ordnern assets\fonts & global\fonts und deren Unterordnern stehen der Präsentation zur Verfügung
}

Externe Schriftverwaltung

Aspose.Slides stellt die LoadExternalFont(byte[] data) Methode bereit, mit der Sie externe Schriften aus Binärdaten laden können.

Dieser C#‑Code demonstriert den Schrift‑Ladevorgang aus einem Byte‑Array:

using Aspose.Slides;

FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALN.TTF"));
FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALNBI.TTF"));
FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALNI.TTF"));

try
{
    using (Presentation pres = new Presentation(""))
    {
        // externe Schrift, die während der Lebensdauer der Präsentation geladen wird
    }
}
finally
{
    FontsLoader.ClearCache();
}

Um einer passenden registrierten Schrift während des Exports Vorrang zu geben, ohne die eingebettete Schrift zu entfernen, siehe Bevorzugen von registrierten Schriften gegenüber eingebetteten Schriften (.NET 26.11 oder später).

FAQ

Beeinflussen benutzerdefinierte Schriften den Export in alle Formate (PDF, PNG, SVG, HTML)?

Ja. Verbundene Schriften werden vom Renderer in allen Exportformaten verwendet.

Werden benutzerdefinierte Schriften automatisch in die resultierende PPTX eingebettet?

Nein. Das Registrieren einer Schrift für das Rendern ist nicht dasselbe wie das Einbetten in eine PPTX. Wenn Sie die Schrift in der Präsentationsdatei benötigen, müssen Sie die expliziten Einbettungs‑Features verwenden.

Kann ich das Fallback‑Verhalten steuern, wenn einer benutzerdefinierten Schrift bestimmte Glyphen fehlen?

Ja. Konfigurieren Sie font substitution, replacement rules und fallback sets, um exakt festzulegen, welche Schrift verwendet wird, wenn die angeforderte Glyphe fehlt.

Kann ich Schriften in Linux/Docker‑Containern verwenden, ohne sie systemweit zu installieren?

Ja. Zeigen Sie auf Ihre eigenen Schriftordner oder laden Sie Schriften aus Byte‑Arrays. Dadurch wird jede Abhängigkeit von System‑Schriftverzeichnissen im Container‑Image entfernt.

Hinweis für Linux/Docker: Beim Aufruf von FontsLoader.LoadExternalFonts stellen Sie sicher, dass jeder Eintrag im directories‑Array einen nicht‑leeren Pfad zu einem bestehenden Verzeichnis enthält. Wenn eine Umgebungsvariable, die zum Erstellen eines Schriftpfads verwendet wird, nicht definiert oder leer ist, kann Aspose.Slides versuchen, den leeren Wert als vollständigen Pfad aufzulösen, was zu System.ArgumentException führt.

Wie sieht es mit Lizenzierung aus – kann ich beliebige benutzerdefinierte Schriften ohne Einschränkungen einbetten?

Sie sind für die Einhaltung der Schrift‑Lizenzbedingungen verantwortlich. Die Bedingungen variieren; einige Lizenzen verbieten das Einbetten oder die kommerzielle Nutzung. Überprüfen Sie stets die EULA der Schrift, bevor Sie Ausgaben verbreiten.