Menyematkan Font dalam Presentasi Menggunakan PHP
Pendahuluan
Embedded fonts in 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 berkreasi dengan pekerjaan Anda, maka Anda memiliki alasan lebih untuk menyematkan font Anda. Sebaliknya (tanpa font yang disematkan), teks atau angka pada slide Anda, tata letak, gaya, dll. dapat berubah atau menjadi kotak‑kotak yang membingungkan.
Kelas FontsManager, kelas FontData dan kelas Compress berisi sebagian besar 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 dipaparkan oleh kelas FontsManager) untuk memungkinkan Anda memperoleh (atau mengetahui) font yang disematkan dalam sebuah presentasi. Untuk menghapus font, metode removeEmbeddedFont (yang dipaparkan oleh kelas yang sama) digunakan.
Kode PHP berikut menunjukkan cara mendapatkan dan menghapus font yang disematkan dari sebuah presentasi:
# Membuat objek Presentation yang mewakili file presentasi
$pres = new Presentation("EmbeddedFonts.pptx");
try {
# Merender slide yang berisi bingkai teks yang menggunakan "FunSized" yang disematkan
$slideImage = $pres->getSlides()->get_Item(0)->getImage(new Java("java.awt.Dimension", 960, 720));
# Menyimpan gambar ke disk dalam format JPEG
try {
$slideImage->save("picture1_out.jpg", ImageFormat::Jpeg);
} finally {
if (!java_is_null($slideImage)) {
$slideImage->dispose();
}
}
$fontsManager = $pres->getFontsManager();
# Mendapatkan semua font yang disematkan
$embeddedFonts = $fontsManager->getEmbeddedFonts();
# Mencari font "Calibri"
$calibriEmbeddedFont = null;
$Array = new java_class("java.lang.reflect.Array");
for($i = 0; $i < java_values($Array->getLength($embeddedFonts)) ; $i++) {
echo("" . $embeddedFonts[$i]->getFontName());
if ("Calibri"->equals($embeddedFonts[$i]->getFontName())) {
$calibriEmbeddedFont = $embeddedFonts[$i];
break;
}
}
# Menghapus font "Calibri"
$fontsManager->removeEmbeddedFont($calibriEmbeddedFont);
# Merender presentasi; "Calibri" font diganti dengan yang sudah ada
$slideImage = $pres->getSlides()->get_Item(0)->getImage(new Java("java.awt.Dimension", 960, 720));
# Menyimpan gambar ke disk dalam format JPEG
try {
$slideImage->save("picture2_out.jpg", ImageFormat::Jpeg);
} finally {
if (!java_is_null($slideImage)) {
$slideImage->dispose();
}
}
# Menyimpan presentasi tanpa font "Calibri" yang disematkan ke disk
$pres->save("WithoutManageEmbeddedFonts_out.ppt", SaveFormat::Ppt);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Tambahkan Font yang Disematkan
Dengan menggunakan kelas EmbedFontCharacters dan dua overload dari metode addEmbeddedFont, Anda dapat memilih aturan (penyematan) yang diinginkan untuk menyematkan font dalam sebuah presentasi. Kode PHP berikut menunjukkan cara menyematkan dan menambahkan font ke sebuah presentasi:
# Memuat presentasi
$pres = new Presentation("Fonts.pptx");
try {
$allFonts = $pres->getFontsManager()->getFonts();
$embeddedFonts = $pres->getFontsManager()->getEmbeddedFonts();
$Array = new java_class("java.lang.reflect.Array");
foreach($allFonts as $font) {
$embeddedFontsContainsFont = false;
for($i = 0; $i < java_values($Array->getLength($embeddedFonts)) ; $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 (!java_is_null($pres)) {
$pres->dispose();
}
}
Kompres Font yang Disematkan
Agar Anda dapat mengompres font yang disematkan dalam sebuah presentasi dan mengurangi ukuran berkasnya, Aspose.Slides menyediakan metode compressEmbeddedFonts (yang dipaparkan oleh kelas Compress).
Kode PHP berikut menunjukkan cara mengompres font PowerPoint yang disematkan:
$pres = new Presentation("pres.pptx");
try {
Compress->compressEmbeddedFonts($pres);
$pres->save("pres-out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
Bagaimana saya dapat mengetahui bahwa font tertentu dalam presentasi masih akan digantikan selama rendering meskipun telah disematkan?
Periksa informasi substitusi di manajer font dan aturan fallback/substitusi: jika font tidak tersedia atau dibatasi, fallback akan digunakan.
Apakah layak menyematkan font “system” seperti Arial/Calibri?
Biasanya tidak—font tersebut hampir selalu tersedia. Namun untuk portabilitas penuh dalam lingkungan “tipis” (Docker, server Linux tanpa font yang terpasang sebelumnya), menyematkan font sistem dapat menghilangkan risiko substitusi yang tidak terduga.