PHP'de Sunum Bilgilerini Al ve Güncelle
Genel Bakış
Aspose.Slides, bir sunumun biçimini belirleyebilir ve tam bir sunum nesne modeli oluşturmadan belge meta verilerini okuyabilir. Bu, dosyaları sınıflandırmanız, bir envanter oluşturmanız veya sunum içeriğini yükleyip işlemeye karar vermeden önce özellikleri incelemeniz gerektiğinde yararlıdır.
Bu makale, PresentationFactory ve PresentationInfo aracılığıyla hafif denetimi ve DocumentProperties ile hedefli güncellemeleri göstermektedir.
Sunum Biçimini Kontrol Et
Yüklü bir sunumunuz zaten varsa, yüklemeden sonra tespit ve eski PPT, PPS ve POT akışlarının sınırlamaları hakkında bilgi almak için Determine the Original Presentation Format bölümüne bakın.
PresentationFactory::getPresentationInfo kullanarak bir Presentation örneği oluşturmadan bir dosyayı inceleyin. PresentationInfo::getLoadFormat yöntemi, PPTX, PPT veya ODP gibi tespit edilen biçimi raporlar.
use aspose\slides\LoadFormat;
use aspose\slides\PresentationFactory;
$fileNames = ["pres.pptx", "pres.ppt", "pres.odp"];
foreach ($fileNames as $fileName) {
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo($fileName);
$loadFormat = java_values($presentationInfo->getLoadFormat());
$formatName = "Other (" . $loadFormat . ")";
if ($loadFormat === LoadFormat::Pptx) {
$formatName = "PPTX";
} elseif ($loadFormat === LoadFormat::Ppt) {
$formatName = "PPT";
} elseif ($loadFormat === LoadFormat::Odp) {
$formatName = "ODP";
}
echo $fileName . ": " . $formatName . PHP_EOL;
}
Hafif Sunum Envanteri Oluştur
Birçok sunum dosyasını işlerken, doğrulama, indeksleme veya belge yönetim sistemi için kompakt bir envantere ihtiyaç duyabilirsiniz. Bu senaryoda, bir PresentationInfo nesnesi elde etmek için PresentationFactory::getPresentationInfo kullanın ve ardından belge meta verilerini okumak için PresentationInfo::readDocumentProperties çağırın. Bu yaklaşım bir Presentation örneği oluşturmaz ve tam sunum nesne modelini dolaşmanızı gerektirmez.
DocumentProperties tarafından sunulan genişletilmiş özellikler aşağıdaki envanter değerlerini sağlar:
| Yöntem | Envanter değeri |
|---|---|
| getSlides | Slaytların toplam sayısı. |
| getHiddenSlides | Gizli slaytların sayısı. |
| getNotes | Not içeren slaytların sayısı. |
| getParagraphs | Mevcut olduğunda, paragraf toplam sayısı. |
| getWords | Kelime toplam sayısı. |
| getMultimediaClips | Ses ve video kliplerinin toplam sayısı. |
Aşağıdaki örnek, bir Presentation nesnesi oluşturmadan bu değerleri okur ve kompakt bir envanter yazdırır. Ayrıca içerik gruplarını (yazı tipleri, temalar, slayt başlıkları vb.) görüntülemek için DocumentProperties::getHeadingPairs ile DocumentProperties::getTitlesOfParts birleştirilir.
use aspose\slides\LoadFormat;
use aspose\slides\PresentationFactory;
$filePath = "sample.pptx";
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo($filePath);
$documentProperties = $presentationInfo->readDocumentProperties();
$loadFormat = java_values($presentationInfo->getLoadFormat());
$formatName = "Other (" . $loadFormat . ")";
if ($loadFormat === LoadFormat::Pptx) {
$formatName = "PPTX";
} elseif ($loadFormat === LoadFormat::Ppt) {
$formatName = "PPT";
} elseif ($loadFormat === LoadFormat::Odp) {
$formatName = "ODP";
}
echo "File: " . basename($filePath) . PHP_EOL;
echo "Format: " . $formatName . PHP_EOL;
echo "Title: " . java_values($documentProperties->getTitle()) . PHP_EOL;
echo "Author: " . java_values($documentProperties->getAuthor()) . PHP_EOL;
echo "Statistics:" . PHP_EOL;
echo " Slides: " . java_values($documentProperties->getSlides()) . PHP_EOL;
echo " Hidden slides: " . java_values($documentProperties->getHiddenSlides()) . PHP_EOL;
echo " Slides with notes: " . java_values($documentProperties->getNotes()) . PHP_EOL;
echo " Paragraphs: " . java_values($documentProperties->getParagraphs()) . PHP_EOL;
echo " Words: " . java_values($documentProperties->getWords()) . PHP_EOL;
echo " Multimedia clips: " . java_values($documentProperties->getMultimediaClips()) . PHP_EOL;
$headingPairs = $documentProperties->getHeadingPairs();
$titlesOfParts = $documentProperties->getTitlesOfParts();
if (java_is_null($headingPairs) || java_is_null($titlesOfParts)) {
echo "Content groups: not available" . PHP_EOL;
} else {
$headingPairs = java_values($headingPairs);
$titlesOfParts = java_values($titlesOfParts);
$partIndex = 0;
if (count($headingPairs) === 0 || count($titlesOfParts) === 0) {
echo "Content groups: not available" . PHP_EOL;
} else {
echo "Content groups:" . PHP_EOL;
foreach ($headingPairs as $headingPair) {
$partCount = java_values($headingPair->getCount());
echo " " . java_values($headingPair->getName()) . " (" . $partCount . ")" . PHP_EOL;
for ($partOffset = 0; $partOffset < $partCount && $partIndex < count($titlesOfParts); $partOffset++) {
echo " - " . $titlesOfParts[$partIndex] . PHP_EOL;
$partIndex++;
}
}
if ($partIndex < count($titlesOfParts)) {
echo " Other parts:" . PHP_EOL;
while ($partIndex < count($titlesOfParts)) {
echo " - " . $titlesOfParts[$partIndex] . PHP_EOL;
$partIndex++;
}
}
}
}
Her bir HeadingPair bir grup adı ve o gruptaki öğe sayısını sağlar. DocumentProperties::getTitlesOfParts düz, sıralı bir dizi döndürdüğü için, her başlık çiftinin belirttiği ardışık başlık sayısını tüketin.
Depolanmış Meta Veriler ve Biçim Kısıtlamaları
PresentationInfo::readDocumentProperties tarafından döndürülen envanter özellikleri, kaynak belgede bulunan meta verileri yansıtır. Aspose.Slides, bu çağrı için değerleri yeniden hesaplamak amacıyla sunum nesne modelini yüklemez ve dolaşmaz. Eksik özellikler varsayılan değerlerle temsil edilir ve depolanmış değerler, dosyayı son kaydeden uygulama belge özelliklerini güncellemediyse eski olabilir.
- PPTX: Biçim, slayt, not, gizli‑slayt, paragraf, kelime ve multimedya sayımları ile başlık çiftleri ve bölüm başlıkları için genişletilmiş belge özellikleri sağlar. Kullanılabilirlik, belge üreticisinin hangi özellikleri yazdığına bağlıdır.
- PPT: İkili biçim, karşılık gelen belge‑özet özelliklerini depolayabilir. Bir özellik yoksa veya belge üreticisi tarafından yenilenmemişse, Aspose.Slides bu özelliğin depolanmış ya da varsayılan değerini döndürür, slaytlardan hesaplamaz.
- ODP: OpenDocument meta verileri sayfa, paragraf ve kelime sayısı gibi genel belge istatistikleri sunar, ancak bu değerler her PowerPoint‑özelliğine karşılık gelmez. Gizli‑slayt, not‑slayt, multimedya, başlık‑çifti ve bölüm‑başlığı meta verileri mevcut olmayabilir ve envanter özellikleri varsayılan değerleri döndürebilir. Sıfır değerini veya boş diziyi, ilgili içeriğin yokluğunun kesin kanıtı olarak değerlendirmeyin.
Envanter ve ön kontrol amaçları için hafif meta veri yaklaşımını kullanın. Sonuçların bellekteki değişiklikleri yansıtması veya gerçek sunum içeriğini doğrulamanız gerektiğinde sunumu yükleyin ve canlı nesne modelini inceleyin.
Sunum Özelliklerini Güncelle
PresentationInfo::readDocumentProperties tarafından döndürülen özellikler, bir Presentation örneği oluşturmadan da değiştirilebilir. Değişiklikleri PresentationInfo::updateDocumentProperties ile uygulayın ve ardından bağlanmış sunumu PresentationInfo::writeBindedPresentation ile yazın.
Aşağıdaki resim, PowerPoint sunumunun orijinal belge özelliklerini gösterir.

