ปรับแต่งแบบอักษร PowerPoint ใน C++

ภาพรวม

Aspose.Slides ให้คุณใช้ฟอนต์แบบกำหนดเองในงานนำเสนอโดยไม่ต้องติดตั้งบนระบบปฏิบัติการ คุณสามารถโหลดฟอนต์จากโฟลเดอร์ที่กำหนดเอง ให้ฟอนต์สำหรับงานนำเสนอเฉพาะผ่านแหล่งฟอนต์ระดับเอกสาร หรือโหลดฟอนต์ภายนอกโดยตรงจากข้อมูลไบนารี

ฟอนต์ที่โหลดจะถูกใช้เมื่อมีการเรนเดอร์หรือส่งออกงานนำเสนอ เช่น ไปเป็น PDF, รูปภาพและรูปแบบที่สนับสนุนอื่น ๆ สิ่งนี้ช่วยให้ผลลัพธ์ของงานนำเสนอคงที่ในสภาพแวดล้อมต่าง ๆ บทความนี้ยังอธิบายวิธีตรวจสอบโฟลเดอร์ฟอนต์ที่ Aspose.Slides ใช้และวิธีลบแคชฟอนต์หลังจากทำงานกับฟอนต์ภายนอก

การลงทะเบียนฟอนต์แบบกำหนดเองสำหรับการเรนเดอร์แตกต่างจากการฝังฟอนต์ลงในไฟล์ PPTX หากต้องการให้ฟอนต์เก็บอยู่ภายในงานนำเสนอ ให้ใช้คุณลักษณะการฝังฟอนต์โดยตรง

โหลดฟอนต์แบบกำหนดเอง

Aspose.Slides ให้คุณโหลดฟอนต์ที่ใช้ในงานนำเสนอโดยไม่ต้องติดตั้งบนระบบ นี่มีผลต่อผลลัพธ์การส่งออก เช่น PDF, รูปภาพ และรูปแบบที่สนับสนุนอื่น ๆ ทำให้เอกสารที่ได้ดูสอดคล้องกันในทุกสภาพแวดล้อม ฟอนต์จะถูกโหลดจากไดเรกทอรีแบบกำหนดเอง

  1. ระบุหนึ่งหรือหลายโฟลเดอร์ที่มีไฟล์ฟอนต์
  2. เรียกเมธอดสเตติก FontsLoader::loadExternalFonts เพื่อโหลดฟอนต์จากโฟลเดอร์เหล่านั้น
  3. โหลดและเรนเดอร์/ส่งออกงานนำเสนอ
  4. เรียก FontsLoader.clearCache เพื่อลบแคชฟอนต์

ตัวอย่างโค้ดต่อไปนี้แสดงกระบวนการโหลดฟอนต์:

// กำหนดโฟลเดอร์ที่มีไฟล์ฟอนต์แบบกำหนดเอง.
auto fontFolders = MakeObject<Array<String>>(1, externalFontFolder );

// โหลดฟอนต์แบบกำหนดเองจากโฟลเดอร์ที่ระบุ.
FontsLoader::LoadExternalFonts(fontFolders);

auto presentation = MakeObject<Presentation>(u"sample.pptx");

// เรนเดอร์/ส่งออกงานนำเสนอ (เช่น ไปเป็น PDF, รูปภาพ หรือรูปแบบอื่น) โดยใช้ฟอนต์ที่โหลดไว้.
presentation->Save(u"output.pdf", SaveFormat::Pdf);
presentation->Dispose();

// ลบแคชฟอนต์หลังจากทำงานเสร็จ.
FontsLoader::ClearCache();

รับโฟลเดอร์ฟอนต์แบบกำหนดเอง

Aspose.Slides มีเมธอด FontsLoader::GetFontFolders() เพื่อให้คุณค้นหาโฟลเดอร์ฟอนต์ เมธอดนี้จะคืนค่าโฟลเดอร์ที่เพิ่มผ่านเมธอด LoadExternalFonts และโฟลเดอร์ฟอนต์ของระบบ

โค้ด C++ ด้านล่างแสดงวิธีใช้เมธอด FontsLoader::GetFontFolders() :

// บรรทัดนี้จะแสดงโฟลเดอร์ที่ตรวจสอบสำหรับไฟล์ฟอนต์.
// โฟลเดอร์เหล่านี้คือโฟลเดอร์ที่เพิ่มผ่านเมธอด LoadExternalFonts และโฟลเดอร์ฟอนต์ของระบบ.
auto fontFolders = FontsLoader::GetFontFolders();

ระบุฟอนต์แบบกำหนดเองที่ใช้กับงานนำเสนอ

Aspose.Slides มีคุณสมบัติ LoadOptions::set_DocumentLevelFontSources เพื่อให้คุณระบุฟอนต์ภายนอกที่จะใช้กับงานนำเสนอ

