Betűtípus-helyettesítés beállítása prezentációkban Python használatával Java-n keresztül

Áttekintés

A betűtípus‑helyettesítés lehetővé teszi, hogy az Aspose.Slides egy elérhető betűtípust használjon egy olyan betűtípus helyett, amelyet a prezentáció megjelenítése vagy konvertálása során nem lehet elérni. A helyettesítés a rendering eredményét érinti; nem módosítja a prezentáció tartalmához rendelt betűtípust.

Meghatározhatja, hogy mely betűtípust kell használni, ha egy adott betűtípus nem érhető el, és ellenőrizheti a Aspose.Slides által a rendering során alkalmazott helyettesítéseket. Ez segít egységes kimenetet biztosítani különböző környezetekben, ahol eltérő betűtípusok vannak telepítve.

Ha egy betűtípus elérhető, de nincs számára dedikált félkövér változat, tekintse meg a Handle Fonts Without a Dedicated Bold Typeface című szakaszt. Ebben a szakaszban leírják, hogyan kell rasterizálni az érintett szöveget PDF‑exportáláskor, valamint az ennek szövegkijelölésre, keresésre és méretezésre gyakorolt hatásait.

Betűtípus‑helyettesítések lekérése

Használja a FontsManager.getSubstitutions metódust annak meghatározásához, mely betűtípusok lesznek helyettesítve a prezentáció rendering során. A metódus FontSubstitutionInfo objektumokat ad vissza, amelyek az eredeti és a helyettesített betűtípusneveket tartalmazzák.

Az alábbi Python‑példa felsorolja az összes betűtípus‑helyettesítést egy prezentációhoz:

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()

Betűtípus‑helyettesítések lekérése a kiválasztott diákra

Használja a FontsManager.getSubstitutions túlterhelést Java‑egész számú tömb argumentummal, hogy csak a kiválasztott diák megjelenítéséhez szükséges helyettesítéseket ellenőrizze. Ez hasznos, ha a prezentáció egy részét rendereli vagy exportálja, fokozatosan ellenőrzi a nagy prezentációt, olyan diákokat keres, amelyek nem elérhető betűtípusokra támaszkodnak, vagy minimális betűtípus‑csomagot szeretne előkészíteni egy szerverhez vagy konténerhez, illetve a rendering‑különbségek diagnosztizálásához anélkül, hogy a nem releváns diákokat feldolgozná.

A slides tömb egy‑bázisú dia‑indexeket tartalmaz: a 1 az első diát jelöli. Ezzel szemben a Presentation.getSlides gyűjteményelérő null‑bázisú indexelést használ, így ugyanaz a dia a presentation.getSlides().get_Item(0) kifejezéssel érhető el. Tartsa észben ezt a különbséget a tömb összeállításakor, hogy elkerülje az off‑by‑one hibákat.

Hívja a túlterhelést a Presentation.getFontsManager metóduson keresztül. Csak a kiválasztott diák renderelése közben meghatározott helyettesítéseket adja vissza. Minden eredmény egy FontSubstitutionInfo objektum, amely az eredeti és a helyettesített betűtípusneveket tartalmazza. Az eredmény tükrözi a jelenlegi betűtípus‑környezetet, a konfigurált visszaeső szabályokat, a FontSubstRuleCollection‑ben tárolt helyettesítési szabályokat és a externally loaded fonts listáját.

Ugyanaz a helyettesítés több, mint egy kiválasztott diához is szükséges lehet. Szűrje le a duplikátumokat, amikor betűtípus‑leltárt vagy pre‑flight jelentést készít. Az alábbi példa minden visszaadott helyettesítést jelent, majd egy rendezett listát hoz létre az egyedi betűtípus‑leképezésekről:

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()

A FontsManager osztály mindkét túlterhelést biztosítja. Válassza a megfelelőt a rendering művelet hatókörétől függően:

Metódus Használja, ha
getSubstitutions argumentumok nélkül Az egész prezentációhoz szükséges helyettesítések.
getSubstitutions Java‑egész számú tömbbel Kiválasztott tartományhoz, fokozatos ellenőrzéshez vagy részleges exportáláshoz szükséges helyettesítések.

Betűtípus‑helyettesítési szabályok beállítása

