Menyematkan Font dalam Presentasi Menggunakan Java

Pengantar

Font yang disematkan dalam PowerPoint berguna ketika Anda ingin presentasi Anda tampil dengan benar saat dibuka di sistem atau perangkat apa pun. Jika Anda menggunakan font pihak ketiga atau non‑standar karena Anda berkreasi dengan pekerjaan Anda, maka Anda memiliki alasan lebih banyak untuk menyematkan font tersebut. Jika tidak (tanpa font yang disematkan), teks atau angka pada slide, tata letak, gaya, dll. dapat berubah atau menjadi kotak‑kotak yang membingungkan.

Kelas FontsManager, kelas FontData , kelas Compress , dan antarmuka‑antarmukanya berisi sebagian besar properti dan metode yang Anda perlukan untuk bekerja dengan font yang disematkan dalam presentasi PowerPoint.

Dapatkan dan Hapus Font yang Disematkan

Aspose.Slides menyediakan metode getEmbeddedFonts (yang tersedia melalui kelas FontsManager) untuk memungkinkan Anda memperoleh (atau mengetahui) font yang disematkan dalam sebuah presentasi. Untuk menghapus font, metode removeEmbeddedFont (yang tersedia melalui kelas yang sama) digunakan.

Kode Java ini menunjukkan cara mendapatkan dan menghapus font yang disematkan dari sebuah presentasi:

// Membuat objek Presentation yang mewakili file presentasi
Presentation pres = new Presentation("EmbeddedFonts.pptx");
try {
    // Merender slide yang berisi frame teks yang menggunakan font "FunSized" yang disematkan
    IImage slideImage = pres.getSlides().get_Item(0).getImage(new Dimension(960, 720));

    //Simpan gambar ke disk dalam format JPEG
    try {
        slideImage.save("picture1_out.jpg", ImageFormat.Jpeg);
    } finally {
        if (slideImage != null) slideImage.dispose();
    }

    IFontsManager fontsManager = pres.getFontsManager();

    // Mendapatkan semua font yang disematkan
    IFontData[] embeddedFonts = fontsManager.getEmbeddedFonts();

    // Menemukan font "Calibri"
    IFontData calibriEmbeddedFont = null;
    for (int i = 0; i < embeddedFonts.length; i++) {
        System.out.println(""+ embeddedFonts[i].getFontName());
        if ("Calibri".equals(embeddedFonts[i].getFontName())) {
            calibriEmbeddedFont = embeddedFonts[i];
            break;
        }
    }

    // Menghapus font "Calibri"
    fontsManager.removeEmbeddedFont(calibriEmbeddedFont);

    // Merender presentasi; font "Calibri" diganti dengan yang sudah ada
     slideImage = pres.getSlides().get_Item(0).getImage(new Dimension(960, 720));

     //Simpan gambar ke disk dalam format JPEG
     try {
         slideImage.save("picture2_out.jpg", ImageFormat.Jpeg);
     } finally {
         if (slideImage != null) slideImage.dispose();
     }

    // Menyimpan presentasi tanpa font "Calibri" yang disematkan ke disk
    pres.save("WithoutManageEmbeddedFonts_out.ppt", SaveFormat.Ppt);
} finally {
    if (pres != null) pres.dispose();
}

Tambahkan Font yang Disematkan

Dengan menggunakan enum EmbedFontCharacters dan dua overload dari metode addEmbeddedFont, Anda dapat memilih aturan (penyematan) yang diinginkan untuk menyematkan font dalam sebuah presentasi. Kode Java ini menunjukkan cara menyematkan dan menambahkan font ke sebuah presentasi:

// Memuat presentasi
Presentation pres = new Presentation("Fonts.pptx");
try {
    IFontData[] allFonts = pres.getFontsManager().getFonts();
    IFontData[] embeddedFonts = pres.getFontsManager().getEmbeddedFonts();

    for (IFontData font : allFonts)
    {
        boolean embeddedFontsContainsFont = false;
        for (int i = 0; i < embeddedFonts.length; i++)
        {
            if (embeddedFonts[i].equals(font))
            {
                embeddedFontsContainsFont = true;
                break;
            }
        }
        if (!embeddedFontsContainsFont)
        {
            pres.getFontsManager().addEmbeddedFont(font, EmbedFontCharacters.All);

            embeddedFonts = pres.getFontsManager().getEmbeddedFonts();
        }
    }

    // Menyimpan presentasi ke disk
    pres.save("AddEmbeddedFont_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Kompres Font yang Disematkan

Untuk memungkinkan Anda mengompres font yang disematkan dalam sebuah presentasi dan mengurangi ukuran berkasnya, Aspose.Slides menyediakan metode compressEmbeddedFonts (yang tersedia melalui kelas Compress).

Kode Java ini menunjukkan cara mengompres font PowerPoint yang disematkan:

Presentation pres = new Presentation("pres.pptx");
try {
    Compress.compressEmbeddedFonts(pres);
    pres.save("pres-out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Bagaimana saya dapat mengetahui bahwa font tertentu dalam presentasi tetap akan digantikan saat rendering meskipun sudah disematkan?

Periksa informasi substitusi di font manager dan aturan fallback/substitusi: jika font tidak tersedia atau dibatasi, fallback akan digunakan.

Apakah ada gunanya menyematkan font “sistem” seperti Arial/Calibri?

Biasanya tidak—font tersebut hampir selalu tersedia. Namun untuk portabilitas penuh di lingkungan “tipis” (Docker, server Linux tanpa font yang dipasang sebelumnya), menyematkan font sistem dapat menghilangkan risiko substitusi yang tidak terduga.