Betűkészlet-helyettesítés konfigurálása prezentációkban Java használatával

Áttekintés

A betűkészlethelyettesítés lehetővé teszi, hogy az Aspose.Slides egy elérhető betűkészletet használjon egy nem hozzáférhető betűkészlet helyett, amikor a prezentáció megjelenik vagy konvertálódik. A helyettesítés csak a renderelt kimenetet érinti; nem módosítja a prezentáció tartalmához tartozó betűkészletet.

Megadhatja, hogy melyik betűkészletet használja, ha egy bizonyos betűkészlet nem elérhető, és ellenőrizheti az Aspose.Slides által a renderelés során végrehajtott helyettesítéseket. Ez segít abban, hogy a kimenet konzisztens maradjon a különböző telepített betűkészletekkel rendelkező környezetek között.

Betűkészlethelyettesítések lekérése

Használja a IFontsManager.getSubstitutions metódust annak meghatározásához, hogy mely betűkészletek lesznek helyettesítve a prezentáció renderelése során. A metódus FontSubstitutionInfo objektumokat ad vissza, amelyek az eredeti és a helyettesített betűkészlet nevét tartalmazzák.

Az alábbi Java példa felsorolja az összes betűkészlethelyettesítést egy prezentációhoz:

import com.aspose.slides.FontSubstitutionInfo;
import com.aspose.slides.Presentation;

Presentation presentation = new Presentation("Presentation.pptx");
try {
    for (FontSubstitutionInfo substitution : presentation.getFontsManager().getSubstitutions()) {
        System.out.println(substitution.getOriginalFontName() + " -> " + substitution.getSubstitutedFontName());
    }
} finally {
    presentation.dispose();
}

Betűkészlethelyettesítések lekérése a kiválasztott diákhoz

Használja az IFontsManager.getSubstitutions túlterhelést int[] slides argumentummal, hogy csak a konkrét diák rendereléséhez szükséges helyettesítéseket vizsgálja. Ez hasznos, ha a prezentáció egy részét rendereli vagy exportálja, egy nagy prezentációt fokozatosan ellenőrzi, olyan diákat keres, amelyek nem elérhető betűkészletektől függenek, minimális betűkészletcsomagot készít szerver vagy konténer számára, vagy a renderelési eltéréseket diagnosztizálja anélkül, hogy a nem releváns diák feldolgozása megtörténne.

A slides tömb egy‑alapú diaindexeket tartalmaz: az 1 az első diát jelöli. Ezzel szemben a Presentation.getSlides kollekciólekérő nulla‑alapú indexelést használ, így ugyanaz a dia presentation.getSlides().get_Item(0)‑ként érhető el. Tartsa szem előtt ezt a különbséget a tömb építésekor, hogy elkerülje az egyes eltérésekből adódó hibákat.

Hívja a túlterhelést a Presentation.getFontsManager metóduson keresztül. Ez 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űkészlet nevét tartalmazza. Az eredmény tükrözi az aktuális betűkészlet‑környezetet, a konfigurált tartalék szabályokat, a IFontSubstRuleCollection tárolt helyettesítési szabályokat, valamint a külsőleg betöltött betűkészleteket.

Ugyanaz a helyettesítés több kiválasztott dia esetén is szükséges lehet. Távolítsa el a duplikátumokat az eredményekből, amikor betűkészlet‑leltárt vagy előzetes ellenőrzési 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űkészlet‑leképezésekről:

import com.aspose.slides.FontSubstitutionInfo;
import com.aspose.slides.Presentation;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

Presentation presentation = new Presentation("Presentation.pptx");
try {
    int[] selectedSlides = { 1, 3, 5 };
    List<FontSubstitutionInfo> substitutions = new ArrayList<>();
    for (FontSubstitutionInfo substitution : presentation.getFontsManager().getSubstitutions(selectedSlides)) {
        substitutions.add(substitution);
    }

    System.out.println("Substitutions for the selected slides:");
    for (FontSubstitutionInfo substitution : substitutions) {
        System.out.println(substitution.getOriginalFontName() + " -> " + substitution.getSubstitutedFontName());
    }

    Set<String> sortedPreflightEntries = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
    for (FontSubstitutionInfo substitution : substitutions) {
        String entry = substitution.getOriginalFontName() + " -> " + substitution.getSubstitutedFontName();
        sortedPreflightEntries.add(entry);
    }

    System.out.println("Deduplicated font preflight report:");
    for (String entry : sortedPreflightEntries) {
        System.out.println(entry);
    }
} finally {
    presentation.dispose();
}

Az IFontsManager interfész mindkét túlterhelést biztosítja. Válasszon egyet a renderelési művelet hatókörének megfelelően:

