ปรับแต่งแบบอักษร PowerPoint ใน JavaScript
ภาพรวม
Aspose.Slides ให้คุณใช้แบบอักษรที่กำหนดเองในงานนำเสนอโดยไม่ต้องติดตั้งบนระบบปฏิบัติการ คุณสามารถโหลดแบบอักษรจากโฟลเดอร์ที่กำหนดเอง, ให้แบบอักษรสำหรับงานนำเสนอเฉพาะผ่านแหล่งแบบอักษรระดับเอกสาร, หรือโหลดแบบอักษรภายนอกโดยตรงจากข้อมูลไบต์
แบบอักษรที่โหลดแล้วจะถูกใช้เมื่อทำการเรนเดอร์หรือส่งออกงานนำเสนอ เช่น ไปเป็น PDF, รูปภาพ, และรูปแบบอื่นที่รองรับ ซึ่งช่วยให้ผลลัพธ์ของงานนำเสนอคงที่ในสภาพแวดล้อมต่าง ๆ บทความนี้ยังอธิบายวิธีตรวจสอบโฟลเดอร์แบบอักษรที่ Aspose.Slides ใช้และวิธีล้างแคชแบบอักษรหลังจากทำงานกับแบบอักษรภายนอก
การลงทะเบียนแบบอักษรที่กำหนดเองสำหรับการเรนเดอร์แตกต่างจากการฝังแบบอักษรลงในไฟล์ PPTX หากต้องการให้แบบอักษรถูกเก็บอยู่ภายในงานนำเสนอเอง ให้ใช้ฟีเจอร์การฝังแบบอักษรโดยเฉพาะ
ธีมของงานนำเสนอสามารถอ้างอิงฟอนต์แฟมิลีต่าง ๆ สำหรับระบบการเขียนที่แตกต่างกัน การแมปนี้บันทึกชื่อแบบอักษรแต่ไม่ทำการติดตั้งหรือโหลดไฟล์แบบอักษร ดูที่ Script-Specific Theme Fonts เพื่อจัดการการแมปและใช้ตัวเลือกการโหลดด้านล่างเพื่อทำให้แบบอักษรที่อ้างอิงพร้อมใช้งานสำหรับการเรนเดอร์ที่สอดคล้องกัน
หมายเหตุ
Aspose Slides ให้คุณโหลดแบบอักษรเหล่านี้โดยใช้เมธอด loadExternalFonts:
โหลดแบบอักษรที่กำหนดเอง
Aspose.Slides ให้คุณโหลดแบบอักษรที่ใช้ในงานนำเสนอโดยไม่ต้องติดตั้งบนระบบ ระบบนี้มีผลต่อผลลัพธ์การส่งออก เช่น PDF, รูปภาพ, และรูปแบบอื่นที่รองรับ ทำให้เอกสารที่ได้มีลักษณะเหมือนกันในแต่ละสภาพแวดล้อม แบบอักษรจะถูกโหลดจากไดเรกทอรีที่กำหนดเอง
- ระบุหนึ่งหรือหลายโฟลเดอร์ที่มีไฟล์แบบอักษร
- เรียกเมธอดสแตติก FontsLoader.loadExternalFonts เพื่อโหลดแบบอักษรจากโฟลเดอร์เหล่านั้น
- โหลดและเรนเดอร์/ส่งออกงานนำเสนอ
- เรียก FontsLoader.clearCache เพื่อล้างแคชแบบอักษร
ตัวอย่างโค้ดต่อไปนี้แสดงกระบวนการโหลดแบบอักษร:
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
// กำหนดโฟลเดอร์ที่มีไฟล์แบบอักษรกำหนดเอง.
let externalFontFolder1 = "fonts";
let externalFontFolder2 = "extra-fonts";
let fontFolders = java.newArray("java.lang.String", [externalFontFolder1, externalFontFolder2]);
// โหลดแบบอักษรกำหนดเองจากโฟลเดอร์ที่ระบุ.
aspose.slides.FontsLoader.loadExternalFonts(fontFolders);
let presentation = null;
try {
presentation = new aspose.slides.Presentation("sample.pptx");
// เรนเดอร์/ส่งออกงานนำเสนอ (เช่น PDF, รูปภาพ หรือรูปแบบอื่น) โดยใช้แบบอักษรถูกโหลด.
presentation.save("output.pdf", aspose.slides.SaveFormat.Pdf);
} finally {
if (presentation != null) presentation.dispose();
// ล้างแคชแบบอักษรหลังจากทำงานเสร็จ.
aspose.slides.FontsLoader.clearCache();
}
หมายเหตุ
FontsLoader.loadExternalFonts เพิ่มโฟลเดอร์เพิ่มเติมในเส้นทางค้นหาแบบอักษร แต่ไม่เปลี่ยนลำดับการเริ่มต้นแบบอักษร
แบบอักษรถูกเริ่มต้นตามลำดับนี้:
- เส้นทางแบบอักษรเริ่มต้นของระบบปฏิบัติการ
- เส้นทางที่โหลดผ่าน FontsLoader
รับโฟลเดอร์แบบอักษรที่กำหนดเอง
Aspose.Slides มีเมธอด getFontFolders เพื่อให้คุณค้นหาโฟลเดอร์แบบอักษร เมธอดนี้จะคืนค่าโฟลเดอร์ที่ถูกเพิ่มผ่านเมธอด LoadExternalFonts และโฟลเดอร์แบบอักษรของระบบ
โค้ด JavaScript ด้านล่างแสดงวิธีใช้ getFontFolders:
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
// บรรทัดนี้แสดงโฟลเดอร์ที่ค้นหาไฟล์แบบอักษร.
// นั่นคือโฟลเดอร์ที่เพิ่มผ่านเมธอด LoadExternalFonts และโฟลเดอร์แบบอักษรของระบบ.
var fontFolders = aspose.slides.FontsLoader.getFontFolders();
ระบุแบบอักษรที่กำหนดใช้กับงานนำเสนอ
Aspose.Slides มีคุณสมบัติ setDocumentLevelFontSources เพื่อให้คุณระบุแบบอักษรภายนอกที่จะใช้กับงานนำเสนอ
โค้ด JavaScript ด้านล่างแสดงวิธีใช้คุณสมบัติ setDocumentLevelFontSources:
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
var memoryFont1 = java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "customfonts/CustomFont1.ttf"));
var memoryFont2 = java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "customfonts/CustomFont2.ttf"));
var loadOptions = new aspose.slides.LoadOptions();
loadOptions.getDocumentLevelFontSources().setFontFolders(java.newArray("java.lang.String", ["assets/fonts", "global/fonts"]));
loadOptions.getDocumentLevelFontSources().setMemoryFonts(java.newArray("[B", [java.newArray("byte", ["item1", "item2", "item3"])]));
var pres = new aspose.slides.Presentation("MyPresentation.pptx", loadOptions);
try {
// ทำงานกับงานนำเสนอ
// CustomFont1, CustomFont2, และแบบอักษรจากโฟลเดอร์ assets\fonts และ global\fonts รวมถึงโฟลเดอร์ย่อยของมัน สามารถใช้ได้ในงานนำเสนอ
} finally {
if (pres != null) {
pres.dispose();
}
}
จัดการแบบอักษรภายนอก
Aspose.Slides มีเมธอด loadExternalFont(byte[] data) เพื่อให้คุณโหลดแบบอักษรภายนอกจากข้อมูลไบต์
โค้ด JavaScript ด้านล่างแสดงกระบวนการโหลดแบบอักษรจากอาเรย์ไบต์:
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "loadExternalFonts", java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "ARIALN.TTF")));
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "loadExternalFonts", java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "ARIALNBI.TTF")));
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "loadExternalFonts", java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "ARIALNI.TTF")));
try {
var pres = new aspose.slides.Presentation("");
try {
// แบบอักษรภายนอกถูกโหลดระหว่างอายุการทำงานของงานนำเสนอ
} finally {
}
} finally {
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "clearCache");
}
คำถามที่พบบ่อย
แบบอักษรกำหนดเองส่งผลต่อการส่งออกไปยังรูปแบบทั้งหมด (PDF, PNG, SVG, HTML) หรือไม่?
ใช่. แบบอักษรที่เชื่อมต่อจะถูกใช้โดยตัวเรนเดอร์ในรูปแบบส่งออกทุกประเภท
แบบอักษรกำหนดเองจะถูกฝังอัตโนมัติใน PPTX ที่ได้หรือไม่?
ไม่. การลงทะเบียนแบบอักษรเพื่อการเรนเดอร์ไม่เท่ากับการฝังลงใน PPTX หากต้องการให้แบบอักษรถูกเก็บไว้ในไฟล์งานนำเสนอ ต้องใช้ ฟีเจอร์การฝัง
สามารถควบคุมพฤติกรรม fallback เมื่อแบบอักษรกำหนดเองไม่มี glyph บางตัวได้หรือไม่?
ใช่. กำหนดค่า การแทนที่แบบอักษร, กฎการแทนที่, และ ชุด fallback เพื่อระบุอย่างชัดเจนว่าจะแทนที่ด้วยแบบอักษรใดเมื่อ glyph ที่ต้องการไม่มีอยู่
สามารถใช้แบบอักษรในคอนเทนเนอร์ Linux/Docker โดยไม่ต้องติดตั้งระบบได้หรือไม่?
ใช่. ชี้ไปยังโฟลเดอร์แบบอักษรของคุณเองหรือโหลดแบบอักษรจากอาเรย์ไบต์ วิธีนี้จะทำให้ไม่มีการพึ่งพาโฟลเดอร์แบบอักษรของระบบในอิมเมจคอนเทนเนอร์
เรื่องลิขสิทธิ์—สามารถฝังแบบอักษรกำหนดเองใดก็ได้โดยไม่มีข้อจำกัดหรือไม่?
คุณต้องรับผิดชอบต่อการปฏิบัติตามเงื่อนไขลิขสิทธิ์ของแบบอักษร เงื่อนไขจะแตกต่างกัน; บางลิขสิทธิ์ห้ามฝังหรือห้ามใช้เชิงพาณิชย์ ควรตรวจสอบ EULA ของแบบอักษรก่อนนำผลลัพธ์ไปเผยแพร่