Dostosuj czcionki PowerPoint w Pythonie przy użyciu Java

Przegląd

Aspose.Slides umożliwia używanie niestandardowych czcionek w prezentacjach bez ich instalowania w systemie operacyjnym. Możesz wczytywać czcionki z własnych folderów, podawać czcionki dla konkretnej prezentacji za pomocą źródeł czcionek na poziomie dokumentu lub wczytywać zewnętrzne czcionki bezpośrednio z danych binarnych.

Wczytane czcionki są używane podczas renderowania lub eksportu prezentacji, np. do PDF, obrazów i innych obsługiwanych formatów. Pomaga to zachować spójny wygląd prezentacji w różnych środowiskach. W artykule wyjaśniono również, jak sprawdzić foldery czcionek używane przez Aspose.Slides oraz jak wyczyścić pamięć podręczną czcionek po pracy z czcionkami zewnętrznymi.

Rejestrowanie niestandardowych czcionek do renderowania jest oddzielne od osadzania czcionek w pliku PPTX. Jeśli czcionka ma być przechowywana wewnątrz samej prezentacji, należy używać funkcji osadzania czcionek w sposób explicite.

Motyw prezentacji może odwoływać się do różnych rodzin czcionek dla poszczególnych systemów pisma. Te mapowania przechowują nazwy czcionek, ale nie instalują ani nie wczytują plików czcionek. Zobacz Czcionki motywów specyficzne dla skryptu, aby zarządzać mapowaniami, oraz użyj poniższych opcji wczytywania, aby udostępnić odwoływane czcionki dla spójnego renderowania.

Wczytywanie niestandardowych czcionek

Aspose.Slides umożliwia wczytywanie czcionek używanych w prezentacji bez ich instalowania w systemie. Wpływa to na wynik eksportu — takiego jak PDF, obrazy i inne obsługiwane formaty — tak aby powstałe dokumenty wyglądały spójnie w różnych środowiskach. Czcionki są wczytywane z własnych katalogów.

  1. Podaj jeden lub więcej folderów zawierających pliki czcionek.
  2. Wywołaj metodę statyczną FontsLoader.loadExternalFonts, aby wczytać czcionki z tych folderów.
  3. Wczytaj i renderuj/eksportuj prezentację.
  4. Wywołaj FontsLoader.clearCache, aby wyczyścić pamięć podręczną czcionek.

Poniższy przykład kodu demonstruje proces wczytywania czcionek:

from jpype import JArray, JString
from asposeslides.api import FontsLoader, Presentation, SaveFormat

# Zdefiniuj foldery zawierające pliki czcionek niestandardowych.
font_folders = JArray(JString)(["assets/fonts", "global/fonts"])

# Wczytaj niestandardowe czcionki z podanych folderów.
FontsLoader.loadExternalFonts(font_folders)

presentation = None
try:
    presentation = Presentation("sample.pptx")

    # Renderuj/eksportuj prezentację używając wczytanych czcionek.
    presentation.save("output.pdf", SaveFormat.Pdf)
finally:
    if presentation is not None:
        presentation.dispose()

    # Wyczyść pamięć podręczną czcionek po zakończeniu pracy.
    FontsLoader.clearCache()

Uzyskiwanie niestandardowych folderów czcionek

Aspose.Slides udostępnia metodę getFontFolders, aby umożliwić znajdowanie folderów czcionek. Metoda ta zwraca foldery dodane poprzez metodę loadExternalFonts oraz foldery systemowe czcionek.

Ten kod w Pythonie pokazuje, jak używać getFontFolders:

from asposeslides.api import FontsLoader

# Pobierz foldery dodane przez loadExternalFonts oraz foldery czcionek systemowych.
font_folders = FontsLoader.getFontFolders()

Określanie niestandardowych czcionek używanych z prezentacją

Aspose.Slides udostępnia metodę getDocumentLevelFontSources, aby umożliwić określenie zewnętrznych czcionek, które będą używane z prezentacją.

Ten kod w Pythonie pokazuje, jak używać metody getDocumentLevelFontSources:

from pathlib import Path
from jpype import JArray, JByte, JString
from asposeslides.api import LoadOptions, Presentation

memory_font_primary = Path("customfonts/CustomFont1.ttf").read_bytes()
memory_font_secondary = Path("customfonts/CustomFont2.ttf").read_bytes()

load_options = LoadOptions()
font_folders = JArray(JString)(["assets/fonts", "global/fonts"])
memory_fonts = JArray(JByte, 2)([memory_font_primary, memory_font_secondary])
load_options.getDocumentLevelFontSources().setFontFolders(font_folders)
load_options.getDocumentLevelFontSources().setMemoryFonts(memory_fonts)

presentation = Presentation("MyPresentation.pptx", load_options)
try:
    # Pracuj z prezentacją.
    # CustomFont1, CustomFont2 oraz czcionki z folderów assets/fonts i global/fonts
    # oraz ich podfoldery są dostępne w prezentacji.
    pass
finally:
    presentation.dispose()

Zarządzanie czcionkami zewnętrznie

Aspose.Slides udostępnia metodę loadExternalFont, aby umożliwić wczytywanie zewnętrznych czcionek z danych binarnych.

Ten kod w Pythonie demonstruje proces wczytywania czcionki z tablicy bajtów:

from pathlib import Path
from jpype import JArray, JByte
from asposeslides.api import FontsLoader, Presentation

font_data = Path("ARIALN.TTF").read_bytes()
FontsLoader.loadExternalFont(JArray(JByte)(font_data))
font_data = Path("ARIALNBI.TTF").read_bytes()
FontsLoader.loadExternalFont(JArray(JByte)(font_data))
font_data = Path("ARIALNI.TTF").read_bytes()
FontsLoader.loadExternalFont(JArray(JByte)(font_data))

try:
    presentation = Presentation()
    try:
        # Zewnętrzne czcionki są ładowane w czasie życia prezentacji.
        pass
    finally:
        presentation.dispose()
finally:
    FontsLoader.clearCache()

FAQ

Czy niestandardowe czcionki wpływają na eksport do wszystkich formatów (PDF, PNG, SVG, HTML)?

Tak. Powiązane czcionki są używane przez renderujący we wszystkich formatach eksportu.

Czy niestandardowe czcionki są automatycznie osadzane w wygenerowanym pliku PPTX?

Nie. Rejestrowanie czcionki do renderowania nie jest tym samym co osadzanie jej w pliku PPTX. Jeśli potrzebujesz, aby czcionka była zawarta w pliku prezentacji, należy używać explicite funkcji osadzania.

Czy mogę kontrolować zachowanie fallbacku, gdy niestandardowa czcionka nie posiada niektórych glifów?

Tak. Skonfiguruj zastępowanie czcionek, reguły zamiany oraz zestawy fallback, aby określić, która czcionka ma być użyta, gdy żądany glif jest nieobecny.

Czy mogę używać czcionek w kontenerach Linux/Docker bez instalowania ich systemowo?

Tak. Wskaż własne foldery czcionek lub wczytuj czcionki z tablic bajtów. Dzięki temu nie masz zależności od systemowych katalogów czcionek w obrazie kontenera.

A co z licencjonowaniem — czy mogę osadzać dowolną niestandardową czcionkę bez ograniczeń?

Odpowiedzialność za zgodność z licencją czcionki spoczywa na Tobie. Warunki różnią się; niektóre licencje zakazują osadzania lub komercyjnego użycia. Zawsze sprawdzaj EULA czcionki przed rozpowszechnianiem wyników.