Betűkészletek beágyazása prezentációkba PHP használatával
Bevezetés
A PowerPointba ágyazott betűkészletek hasznosak, amikor azt szeretné, hogy a bemutatója minden rendszeren vagy eszközön helyesen jelenjen meg. Ha harmadik fél vagy nem szabványos betűkészletet használt, mert kreatív volt a munkájában, akkor még több ok áll a betűkészlet beágyazása mellett. Ellenkező esetben (beágyazott betűkészletek nélkül) a diákon lévő szövegek vagy számok, az elrendezés, a stílus stb. megváltozhatnak vagy zavaró téglalapokká alakulhatnak.
A FontsManager osztály, a FontData osztály és a Compress osztály tartalmazza a legtöbb szükséges metódust a PowerPoint‑prezentációkba ágyazott betűkészletek kezeléséhez.
Beágyazott betűkészletek lekérése és eltávolítása
Az Aspose.Slides a getEmbeddedFonts metódust (amely a FontsManager osztályban érhető el) biztosítja, hogy lekérdezhesse (vagy megtudja), mely betűkészletek vannak beágyazva egy bemutatóban. A betűkészletek eltávolításához a removeEmbeddedFont metódust (szintén ugyanabban az osztályban) használják.
Ez a PHP kód megmutatja, hogyan lehet lekérni és eltávolítani a beágyazott betűkészleteket egy bemutatóból:
# Egy Presentation objektum példányosítása, amely egy prezentációs fájlt képvisel
$pres = new Presentation("EmbeddedFonts.pptx");
try {
# Egy diát renderel, amely szövegkeretet tartalmaz, beágyazott "FunSized" betűkészlettel
$slideImage = $pres->getSlides()->get_Item(0)->getImage(new Java("java.awt.Dimension", 960, 720));
# A képet JPEG formátumban a lemezen menti
try {
$slideImage->save("picture1_out.jpg", ImageFormat::Jpeg);
} finally {
if (!java_is_null($slideImage)) {
$slideImage->dispose();
}
}
$fontsManager = $pres->getFontsManager();
# Az összes beágyazott betűkészlet lekérése
$embeddedFonts = $fontsManager->getEmbeddedFonts();
# A "Calibri" betűkészlet megtalálása
$calibriEmbeddedFont = null;
$Array = new java_class("java.lang.reflect.Array");
for($i = 0; $i < java_values($Array->getLength($embeddedFonts)) ; $i++) {
echo("" . $embeddedFonts[$i]->getFontName());
if ("Calibri"->equals($embeddedFonts[$i]->getFontName())) {
$calibriEmbeddedFont = $embeddedFonts[$i];
break;
}
}
# A "Calibri" betűkészlet eltávolítása
$fontsManager->removeEmbeddedFont($calibriEmbeddedFont);
# A prezentáció renderelése; "Calibri" betűkészlet egy meglévővel lesz helyettesítve
$slideImage = $pres->getSlides()->get_Item(0)->getImage(new Java("java.awt.Dimension", 960, 720));
# A képet JPEG formátumban a lemezen menti
try {
$slideImage->save("picture2_out.jpg", ImageFormat::Jpeg);
} finally {
if (!java_is_null($slideImage)) {
$slideImage->dispose();
}
}
# A prezentáció mentése a beágyazott "Calibri" betűkészlet nélkül a lemezre
$pres->save("WithoutManageEmbeddedFonts_out.ppt", SaveFormat::Ppt);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Beágyazott betűkészletek hozzáadása
Az EmbedFontCharacters osztály és a addEmbeddedFont metódus két túlterhelése segítségével kiválaszthatja a kívánt (beágyazási) szabályt a betűkészletek bemutatóba ágyazásához. Ez a PHP kód megmutatja, hogyan ágyazhat be és adhat hozzá betűkészleteket egy bemutatóhoz:
# Betölti a prezentációt
$pres = new Presentation("Fonts.pptx");
try {
$allFonts = $pres->getFontsManager()->getFonts();
$embeddedFonts = $pres->getFontsManager()->getEmbeddedFonts();
$Array = new java_class("java.lang.reflect.Array");
foreach($allFonts as $font) {
$embeddedFontsContainsFont = false;
for($i = 0; $i < java_values($Array->getLength($embeddedFonts)) ; $i++) {
if ($embeddedFonts[$i]->equals($font)) {
$embeddedFontsContainsFont = true;
break;
}
}
if (!$embeddedFontsContainsFont) {
$pres->getFontsManager()->addEmbeddedFont($font, EmbedFontCharacters->All);
$embeddedFonts = $pres->getFontsManager()->getEmbeddedFonts();
}
}
# A prezentációt lemezre menti
$pres->save("AddEmbeddedFont_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Beágyazott betűkészletek tömörítése
Az beágyazott betűkészletek tömörítésével és a fájlméret csökkentésével segíteni, az Aspose.Slides a compressEmbeddedFonts metódust (amely a Compress osztályban érhető el) biztosítja.
Ez a PHP kód megmutatja, hogyan lehet tömöríteni a beágyazott PowerPoint betűkészleteket:
$pres = new Presentation("pres.pptx");
try {
Compress->compressEmbeddedFonts($pres);
$pres->save("pres-out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
GYIK
Hogyan tudhatom, hogy egy adott betűkészlet a bemutatóban a beágyazás ellenére is helyettesítésre kerül a renderelés során?
Ellenőrizze a helyettesítési információkat a betűkészlet-kezelőben és a visszalépési/helyettesítési szabályokat: ha a betűkészlet nem érhető el vagy korlátozott, akkor egy visszalépő betűkészlet lesz használva.
Éri-e meg a “rendszer” betűkészletek, például az Arial/Calibri beágyazása?
Általában nem – ezek szinte mindig elérhetők. Azonban vékony környezetek („könnyű” környezetek, például Docker vagy egy előre telepített betűkészletek nélküli Linux szerver) a rendszerbetűkészletek beágyazása kiküszöbölheti a váratlan helyettesítések kockázatát.