PowerPoint-Schriftarten in Python anpassen
Überblick
Aspose.Slides für Python ermöglicht es Ihnen, zur Laufzeit benutzerdefinierte Schriftarten bereitzustellen, sodass Präsentationen korrekt dargestellt werden, selbst wenn die erforderlichen Schriftarten nicht auf dem Hostsystem installiert sind. Beim Export in PDF oder Bilder können Sie Schriftartenordner oder Schriftartdaten im Speicher angeben, um das Textlayout, die Glyphenmetriken und die Typografie beizubehalten. Dadurch wird das serverseitige Rendern in verschiedenen Umgebungen vorhersehbar, OS‑abhängige Schriftartenabhängigkeiten werden entfernt und unerwünschte Fallbacks oder Textumlagerungen vermieden. Der Artikel zeigt, wie Schriftquellen registriert werden.
Ein Präsentationsthema kann unterschiedliche Schriftfamilien für einzelne Schriftsysteme referenzieren. Diese Zuordnungen speichern Schriftartnamen, installieren oder laden die Schriftdateien jedoch nicht. Siehe Skript‑spezifische Theme‑Schriften, um die Zuordnungen zu verwalten, und verwenden Sie die unten aufgeführten Lademöglichkeiten, um die referenzierten Schriftarten für ein konsistentes Rendering verfügbar zu machen.
Aspose.Slides lässt Sie die folgenden Schriftarten mit den Methoden load_external_font und load_external_fonts der FontsLoader-Klasse laden:
- TrueType (.ttf)- und TrueType Collection (.ttc)-Schriften. Siehe TrueType.
- OpenType (.otf)-Schriften. Siehe OpenType.
Benutzerdefinierte Schriftarten laden
Aspose.Slides ermöglicht das Laden von in einer Präsentation verwendeten Schriftarten, ohne sie im System zu installieren. Dies wirkt sich auf die Exportausgabe aus – z. B. PDF, Bilder und andere unterstützte Formate – so dass die erzeugten Dokumente in allen Umgebungen einheitlich aussehen. Schriftarten werden aus benutzerdefinierten Verzeichnissen geladen.
- Geben Sie einen oder mehrere Ordner an, die die Schriftdateien enthalten.
- Rufen Sie die statische FontsLoader.load_external_fonts-Methode auf, um die Schriftarten aus diesen Ordnern zu laden.
- Laden und rendern/exportieren Sie die Präsentation.
- Rufen Sie FontsLoader.clear_cache auf, um den Schriftarten‑Cache zu leeren.
Das folgende Codebeispiel demonstriert den Schriftarten‑Ladevorgang:
import aspose.slides as slides
# Definieren Sie Ordner, die benutzerdefinierte Schriftartdateien enthalten.
font_folders = ["fonts", "external_fonts"]
# Laden Sie benutzerdefinierte Schriftarten aus den angegebenen Ordnern.
slides.FontsLoader.load_external_fonts(font_folders)
with slides.Presentation("sample.pptx") as presentation:
# Rendern/Exportieren Sie die Präsentation (z. B. nach PDF, Bildern oder anderen Formaten) unter Verwendung der geladenen Schriftarten.
presentation.save("output.pdf", slides.export.SaveFormat.PDF)
# Leeren Sie den Schriftarten-Cache, nachdem die Arbeit abgeschlossen ist.
slides.FontsLoader.clear_cache()
Hinweis
FontsLoader.load_external_fonts fügt zusätzliche Ordner zu den Schriftarten‑Suchpfaden hinzu, ändert jedoch nicht die Reihenfolge der Schriftarten‑Initialisierung.
Schriftarten werden in dieser Reihenfolge initialisiert:
- Der standardmäßige Betriebssystem‑Schriftpfad.
- Die über FontsLoader-Methoden geladenen Pfade.
Den Ordner für benutzerdefinierte Schriftarten abrufen
Aspose.Slides stellt die Methode get_font_folders bereit, um Schriftarten‑Ordner abzurufen. Sie liefert sowohl die über load_external_fonts hinzugefügten Ordner als auch die System‑Schriftordner.
Dieses Python‑Beispiel zeigt, wie get_font_folders verwendet wird:
import aspose.slides as slides
# Dieser Aufruf gibt die Ordner zurück, die auf Schriftdateien überprüft werden.
# Diese beinhalten Ordner, die über die load_external_fonts-Methode hinzugefügt wurden, sowie die System-Schriftordner.
font_folders = slides.FontsLoader.get_font_folders()
Benutzerdefinierte Schriftarten für eine Präsentation angeben
Aspose.Slides bietet die Eigenschaft document_level_font_sources, mit der externe Schriftarten für eine Präsentation angegeben werden können.
Das folgende Python‑Beispiel zeigt die Verwendung von document_level_font_sources:
import aspose.slides as slides
with open("CustomFont1.ttf", "br") as font1_stream:
font1_data = font1_stream.read()
with open("CustomFont2.ttf", "br") as font2_stream:
font2_data = font2_stream.read()
load_options = slides.LoadOptions()
load_options.document_level_font_sources.font_folders = ["assets\\fonts", "global\\fonts"]
load_options.document_level_font_sources.memory_fonts = [font1_data, font2_data]
with slides.Presentation("Fonts.pptx", load_options) as presentation:
# ...
# Arbeiten Sie mit der Präsentation.
# CustomFont1, CustomFont2 und Schriftarten aus den Ordnern assets\fonts und global\fonts (einschließlich ihrer Unterordner) stehen der Präsentation zur Verfügung.
# ...
print(len(presentation.slides))
Externe Schriftarten aus Binärdaten laden
Aspose.Slides stellt die Methode load_external_font bereit, um externe Schriftarten aus Binärdaten zu laden.
Das folgende Python‑Beispiel demonstriert das Laden einer Schriftart aus einem Byte‑Array:
import aspose.slides as slides
def read_all_bytes(file_path):
with open(file_path, "rb") as file_stream:
file_data = file_stream.read()
return file_data
# Externe Schriftarten aus Byte-Arrays laden.
slides.FontsLoader.load_external_font(read_all_bytes("ARIALN.TTF"))
slides.FontsLoader.load_external_font(read_all_bytes("ARIALNBI.TTF"))
slides.FontsLoader.load_external_font(read_all_bytes("ARIALNI.TTF"))
try:
with slides.Presentation() as presentation:
# Externe Schriftarten sind für die Lebensdauer dieser Präsentationsinstanz verfügbar.
print("processing")
finally:
slides.FontsLoader.clear_cache()
FAQ
Beeinflussen benutzerdefinierte Schriftarten den Export in alle Formate (PDF, PNG, SVG, HTML)?
Ja. Verbundene Schriftarten werden vom Renderer für alle Exportformate verwendet.
Werden benutzerdefinierte Schriftarten automatisch in die resultierende PPTX eingebettet?
Nein. Das Registrieren einer Schriftart für das Rendering ist nicht dasselbe wie das Einbetten in eine PPTX. Wenn die Schriftart in der Präsentationsdatei enthalten sein soll, müssen Sie die expliziten Einbettungs‑Features nutzen.
Kann ich das Fallback‑Verhalten steuern, wenn einer benutzerdefinierten Schriftart bestimmte Glyphen fehlen?
Ja. Konfigurieren Sie die Schriftart‑Substitution, Ersetzungsregeln und Fallback‑Sätze, um genau festzulegen, welche Schriftart verwendet wird, wenn die gewünschte Glyphe fehlt.
Kann ich Schriftarten in Linux/Docker‑Containern verwenden, ohne sie systemweit zu installieren?
Ja. Verweisen Sie auf eigene Schriftarten‑Ordner oder laden Sie Schriftarten aus Byte‑Arrays. Dadurch wird jede Abhängigkeit von System‑Schriftordnern im Container‑Image eliminiert.
Wie sieht es mit Lizenzierung aus – kann ich jede benutzerdefinierte Schriftart ohne Einschränkungen einbetten?
Sie sind für die Einhaltung der Schriftart‑Lizenz verantwortlich. Die Bedingungen variieren; einige Lizenzen verbieten das Einbetten oder die kommerzielle Nutzung. Überprüfen Sie stets die EULA der Schriftart, bevor Sie Ausgaben verbreiten.