ฝังฟอนต์ในงานนำเสนอโดยใช้ С++
บทนำ
ฟอนต์ที่ฝังใน PowerPoint ช่วยให้มั่นใจว่าการนำเสนอของคุณคงรูปลักษณ์ตามที่ตั้งใจเมื่อเปิดบนระบบหรืออุปกรณ์ใดก็ได้ นี่เป็นสิ่งสำคัญอย่างยิ่งเมื่อใช้ฟอนต์ที่กำหนดเอง, ฟอนต์จากบุคคลที่สาม, หรือฟอนต์ที่ไม่เป็นมาตรฐานสำหรับการสร้างแบรนด์หรือการออกแบบเชิงสร้างสรรค์ หากไม่มีฟอนต์ที่ฝังไว้ ข้อความอาจถูกแทนที่, การจัดวางอาจเสียหาย, และอักขระอาจปรากฏเป็นสัญลักษณ์หรือสี่เหลี่ยมที่อ่านไม่ออก ทำให้การออกแบบโดยรวมเสียหาย
Aspose.Slides for C++ ให้ชุด API ที่มีประสิทธิภาพเพื่อจัดการฟอนต์ที่ฝังไว้โดยโปรแกรม คุณสามารถใช้คลาส FontsManager และ FontData เพื่อสืบค้น, เพิ่ม หรือ ลบ ฟอนต์ที่ฝังไว้ในไฟล์การนำเสนอของคุณ นอกจากนี้คลาส Compress ช่วยให้คุณปรับขนาดไฟล์โดยการบีบอัดข้อมูลฟอนต์โดยไม่กระทบต่อคุณภาพหรือรูปลักษณ์
เครื่องมือเหล่านี้ให้การควบคุมเต็มที่ในการฝังฟอนต์ ช่วยให้คุณรักษาการจัดรูปแบบตัวอักษรที่สอดคล้องกันระหว่างแพลตฟอร์มต่าง ๆ พร้อมทั้งลดขนาดไฟล์เมื่อต้องการ
รับฟอนต์ที่ฝังจากการนำเสนอ
Aspose.Slides for C++ ให้เมธอด GetEmbeddedFonts ผ่านคลาส FontsManager ซึ่งช่วยให้คุณดึงรายการฟอนต์ที่ฝังในงานนำเสนอ PowerPoint ได้ สิ่งนี้มีประโยชน์สำหรับการตรวจสอบการใช้ฟอนต์, ตรวจสอบการปฏิบัติตามแนวทางแบรนด์, หรือยืนยันว่าฟอนต์ที่จำเป็นทั้งหมดได้ถูกใส่อย่างถูกต้องก่อนแชร์ไฟล์
// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นตัวแทนไฟล์งานนำเสนอ.
auto presentation = MakeObject<Presentation>(u"embedded_fonts.pptx");
// Get all embedded fonts.
auto embeddedFonts = presentation->get_FontsManager()->GetEmbeddedFonts();
// Print names of the embedded fonts.
for (auto&& fontData : embeddedFonts)
{
Console::WriteLine(fontData->get_FontName());
}
presentation->Dispose();
เพิ่มฟอนต์ที่ฝังในการนำเสนอ
Aspose.Slides for C++ อนุญาตให้คุณฝังฟอนต์ลงในงานนำเสนอ PowerPoint โดยใช้เมธอด AddEmbeddedFont ซึ่งมีสองรูปแบบการโอเวอร์โหลดเพื่อการใช้งานที่ยืดหยุ่น คุณสามารถควบคุมปริมาณฟอนต์ที่ฝังโดยใช้ enumeration EmbedFontCharacters — ตัวอย่างเช่น เลือกฝังเฉพาะอักขระที่ใช้หรือชุดฟอนต์ทั้งหมด ฟีเจอร์นี้มีประโยชน์อย่างยิ่งเมื่อเตรียมงานนำเสนอเพื่อแชร์หรือแจกจ่าย เพื่อให้แน่ใจว่าฟอนต์ที่กำหนดเองหรือฟอนต์ที่ไม่เป็นมาตรฐานจะแสดงอย่างถูกต้องบนทุกระบบ แม้ว่าฟอนต์เหล่านั้นจะไม่ได้ติดตั้ง
โค้ด C++ ด้านล่างตรวจสอบฟอนต์ทั้งหมดที่ใช้ในงานนำเสนอ และฝังฟอนต์ที่ยังไม่ได้ฝังไว้
// โหลดไฟล์งานนำเสนอ.
auto presentation = MakeObject<Presentation>(u"sample.pptx");
auto usedFonts = presentation->get_FontsManager()->GetFonts();
auto embeddedFonts = presentation->get_FontsManager()->GetEmbeddedFonts();
for (auto&& fontData : usedFonts)
{
std::function<bool(SharedPtr<IFontData> data)> comparer = [&fontData](SharedPtr<IFontData> data) -> bool
{
return data == fontData;
};
// ตรวจสอบว่าฟอนต์นี้ฝังไว้แล้วหรือยัง.
bool isEmbeddedFont = Array<SharedPtr<IFontData>>::Exists(embeddedFonts, comparer);
if (!isEmbeddedFont)
{
// ฝังฟอนต์ลงในงานนำเสนอ.
presentation->get_FontsManager()->AddEmbeddedFont(fontData, EmbedFontCharacters::All);
}
}
// บันทึกงานนำเสนอลงดิสก์.
presentation->Save(u"embedded_fonts.pptx", SaveFormat::Pptx);
presentation->Dispose();
ลบฟอนต์ที่ฝังจากการนำเสนอ
Aspose.Slides for C++ ให้เมธอด RemoveEmbeddedFont ผ่านคลาส FontsManager ซึ่งทำให้คุณสามารถลบฟอนต์เฉพาะที่ฝังอยู่ในงานนำเสนอ PowerPoint ได้ สิ่งนี้ช่วยลดขนาดไฟล์โดยรวม โดยเฉพาะหากฟอนต์ที่ฝังไว้ไม่ถูกใช้หรือไม่จำเป็นอีกต่อไป การลบฟอนต์ที่ไม่ใช้ยังช่วยปรับปรุงประสิทธิภาพและทำให้การนำเสนอของคุณมีเฉพาะทรัพยากรที่จำเป็นเท่านั้น
auto fontName = u"Calibri";
// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นตัวแทนไฟล์งานนำเสนอ.
auto presentation = MakeObject<Presentation>(u"embedded_fonts.pptx");
// รับฟอนต์ที่ฝังทั้งหมด.
auto embeddedFonts = presentation->get_FontsManager()->GetEmbeddedFonts();
for (auto&& fontData : embeddedFonts)
{
if (fontData->get_FontName().Equals(fontName))
{
// ลบฟอนต์ที่ฝังไว้.
presentation->get_FontsManager()->RemoveEmbeddedFont(fontData);
break;
}
}
presentation->Save(u"removed_font.ppt", SaveFormat::Ppt);
presentation->Dispose();
บีบอัดฟอนต์ที่ฝัง
Aspose.Slides for C++ ให้เมธอด CompressEmbeddedFonts ผ่านคลาส Compress ซึ่งช่วยให้คุณลดขนาดไฟล์โดยรวมของงานนำเสนอโดยการปรับข้อมูลฟอนต์ที่ฝังให้เป็นไปอย่างมีประสิทธิภาพ สิ่งนี้เป็นประโยชน์อย่างยิ่งเมื่อการนำเสนอของคุณมีฟอนต์ขนาดใหญ่หรือหลายฟอนต์ และคุณต้องการให้ไฟล์มีขนาดเบาเพื่อการแชร์, การเก็บรักษา หรือการใช้งานออนไลน์ — โดยไม่กระทบต่อความแม่นยำของภาพ
auto presentation = MakeObject<Presentation>(u"sample.pptx");
Compress::CompressEmbeddedFonts(presentation);
presentation->Save(u"compressed_fonts.pptx", SaveFormat::Pptx);
presentation->Dispose();
คำถามที่พบบ่อย
ฉันจะทราบได้อย่างไรว่าฟอนต์เฉพาะในงานนำเสนอจะยังคงถูกแทนที่ในระหว่างการเรนเดอร์แม้จะฝังแล้ว?
ตรวจสอบ ข้อมูลการแทนที่ ใน font manager และ กฎการสำรอง/การแทนที่: หากฟอนต์ไม่พร้อมใช้งานหรือถูกจำกัด จะใช้ฟอนต์สำรองแทน
คุ้มค่าหรือไม่ที่จะฝังฟอนต์ “system” เช่น Arial/Calibri?
โดยทั่วไปไม่ — พวกมันมักจะพร้อมใช้งานอยู่แล้ว แต่สำหรับการพกพาเต็มรูปแบบในสภาพแวดล้อม “บาง” (Docker, เซิร์ฟเวอร์ Linux ที่ไม่มีฟอนต์ติดตั้งล่วงหน้า) การฝังฟอนต์ระบบสามารถขจัดความเสี่ยงของการแทนที่ที่ไม่คาดคิดได้