Konfigurace náhrady písma v prezentacích pomocí Pythonu přes Java

Přehled

Náhrada písma umožňuje Aspose.Slides použít dostupné písmo místo písma, které nelze při vykreslování nebo konverzi prezentace získat. Náhrada ovlivňuje vykreslený výstup; nemění písmo přiřazené obsahu prezentace.

Můžete definovat písmo, které se použije, když je konkrétní písmo nedostupné, a můžete zkontrolovat náhrady, které Aspose.Slides provede během vykreslování. To pomáhá udržet výstup konzistentní napříč prostředími s různými nainstalovanými písmy.

Získání náhrad písma

Použijte metodu FontsManager.getSubstitutions, abyste určili, která písma budou při vykreslování prezentace nahrazena. Metoda vrací objekty FontSubstitutionInfo, které identifikují původní a nahrazené názvy písem.

Následující příklad v jazyce Python vypisuje všechny náhrady písem pro prezentaci:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation

presentation = Presentation("Presentation.pptx")
try:
    for substitution in presentation.getFontsManager().getSubstitutions():
        print(f"{substitution.getOriginalFontName()} -> {substitution.getSubstitutedFontName()}")
finally:
    presentation.dispose()

Získání náhrad písma pro vybrané snímky

Použijte přetížení FontsManager.getSubstitutions s argumentem pole celých čísel v jazyce Java, abyste zkontrolovali pouze náhrady potřebné k vykreslení konkrétních snímků. To je užitečné, když vykreslujete nebo exportujete část prezentace, kontrolujete velkou prezentaci postupně, vyhledáváte snímky, které závisí na nedostupných písmech, připravujete minimální balíček písem pro server nebo kontejner, nebo diagnostikujete rozdíly ve vykreslování bez zpracování nesouvisejících snímků.

Pole slides obsahuje jednorozměrné indexy snímků založené na čísle 1: 1 označuje první snímek. Naopak přístup k kolekci pomocí Presentation.getSlides používá indexování od nuly, takže stejný snímek je přístupný jako presentation.getSlides().get_Item(0). Tuto odlišnost mějte při vytváření pole na paměti, aby nedošlo k chybám o jeden.

Volání přetížení přes metodu Presentation.getFontsManager. Vrací pouze náhrady určené během vykreslování vybraných snímků. Každý výsledek je objekt FontSubstitutionInfo obsahující původní a nahrazené názvy písem. Výsledek odráží aktuální prostředí písem, nakonfigurovaná záložní pravidla, pravidla náhrady uložená v FontSubstRuleCollection a externě načtená písma.

Stejnou náhradu může vyžadovat více než jeden vybraný snímek. Výsledky deduplikujte, když vytváříte inventář písem nebo preflight zprávu. Následující příklad vypisuje každou vrácenou náhradu a poté vytváří seřazený seznam unikátních mapování písem:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation

presentation = Presentation("Presentation.pptx")
try:
    selected_slides = jpype.JArray(jpype.JInt)([1, 3, 5])
    substitutions = list(presentation.getFontsManager().getSubstitutions(selected_slides))

    print("Substitutions for the selected slides:")
    for substitution in substitutions:
        print(f"{substitution.getOriginalFontName()} -> {substitution.getSubstitutedFontName()}")

    unique_entries = {}
    for substitution in substitutions:
        entry = f"{substitution.getOriginalFontName()} -> {substitution.getSubstitutedFontName()}"
        unique_entries.setdefault(entry.casefold(), entry)

    print("Deduplicated font preflight report:")
    for key in sorted(unique_entries):
        print(unique_entries[key])
finally:
    presentation.dispose()

Třída FontsManager poskytuje obě přetížení. Vyberte si podle rozsahu vykreslovací operace:

Přetížení Použijte, pokud
getSubstitutions bez argumentů Potřebujete náhrady pro celou prezentaci.
getSubstitutions s polem celých čísel Java Potřebujete náhrady pro vybraný rozsah, postupnou kontrolu nebo částečný export.

Nastavení pravidel náhrady písma

