PHP Kullanarak Sunumlarda Yazı Tipi Gömme
Giriş
PowerPoint’ta gömülü yazı tipleri, sunumunuzun herhangi bir sistem veya cihazda açıldığında doğru görünmesini istediğinizde kullanışlıdır. Çalışmanızda yaratıcı olduğunuz için üçüncü taraf veya standart dışı bir yazı tipi kullandıysanız, yazı tipinizi gömmek için daha da fazla nedeniniz vardır. Aksi takdirde (gömülü yazı tipleri olmadan), slaytlarınızdaki metin veya sayılar, düzen, stil vb. değişebilir veya karışık dikdörtgenlere dönüşebilir.
FontsManager sınıfı, FontData sınıfı ve Compress sınıfı, PowerPoint sunumlarında gömülü yazı tipleriyle çalışmak için ihtiyaç duyduğunuz yöntemlerin çoğunu içerir.
Gömülü Yazı Tiplerini Al ve Kaldır
Aspose.Slides, bir sunumda gömülü olan yazı tiplerini almanıza (veya öğrenmenize) olanak sağlamak için getEmbeddedFonts yöntemini (FontsManager sınıfı tarafından sunulur) sağlar. Yazı tiplerini kaldırmak için aynı sınıfın removeEmbeddedFont yöntemi kullanılır.
Bu PHP kodu, bir sunumdan gömülü yazı tiplerini nasıl alıp kaldıracağınızı gösterir:
# Bir sunum dosyasını temsil eden Presentation nesnesini örnekler
$pres = new Presentation("EmbeddedFonts.pptx");
try {
# Gömülü "FunSized" kullanan bir metin çerçevesi içeren slaytı render eder
$slideImage = $pres->getSlides()->get_Item(0)->getImage(new Java("java.awt.Dimension", 960, 720));
# Görüntüyü JPEG formatında diske kaydeder
try {
$slideImage->save("picture1_out.jpg", ImageFormat::Jpeg);
} finally {
if (!java_is_null($slideImage)) {
$slideImage->dispose();
}
}
$fontsManager = $pres->getFontsManager();
# Tüm gömülü yazı tiplerini alır
$embeddedFonts = $fontsManager->getEmbeddedFonts();
# "Calibri" yazı tipini bulur
$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;
}
}
# "Calibri" yazı tipini kaldırır
$fontsManager->removeEmbeddedFont($calibriEmbeddedFont);
# Sunumu render eder; "Calibri" yazı tipi mevcut bir yazı tipiyle değiştirilir
$slideImage = $pres->getSlides()->get_Item(0)->getImage(new Java("java.awt.Dimension", 960, 720));
# Görüntüyü JPEG formatında diske kaydeder
try {
$slideImage->save("picture2_out.jpg", ImageFormat::Jpeg);
} finally {
if (!java_is_null($slideImage)) {
$slideImage->dispose();
}
}
# Gömülü "Calibri" yazı tipi olmadan sunumu diske kaydeder
$pres->save("WithoutManageEmbeddedFonts_out.ppt", SaveFormat::Ppt);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Gömülü Yazı Tipi Ekle
EmbedFontCharacters sınıfını ve addEmbeddedFont yönteminin iki aşırı yüklemesini kullanarak, bir sunuma yazı tiplerini gömmek için tercih ettiğiniz (gömme) kuralını seçebilirsiniz. Bu PHP kodu, bir sunuma yazı tiplerini nasıl gömeceğinizi ve ekleyeceğinizi gösterir:
# Sunumu yükler
$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();
}
}
# Sunumu diske kaydeder
$pres->save("AddEmbeddedFont_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Gömülü Yazı Tiplerini Sıkıştır
Bir sunumda gömülü yazı tiplerini sıkıştırarak dosya boyutunu azaltmanıza olanak tanımak için Aspose.Slides, compressEmbeddedFonts yöntemini (Compress sınıfı tarafından sunulur) sağlar.
Bu PHP kodu, gömülü PowerPoint yazı tiplerini nasıl sıkıştıracağınızı gösterir:
$pres = new Presentation("pres.pptx");
try {
Compress->compressEmbeddedFonts($pres);
$pres->save("pres-out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
SSS
Sunumdaki belirli bir yazı tipinin gömülmüş olmasına rağmen yine de işleme sırasında değiştirileceğini nasıl anlayabilirim?
Yazı tipi yöneticisindeki substitution information ve fallback/substitution rules kontrol edin: yazı tipi kullanılamıyorsa veya kısıtlıysa, bir yedek (fallback) kullanılacaktır.
Arial/Calibri gibi “sistem” yazı tiplerini gömmek mantıklı mı?
Genellikle hayır—bu yazı tipleri neredeyse her zaman mevcuttur. Ancak “ince” ortamlarda (Docker, önceden yüklü yazı tipleri olmayan bir Linux sunucusu) tam taşınabilirlik için sistem yazı tiplerini gömmek, beklenmedik değişim riskini ortadan kaldırabilir.