Bädda in teckensnitt i presentationer med JavaScript
Introduction
Inbäddade teckensnitt i PowerPoint är användbara när du vill att din presentation ska visas korrekt på alla system eller enheter. Om du använde ett tredjeparts‑ eller icke‑standardteckensnitt för att vara kreativ i ditt arbete, har du ännu fler skäl att bädda in teckensnittet. Annars (utan inbäddade teckensnitt) kan texter eller siffror på dina bilder, layout, formatering osv. förändras eller förvandlas till förvirrande rektanglar.
Klassen FontsManager, klassen FontData, klassen Compress och deras klasser innehåller de flesta egenskaperna och metoderna du behöver för att arbeta med inbäddade teckensnitt i PowerPoint‑presentationer.
Get or Remove Embedded Fonts from Presentation
Aspose.Slides tillhandahåller metoden getEmbeddedFonts (tillgänglig via klassen FontsManager) så att du kan hämta (eller ta reda på) de teckensnitt som är inbäddade i en presentation. För att ta bort teckensnitt används metoden removeEmbeddedFont (tillgänglig via samma klass).
Denna JavaScript‑kod visar hur du hämtar och tar bort inbäddade teckensnitt från en presentation:
// Skapar ett Presentation‑objekt som representerar en presentationsfil
var pres = new aspose.slides.Presentation("EmbeddedFonts.pptx");
try {
// Renderar en bild som innehåller en textram som använder inbäddade "FunSized"
var slideImage = pres.getSlides().get_Item(0).getImage(java.newInstanceSync("java.awt.Dimension", 960, 720));
// Sparar bilden till disk i JPEG‑format
try {
slideImage.save("picture1_out.jpg", aspose.slides.ImageFormat.Jpeg);
} finally {
if (slideImage != null) {
slideImage.dispose();
}
}
var fontsManager = pres.getFontsManager();
// Hämtar alla inbäddade teckensnitt
var embeddedFonts = fontsManager.getEmbeddedFonts();
// Letar upp teckensnittet "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;
}
}
// Tar bort teckensnittet "Calibri"
fontsManager.removeEmbeddedFont(calibriEmbeddedFont);
// Renderar presentationen; teckensnittet "Calibri" ersätts med ett befintligt
slideImage = pres.getSlides().get_Item(0).getImage(java.newInstanceSync("java.awt.Dimension", 960, 720));
// Sparar bilden till disk i JPEG‑format
try {
slideImage.save("picture2_out.jpg", aspose.slides.ImageFormat.Jpeg);
} finally {
if (slideImage != null) {
slideImage.dispose();
}
}
// Sparar presentationen utan inbäddat teckensnitt "Calibri" till disk
pres.save("WithoutManageEmbeddedFonts_out.ppt", aspose.slides.SaveFormat.Ppt);
} finally {
if (pres != null) {
pres.dispose();
}
}
Add Embedded Fonts to Presentation
Genom att använda enumet EmbedFontCharacters och två överlagringar av metoden addEmbeddedFont kan du välja din föredragna (inbäddnings)regel för att bädda in teckensnitten i en presentation. Denna JavaScript‑kod visar hur du bäddar in och lägger till teckensnitt i en presentation:
// Laddar presentationen
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();
}
});
// Sparar presentationen till disk
pres.save("AddEmbeddedFont_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Compress Embedded Fonts
För att du ska kunna komprimera de teckensnitt som är inbäddade i en presentation och minska filstorleken tillhandahåller Aspose.Slides metoden compressEmbeddedFonts (tillgänglig via klassen Compress).
Denna JavaScript‑kod visar hur du komprimerar inbäddade PowerPoint‑teckensnitt:
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
How can I tell that a specific font in the presentation will still be substituted during rendering despite embedding?
Kontrollera substitutionsinformation i teckenhanteraren och fallback/substitutionsregler: om teckensnittet är otillgängligt eller begränsat används en reserv.
Is it worth embedding “system” fonts like Arial/Calibri?
Vanligtvis nej – de är nästan alltid tillgängliga. Men för full portabilitet i “tunna” miljöer (Docker, en Linux‑server utan förinstallerade teckensnitt) kan inbäddning av systemteckensnitt eliminera risken för oväntade ersättningar.