Pro určení písma, které by Aspose.Slides mělo použít, když je výchozí písmo nedostupné:

  1. Načtěte prezentaci.
  2. Vytvořte definice písem pro výchozí a náhradní písma.
  3. Vytvořte FontSubstRule s podmínkou WhenInaccessible.
  4. Přidejte pravidlo do FontSubstRuleCollection.
  5. Přiřaďte kolekci pomocí metody FontsManager.setFontSubstRuleList.
  6. Vykreslete nebo konvertujte prezentaci.

Následující příklad v jazyce Python nahrazuje Arial za SomeRareFont, když je SomeRareFont nedostupné, a poté vykresluje první snímek pro ověření výsledku. Náhradní písmo musí být dostupné pro Aspose.Slides.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FontData, FontSubstCondition, FontSubstRule, FontSubstRuleCollection, ImageFormat, Presentation

presentation = Presentation("Fonts.pptx")
try:
    source_font = FontData("SomeRareFont")
    substitute_font = FontData("Arial")
    substitution_rule = FontSubstRule(source_font, substitute_font, FontSubstCondition.WhenInaccessible)

    substitution_rules = FontSubstRuleCollection()
    substitution_rules.add(substitution_rule)
    presentation.getFontsManager().setFontSubstRuleList(substitution_rules)

    image = presentation.getSlides().get_Item(0).getImage(1.0, 1.0)
    try:
        image.save("slide.jpg", ImageFormat.Jpeg)
    finally:
        image.dispose()
finally:
    presentation.dispose()

Omezení pro písma matematických rovnic

Pravidla náhrady písem jsou součástí standardního procesu výběru písma používaného při vykreslování a konverzi. Fungují pro běžný text, pokud Aspose.Slides může nahradit nedostupné písmo dostupným písmem určeným pravidlem.

Rovnice Office Math mají další požadavek. Pokud rovnice používá Cambria Math, Aspose.Slides může potřebovat právě toto písmo pro výpočet a vykreslení rozvržení rovnice. Pravidlo, které nahrazuje jiné matematické písmo, např. STIX Two Math, nemůže nahradit Cambria Math pro tento účel a vykreslování může stále hlásit, že Cambria Math je požadováno.

Pro vykreslení nebo konverzi takové prezentace zajistěte, aby bylo Cambria Math dostupné pro Aspose.Slides. Nainstalujte jej v operačním systému nebo načtěte jako external font.

Toto omezení se vztahuje na rozvržení rovnic. Výše popsaná pravidla náhrady se stále vztahují na běžný text v prezentaci.

Často kladené otázky

Jaký je rozdíl mezi nahrazením písma a náhradou písma?

Font replacement úmyslně mění jedno písmo na jiné v celé prezentaci. Náhrada písma vybírá písmo pro vykreslený výstup, když je splněna nakonfigurovaná podmínka, například když je původní písmo nedostupné.

Kdy se pravidla náhrady aplikují?

Pravidla se podílejí na font selection sequence během vykreslování a konverze. S podmínkou WhenInaccessible se pravidlo použije pouze tehdy, když Aspose.Slides nemůže získat výchozí písmo.

Co se stane, když písmo chybí a není nakonfigurováno žádné pravidlo náhrady?

Aspose.Slides vybere nejbližší dostupné písmo podle svého procesu výběru písma. Výsledek závisí na písmenech dostupných v runtime prostředí.

Mohu načíst externí písma, aby se zabránilo náhradě?

Ano. Můžete load external fonts, aby je Aspose.Slides mohl používat během vykreslování a konverze.

Rozděluje Aspose písma spolu s knihovnou?

Není. Vy jste zodpovědní za poskytování písem a dodržování jejich licencí.

Mohou se výsledky náhrady lišit mezi Windows, Linux a macOS?

Ano. Instalovaná písma a umístění hledání písem se liší podle operačního systému, takže písmo dostupné na jednom počítači může vyžadovat náhradu na jiném.

Jak zajistit konzistentní výběr písem při dávkových konverzích?

Používejte stejné soubory písem a jejich verze na každém počítači nebo kontejneru, load required external fonts a embed fonts, pokud licence umožňuje. Můžete také před exportem zavolat FontsManager.getSubstitutions, abyste identifikovali neočekávané náhrady.