Osadzanie czcionek w prezentacjach w .NET

Wprowadzenie

Osadzanie czcionek w PowerPoint zapewnia, że Twoja prezentacja zachowuje zamierzony wygląd na różnych systemach. Bez względu na to, czy używasz unikalnych czcionek dla kreatywności, czy standardowych, osadzanie czcionek zapobiega zakłóceniom tekstu i układu.

Jeśli użyłeś czcionki firm trzecich lub niestandardowej, ponieważ byłeś kreatywny w swojej pracy, masz jeszcze więcej powodów, aby osadzić swoją czcionkę. W przeciwnym razie (bez osadzonych czcionek) teksty lub liczby na slajdach, układ, stylizacja itp. mogą się zmienić lub zamienić w mylące prostokąty.

Użyj klas FontsManager, FontData, i Compress aby zarządzać osadzonymi czcionkami.

Pobieranie i usuwanie osadzonych czcionek

Łatwo pobieraj lub usuwaj osadzone czcionki z prezentacji przy użyciu metod GetEmbeddedFonts i RemoveEmbeddedFont.

Ten kod C# pokazuje, jak pobrać i usunąć osadzone czcionki z prezentacji:

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

    // Renderuje slajd zawierający ramkę tekstową, która używa osadzonej "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();

    // Znajduje czcionkę "Calibri"
    IFontData funSizedEmbeddedFont = Array.Find(embeddedFonts, delegate (IFontData data)
    {
        return data.FontName == "Calibri";
    });

    // Usuwa czcionkę "Calibri"
    fontsManager.RemoveEmbeddedFont(funSizedEmbeddedFont);

    // Renderuje prezentację; czcionka "Calibri" zostaje zastąpiona istniejącą
    using (IImage image = slide.GetImage(new Size(960, 720)))
    {
        image.Save("picture2_out.png", ImageFormat.Png);
    }

    // Zapisuje prezentację bez osadzonej "Calibri" font do dysku
    presentation.Save("WithoutManageEmbeddedFonts_out.ppt", SaveFormat.Ppt);
}

Dodawanie osadzonych czcionek

Korzystając z wyliczenia EmbedFontCharacters oraz dwóch przeciążeń metody AddEmbeddedFont, możesz wybrać preferowaną regułę (osadzania), aby osadzić czcionki w prezentacji. Ten kod C# pokazuje, jak osadzić i dodać czcionki do prezentacji:

 // Ładuje prezentację
 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);
     }
 }

 // Zapisuje prezentację na dysku
 presentation.Save("AddEmbeddedFont_out.pptx", SaveFormat.Pptx);

Kompresja osadzonych czcionek

Optymalizuj rozmiar pliku, kompresując osadzone czcionki za pomocą CompressEmbeddedFonts.

Przykładowy kod kompresji:

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

FAQ

Jak mogę sprawdzić, że konkretna czcionka w prezentacji będzie nadal zastępowana podczas renderowania pomimo osadzenia?

Sprawdź informacje o substytucji w menedżerze czcionek oraz zasady zastępowania/fallback: jeśli czcionka jest niedostępna lub ograniczona, zostanie użyty fallback.

Czy warto osadzać czcionki systemowe, takie jak Arial/Calibri?

Zazwyczaj nie - są prawie zawsze dostępne. Jednak w celu pełnej przenośności w “cienkich” środowiskach (Docker, serwer Linux bez preinstalowanych czcionek) osadzanie czcionek systemowych może wyeliminować ryzyko nieoczekiwanych substytucji.