Túlterhelés Használja, ha
getSubstitutions with no arguments Az egész prezentációhoz szükséges helyettesítések.
getSubstitutions with int[] slides Kiválasztott tartományhoz, fokozatos ellenőrzéshez vagy részleges exporthoz szükséges helyettesítések.

Betűkészlethelyettesítési szabályok beállítása

Az Aspose.Slides által használandó betűkészlet megadásához, ha a forrás betűkészlet nem érhető el:

  1. Töltse be a prezentációt.
  2. Hozzon létre betűkészletdefiníciókat a forrás és a helyettesítő betűkészletekhez.
  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ódus használatával.
  6. Renderelje vagy konvertálja a prezentációt.

Az alábbi Java példa a SomeRareFont helyett az Arial betűkészletet használja, ha a SomeRareFont nem érhető el, majd rendereli az első diát az eredmény ellenőrzéséhez. A helyettesítő betűkészletnek elérhetőnek kell lennie az Aspose.Slides számára.

import com.aspose.slides.FontData;
import com.aspose.slides.FontSubstCondition;
import com.aspose.slides.FontSubstRule;
import com.aspose.slides.FontSubstRuleCollection;
import com.aspose.slides.IFontData;
import com.aspose.slides.IFontSubstRule;
import com.aspose.slides.IFontSubstRuleCollection;
import com.aspose.slides.IImage;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;

Presentation presentation = new Presentation("Fonts.pptx");
try {
    IFontData sourceFont = new FontData("SomeRareFont");
    IFontData substituteFont = new FontData("Arial");
    IFontSubstRule substitutionRule = new FontSubstRule(sourceFont, substituteFont, FontSubstCondition.WhenInaccessible);

    IFontSubstRuleCollection substitutionRules = new FontSubstRuleCollection();
    substitutionRules.add(substitutionRule);
    presentation.getFontsManager().setFontSubstRuleList(substitutionRules);

    IImage image = presentation.getSlides().get_Item(0).getImage(1f, 1f);
    try {
        image.save("slide.jpg", ImageFormat.Jpeg);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Korlátozások a matematikai egyenlet betűkészleteihez

A betűkészlethelyettesítési szabályok a renderelés és konvertálás során használt szabványos betűkészlet‑kiválasztási folyamat részei. Rendszeres szövegnél működnek, amikor az Aspose.Slides egy nem elérhető betűkészletet helyettesíthet a szabály által megadott elérhető betűkészlettel.

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

Az ilyen prezentáció rendereléséhez vagy konvertálásához tegye a Cambria Math betűkészletet elérhetővé az Aspose.Slides számára. Telepítse a operációs rendszerben, vagy töltse be külső betűkészletként.

Ez a korlátozás az egyenletelrendezésre vonatkozik. A fent leírt helyettesítési szabályok továbbra is érvényesek a prezentáció rendszeres szövegére.

GYIK

Mi a különbség a betűkészletcsere és a betűkészlethelyettesítés között?

Font replacement szándékosan egy betűkészletet egy másikra cserél a teljes prezentációban. A betűkészlethelyettesítés a renderelt kimenethez választ betűkészletet, amikor a konfigurált feltétel teljesül, például amikor az eredeti betűkészlet nem érhető el.

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

A szabályok a renderelés és konvertálás során a betűkészlet‑kiválasztási sorozat részeként működnek. A WhenInaccessible esetén a szabály csak akkor kerül alkalmazásra, amikor az Aspose.Slides nem tudja elérni a forrás betűkészletet.

Mi történik, ha egy betűkészlet hiányzik és nincs beállítva helyettesítési szabály?

Az Aspose.Slides a legközelebbi elérhető betűkészletet választja a betűkészlet‑kiválasztási folyamata alapján. Az eredmény a futásidő környezetben elérhető betűkészletektől függ.

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

Igen. Külső betűkészleteket tölthet be, hogy az Aspose.Slides azok felhasználhassa a renderelés és konvertálás során.

Az Aspose a betűkészleteket a könyvtárral együtt terjeszti?

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

A helyettesítési eredmények különbözhetnek Windows, Linux és macOS között?

Igen. Az operációs rendszer szerint változnak a telepített betűkészletek és a betűkészlet‑keresési helyek, így egy gépen elérhető betűkészlet egy másikon helyettesítést igényelhet.

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

Használja ugyanazokat a betűkészlet‑fájlokat és verziókat minden gépen vagy konténerben, töltse be a szükséges külső betűkészleteket, és ágyazza be a betűkészleteket ha a licenc megengedi. Emellett meghívhatja a IFontsManager.getSubstitutions metódust exportálás előtt, hogy azonosítsa a váratlan helyettesítéseket.