Ahhoz, hogy meghatározza, mely betűtípust használja az Aspose.Slides egy forrás‑betűtípus hiánya esetén:

  1. Töltse be a prezentációt.
  2. Hozzon létre betűtípus‑definíciókat a forrás és a helyettesítő betűtípusokhoz.
  3. Hozzon létre egy FontSubstRule objektumot a WhenInaccessible feltétellel.
  4. Adja hozzá a szabályt egy FontSubstRuleCollection gyűjteményhez.
  5. Rendelje hozzá a gyűjteményt a FontsManager.setFontSubstRuleList metódussal.
  6. Renderelje vagy konvertálja a prezentációt.

Az alábbi Python‑példa a Arial‑t helyettesíti a SomeRareFont‑nal, amikor a SomeRareFont nem elérhető, majd rendereli az első diát a végeredmény ellenőrzéséhez. A helyettesítő betűtípusnak elérhetőnek kell lennie az Aspose.Slides számára.

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()

Matematikai egyenlet‑betűtípusok korlátozásai

A betűtípus‑helyettesítési szabályok a rendering és konvertálás során használt standard betűtípus‑kiválasztási folyamat részei. Szokásos szövegre működnek, amikor az Aspose.Slides helyettesítheti a nem elérhető betűtípust a szabályban megadott elérhető betűtípussal.

Az Office Math egyenleteknek további követelményük van. Ha egy egyenlet Cambria Math‑ot használ, az Aspose.Slidesnek pontosan ezt a betűtípust kell rendelkezésre állnia az egyenlet elrendezésének kiszámításához és rendereléséhez. Egy másik matematikai betűtípust, például STIX Two Math‑ot helyettesítő szabály nem tudja felváltani a Cambria Math‑ot, ezért a rendering továbbra is jelezheti, hogy a Cambria Math‑ra van szükség.

Ilyen prezentáció rendereléséhez vagy konvertálásához tegye a Cambria Math betűtípust elérhetővé az Aspose.Slides számára. Telepítse a rendszerben, vagy töltse be egy external font‑ként.

Ez a korlátozás az egyenlet‑elrendezésre vonatkozik. A fent leírt helyettesítési szabályok továbbra is érvényesek a szokásos prezentáció‑szövegre.

GYIK

Mi a különbség a betűtípus‑cseréhez és a betűtípus‑helyettesítéshez?

Font replacement szándékosan megváltoztat egy betűtípust egy másikra a teljes prezentációban. A betűtípus‑helyettesítés pedig a renderelt kimenethez választ betűtípust, amikor a konfigurált feltétel teljesül, például ha az eredeti betűtípus nem elérhető.

Mikor alkalmazzák a helyettesítési szabályokat?

A szabályok részt vesznek a font selection sequence folyamatában rendering és konvertálás közben. A WhenInaccessible szabály csak akkor kerül használatra, amikor az Aspose.Slides nem tudja elérni a forrás‑betűtípust.

Mi történik, ha egy betűtípus hiányzik, és nincs konfigurálva helyettesítési szabály?

Az Aspose.Slides a legközelebbi elérhető betűtípust választja a betűtípus‑kiválasztási folyamata alapján. Az eredmény a futásidejű környezetben elérhető betűtípusoktól függ.

Betölthetek külső betűtípusokat a helyettesítés elkerüléséhez?

Igen. Betöltheti a external fonts‑t, hogy az Aspose.Slides használni tudja őket rendering és konvertálás közben.

Az Aspose terjeszti a betűtípusokat a könyvtárral együtt?

Nem. Ön felelős a betűtípusok biztosításáért és a licencfeltételek betartásáért.

Eltérhetnek a helyettesítési eredmények Windows, Linux és macOS között?

Igen. A telepített betűtípusok és a betűtípus‑keresési helyek operációs rendszerenként eltérnek, ezért egy gépen elérhető betűtípus egy másikon helyettesítést igényelhet.

Hogyan tehetem a betűtípus‑kiválasztást konzisztenssé kötegelt konverziók során?

Használja ugyanazokat a betűtáfileket és verziókat minden gépen vagy konténeren, load required external fonts, és embed fonts ha a licenc megengedi. Emellett hívhatja a FontsManager.getSubstitutions metódust exportálás előtt, hogy azonosítsa a nem várt helyettesítéseket.