โค้ด C++ ด้านล่างแสดงวิธีใช้คุณสมบัติ LoadOptions::set_DocumentLevelFontSources :

auto memoryFont1 = File::ReadAllBytes(u"customfonts\\CustomFont1.ttf");
auto memoryFont2 = File::ReadAllBytes(u"customfonts\\CustomFont2.ttf");

auto loadOptions = System::MakeObject<LoadOptions>();
loadOptions->get_DocumentLevelFontSources()->set_FontFolders(System::MakeArray<String>({u"assets\\fonts", u"global\\fonts"}));
loadOptions->get_DocumentLevelFontSources()->set_MemoryFonts(System::MakeArray<ArrayPtr<uint8_t>>({memoryFont1, memoryFont2}));
{
    auto presentation = System::MakeObject<Presentation>(u"MyPresentation.pptx", loadOptions);
    //ทำงานกับงานนำเสนอ
    //CustomFont1, CustomFont2 รวมถึงฟอนต์จากโฟลเดอร์ assets\fonts & global\fonts รวมถึงโฟลเดอร์ย่อยของพวกมัน สามารถใช้ในงานนำเสนอได้
}

จัดการฟอนต์จากภายนอก

Aspose.Slides มีเมธอด FontsLoader::LoadExternalFont เพื่อให้คุณโหลดฟอนต์ภายนอกเป็นอาเรย์ไบต์

โค้ด C++ ด้านล่างแสดงกระบวนการโหลดฟอนต์เป็นอาเรย์ไบต์:

// เส้นทางไปยังไดเรกทอรีเอกสาร
const String outPath = u"../out/SpecifyFontsUsedWithPresentation.pptx";
const String templatePath = u"../templates/AccessSlides.pptx";

ArrayPtr<String> fontsLocation =  MakeArray<System::String>({ u"assets\\fonts", u"global\\fonts" });// ;
ArrayPtr<ArrayPtr<uint8_t>> memoryfontsLocation = MakeArray < ArrayPtr<uint8_t>>({ File::ReadAllBytes(u"../templates/CustomFont1.ttf"), File::ReadAllBytes(u"../templates/CustomFont2.ttf") });

SharedPtr < Aspose::Slides::LoadOptions > loadOptions = MakeObject <Aspose::Slides::LoadOptions>();

loadOptions->get_DocumentLevelFontSources()->set_FontFolders(fontsLocation);
loadOptions->get_DocumentLevelFontSources()->set_MemoryFonts(memoryfontsLocation);
	
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath, loadOptions);

คำถามที่พบบ่อย

ฟอนต์แบบกำหนดเองมีผลต่อการส่งออกทุกรูปแบบ (PDF, PNG, SVG, HTML) หรือไม่?

ใช่ ฟอนต์ที่เชื่อมต่อจะถูกใช้โดยเรนเดอร์ในทุกรูปแบบการส่งออก

ฟอนต์แบบกำหนดเองจะถูกฝังอัตโนมัติในไฟล์ PPTX ที่ได้หรือไม่?

ไม่ การลงทะเบียนฟอนต์สำหรับการเรนเดอร์ไม่เท่ากับการฝังลงใน PPTX หากต้องการให้ฟอนต์อยู่ในไฟล์งานนำเสนอ คุณต้องใช้ คุณลักษณะการฝังฟอนต์

สามารถควบคุมพฤติกรรม fallback เมื่อฟอนต์แบบกำหนดเองขาด glyph บางตัวได้หรือไม่?

ได้ กำหนดค่า การแทนที่ฟอนต์, กฎการแทนที่ และ ชุด fallback เพื่อระบุฟอนต์ที่ใช้เมื่อ glyph ที่ร้องขอไม่มีอยู่

สามารถใช้ฟอนต์ในคอนเทนเนอร์ Linux/Docker โดยไม่ต้องติดตั้งในระบบได้หรือไม่?

ได้ ให้ชี้ไปยังโฟลเดอร์ฟอนต์ของคุณเองหรือโหลดฟอนต์จากอาเรย์ไบต์ วิธีนี้จะตัดการพึ่งพาโฟลเดอร์ฟอนต์ของระบบในอิมเมจคอนเทนเนอร์ออกทั้งหมด

เรื่องลิขสิทธิ์—สามารถฝังฟอนต์แบบกำหนดเองใด ๆ ได้โดยไม่มีข้อจำกัดหรือไม่?

คุณต้องรับผิดชอบด้านการปฏิบัติตามลิขสิทธิ์ของฟอนต์ เงื่อนไขอาจแตกต่างกัน; บางลิขสิทธิ์ห้ามการฝังหรือการใช้ในเชิงพาณิชย์ ตรวจสอบข้อตกลง EULA ของฟอนต์ก่อนนำออกเผยแพร่ผลลัพธ์