Vkládání fontů do prezentací pomocí JavaScriptu
Úvod
Embedded fonts in PowerPoint jsou užitečné, když chcete, aby se vaše prezentace zobrazovala správně na jakémkoli systému nebo zařízení. Pokud jste použili font od třetí strany nebo nestandardní font, protože jste byli kreativní, máte ještě více důvodů font vložit. Jinak (bez vložených fontů) se texty nebo čísla na vašich snímcích, rozvržení, stylování atd. mohou změnit nebo se proměnit v matoucí obdélníky.
Třída FontsManager, třída FontData a třída Compress obsahují většinu vlastností a metod, které potřebujete k práci s vloženými fonty v prezentacích PowerPoint.
Získání nebo odebrání vložených fontů z prezentace
Aspose.Slides poskytuje metodu getEmbeddedFonts (vystupující z třídy FontsManager), která vám umožní získat (nebo zjistit) fonty vložené v prezentaci. K odebrání fontů se používá metoda removeEmbeddedFont (vystupující ze stejné třídy).
Tento JavaScriptový kód vám ukazuje, jak získat a odebrat vložené fonty z prezentace:
// Vytvoří objekt Presentation, který představuje soubor prezentace
var pres = new aspose.slides.Presentation("EmbeddedFonts.pptx");
try {
// Vykreslí snímek obsahující textový rámec, který používá vložený "FunSized"
var slideImage = pres.getSlides().get_Item(0).getImage(java.newInstanceSync("java.awt.Dimension", 960, 720));
// Uloží obrázek na disk ve formátu JPEG
try {
slideImage.save("picture1_out.jpg", aspose.slides.ImageFormat.Jpeg);
} finally {
if (slideImage != null) {
slideImage.dispose();
}
}
var fontsManager = pres.getFontsManager();
// Získá všechny vložené fonty
var embeddedFonts = fontsManager.getEmbeddedFonts();
// Najde font "Calibri"
var calibriEmbeddedFont = null;
for (var i = 0; i < embeddedFonts.length; i++) {
console.log("" + embeddedFonts[i].getFontName());
if ("Calibri" == embeddedFonts[i].getFontName()) {
calibriEmbeddedFont = embeddedFonts[i];
break;
}
}
// Odstraní font "Calibri"
fontsManager.removeEmbeddedFont(calibriEmbeddedFont);
// Vykreslí prezentaci; font "Calibri" je nahrazen existujícím
slideImage = pres.getSlides().get_Item(0).getImage(java.newInstanceSync("java.awt.Dimension", 960, 720));
// Uloží obrázek na disk ve formátu JPEG
try {
slideImage.save("picture2_out.jpg", aspose.slides.ImageFormat.Jpeg);
} finally {
if (slideImage != null) {
slideImage.dispose();
}
}
// Uloží prezentaci bez vloženého fontu "Calibri" na disk
pres.save("WithoutManageEmbeddedFonts_out.ppt", aspose.slides.SaveFormat.Ppt);
} finally {
if (pres != null) {
pres.dispose();
}
}
Přidání vložených fontů do prezentace
Pomocí výčtu EmbedFontCharacters a dvou přetížení metody addEmbeddedFont můžete vybrat preferované (vkládací) pravidlo pro vložení fontů do prezentace. Tento JavaScriptový kód vám ukazuje, jak vložit a přidat fonty do prezentace:
// Načte prezentaci
var pres = new aspose.slides.Presentation("Fonts.pptx");
try {
var allFonts = pres.getFontsManager().getFonts();
var embeddedFonts = pres.getFontsManager().getEmbeddedFonts();
allFonts.forEach(font => {
var embeddedFontsContainsFont = false;
for (var i = 0; i < embeddedFonts.length; i++) {
if (embeddedFonts[i].equals(font)) {
embeddedFontsContainsFont = true;
break;
}
}
if (!embeddedFontsContainsFont) {
pres.getFontsManager().addEmbeddedFont(font, aspose.slides.EmbedFontCharacters.All);
embeddedFonts = pres.getFontsManager().getEmbeddedFonts();
}
});
// Uloží prezentaci na disk
pres.save("AddEmbeddedFont_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Komprimace vložených fontů
Aby vám umožnil komprimovat fonty vložené v prezentaci a snížit její velikost souboru, Aspose.Slides poskytuje metodu compressEmbeddedFonts (vystupující z třídy Compress).
Tento JavaScriptový kód vám ukazuje, jak komprimovat vložené fonty PowerPoint:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
aspose.slides.Compress.compressEmbeddedFonts(pres);
pres.save("pres-out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
FAQ
Jak mohu zjistit, že konkrétní font v prezentaci bude i přesto při vykreslování nahrazen, i když je vložen?
Zkontrolujte substitution information ve správci fontů a fallback/substitution rules: pokud není font k dispozici nebo je omezen, bude použita náhradní možnost.
Stojí za to vkládat „systémové“ fonty jako Arial/Calibri?
Obvykle ne — jsou téměř vždy k dispozici. Ale pro úplnou přenositelnost v „tenkých“ prostředích (Docker, Linuxový server bez předinstalovaných fontů) může vložení systémových fontů eliminovat riziko neočekávaných náhrad.