ฝังแบบอักษรในงานนำเสนอด้วย .NET

บทนำ

Embedding fonts in PowerPoint ทำให้การนำเสนอของคุณคงรูปลักษณ์ตามที่ตั้งใจไว้บนระบบต่าง ๆ ไม่ว่าจะใช้แบบอักษรพิเศษเพื่อความสร้างสรรค์หรือแบบอักษรมาตรฐาน การฝังแบบอักษรจะช่วยป้องกันการบิดเบือนของข้อความและการจัดหน้า

หากคุณใช้แบบอักษรจากบุคคลที่สามหรือแบบอักษรที่ไม่เป็นมาตรฐานเพราะต้องการความสร้างสรรค์กับงานของคุณ คุณจะมีเหตุผลมากขึ้นในการฝังแบบอักษรของคุณ มิฉะนั้น (หากไม่มีการฝังแบบอักษร) ข้อความหรือจำนวนบนสไลด์ การจัดหน้า การจัดรูปแบบ ฯลฯ อาจเปลี่ยนแปลงหรือกลายเป็นสี่เหลี่ยมที่ทำให้สับสน

ใช้คลาส FontsManager, FontData, และ Compress เพื่อจัดการแบบอักษรที่ฝังไว้

ดึงและลบแบบอักษรที่ฝังไว้

เรียกคืนหรือเอาแบบอักษรที่ฝังไว้จากการนำเสนอได้อย่างง่ายดายด้วยเมธอด GetEmbeddedFonts และ RemoveEmbeddedFont

โค้ด C# นี้แสดงวิธีดึงและลบแบบอักษรที่ฝังไว้จากการนำเสนอ:

using (Presentation presentation = new Presentation("EmbeddedFonts.pptx"))
{
    ISlide slide = presentation.Slides[0];

    // แสดงสไลด์ที่มีกรอบข้อความซึ่งใช้ "FunSized" ที่ฝังไว้
    using (IImage image = slide.GetImage(new Size(960, 720)))
    {
        image.Save("picture1_out.png", ImageFormat.Png);
    }

    IFontsManager fontsManager = presentation.FontsManager;

    IFontData[] embeddedFonts = fontsManager.GetEmbeddedFonts();

    // ค้นหาแบบอักษร "Calibri"
    IFontData funSizedEmbeddedFont = Array.Find(embeddedFonts, delegate (IFontData data)
    {
        return data.FontName == "Calibri";
    });

    // ลบแบบอักษร "Calibri"
    fontsManager.RemoveEmbeddedFont(funSizedEmbeddedFont);

    // แสดงการนำเสนอ; แบบอักษร "Calibri" จะถูกแทนที่ด้วยแบบที่มีอยู่แล้ว
    using (IImage image = slide.GetImage(new Size(960, 720)))
    {
        image.Save("picture2_out.png", ImageFormat.Png);
    }

    // บันทึกการนำเสนอโดยไม่มีแบบอักษร "Calibri" ที่ฝังไว้ลงดิสก์
    presentation.Save("WithoutManageEmbeddedFonts_out.ppt", SaveFormat.Ppt);
}

เพิ่มแบบอักษรที่ฝังไว้

โดยใช้ enum EmbedFontCharacters และการโอเวอร์โหลดสองรูปแบบของเมธอด AddEmbeddedFont คุณสามารถเลือกกฎการฝังที่ต้องการเพื่อฝังแบบอักษรในงานนำเสนอได้ โค้ด C# นี้แสดงวิธีฝังและเพิ่มแบบอักษรในงานนำเสนอ:

// โหลดการนำเสนอ
Presentation presentation = new Presentation("Fonts.pptx");

IFontData[] allFonts = presentation.FontsManager.GetFonts();
IFontData[] embeddedFonts = presentation.FontsManager.GetEmbeddedFonts();
foreach (IFontData font in allFonts)
{
    if (!embeddedFonts.Contains(font))
    {
        presentation.FontsManager.AddEmbeddedFont(font, EmbedFontCharacters.All);
    }
}

// บันทึกการนำเสนอลงดิสก์
presentation.Save("AddEmbeddedFont_out.pptx", SaveFormat.Pptx);

บีบอัดแบบอักษรที่ฝังไว้

เพิ่มประสิทธิภาพขนาดไฟล์โดยบีบอัดแบบอักษรที่ฝังไว้ด้วย CompressEmbeddedFonts

ตัวอย่างโค้ดสำหรับการบีบอัด:

using (Presentation pres = new Presentation("pres.pptx"))
{
    Aspose.Slides.LowCode.Compress.CompressEmbeddedFonts(pres);
    pres.Save("pres-out.pptx", SaveFormat.Pptx);
}

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

ฉันจะรู้ได้อย่างไรว่าฟอนต์เฉพาะในงานนำเสนอจะยังคงถูกแทนที่ระหว่างการเรนเดอร์แม้จะฝังไว้แล้ว?

ตรวจสอบ ข้อมูลการแทนที่ ในตัวจัดการฟอนต์และ กฎการสำรอง/การแทนที่: หากฟอนต์ไม่พร้อมใช้หรือถูกจำกัด จะใช้ฟอนต์สำรองแทน

คุ้มค่าที่จะฝังฟอนต์ “ระบบ” เช่น Arial/Calibri หรือไม่?

โดยทั่วไปไม่—ฟอนต์เหล่านี้มักพร้อมใช้งานอยู่แล้ว แต่ในสภาพแวดล้อม “บาง” เช่น Docker หรือเซิร์ฟเวอร์ Linux ที่ไม่มีฟอนต์ติดตั้งล่วงหน้า การฝังฟอนต์ระบบสามารถกำจัดความเสี่ยงของการแทนที่โดยไม่ได้คาดคิดได้อย่างเต็มที่