Aşağıdaki örnek, başlığı ve son‑kaydedilme zamanını değiştirir ve sonucu yeni bir dosyaya yazar:
use aspose\slides\PresentationFactory;
$sourceFile = "sample.pptx";
$outputFile = "sample_with_updated_properties.pptx";
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo($sourceFile);
$documentProperties = $presentationInfo->readDocumentProperties();
$documentProperties->setTitle("Quarterly sales report");
$documentProperties->setLastSavedTime(new Java("java.util.Date"));
$presentationInfo->updateDocumentProperties($documentProperties);
$outputStream = new Java("java.io.FileOutputStream", $outputFile);
try {
$presentationInfo->writeBindedPresentation($outputStream);
} finally {
$outputStream->close();
}
Aşağıdaki resim, güncellenmiş belge özelliklerini gösterir.

İlgili Bağlantılar
İlgili güvenlik kontrolleri ve koruma ayarları için aşağıdaki makalelere bakın:
SSS
Yazı tiplerinin gömülü olup olmadığını ve hangileri olduğunu nasıl kontrol edebilirim?
Sunumu yükleyin ve Presentation::getFontsManager kullanın. Gömülü yazı tiplerini elde etmek için FontsManager::getEmbeddedFonts, sunumun kullandığı yazı tiplerini almak için ise FontsManager::getFonts çağırın. İki sonucu karşılaştırarak renderlama için gerekli ancak gömülmemiş yazı tiplerini bulun.
Dosyanın gizli slaytları olup olmadığını ve sayısını nasıl hızlıca öğrenebilirim?
Depolanmış belge meta verileri yeterliyse, PresentationFactory::getPresentationInfo ve PresentationInfo::readDocumentProperties aracılığıyla DocumentProperties::getHiddenSlides okuyun. Bu, hafif bir envanter için uygundur. Sunum bellek içinde değiştirilmişse, depolanmış meta veriler eksik ya da eski olabilir; bu durumda canlı değerleri doğrulamak için Presentation::getSlides üzerinden döngü yapıp her slaytın Slide::getHidden metodunu inceleyin.
Özel slayt boyutu ve yönünün kullanılıp kullanılmadığını ve varsayılanlardan farklı olup olmadığını tespit edebilir miyim?
Evet. Sunumu yükleyin ve Presentation::getSlideSize çağırın. Mevcut ayarları beklenen ön ayar ve boyutlarla karşılaştırmak için SlideSize::getType, SlideSize::getSize ve SlideSize::getOrientation kullanın.
Grafiklerin harici veri kaynaklarına referans verip vermediğini hızlıca görmenin bir yolu var mı?
Evet. Her bir Chart bulun ve ChartData::getDataSourceType çağırın. Harici bir çalışma kitabı için ChartData::getExternalWorkbookPath metodunu kullanın. Veri kaynağı türü ve yol, harici bir referansı tanımlar; hedefin erişilebilir olup olmadığını doğrulamak ayrı bir kaynak kontrolü gerektirir.
Renderlama veya PDF dışa aktarımını yavaşlatabilecek ‘ağır’ slaytları nasıl değerlendirebilirim?
Tek bir karmaşıklık özelliği yoktur. Presentation::getSlides ve her slaytın BaseSlide::getShapes koleksiyonunu dolaşın. Şekil sayısı, büyük resimler, efektler, animasyonlar veya multimedya varlığı gibi sinyalleri tarama göstergesi olarak kullanın ve bir slaytın kesin bir performans darboğazı olduğuna karar vermeden önce temsilî bir render ya da dışa aktarma ölçümü yapın.