JavaScript'te Sunum Bilgilerini Getirme ve Güncelleme
Genel Bakış
Aspose.Slides, bir sunumun biçimini tanımlayabilir ve tam bir sunum nesne modeli oluşturmadan belge meta verilerini okuyabilir. 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 bu kullanışlıdır.
Bu makale, hafif denetimi PresentationFactory ve PresentationInfo aracılığıyla, ayrıca hedefli güncellemeleri DocumentProperties kullanarak göstermektedir.
Sunum Biçimini Kontrol Etme
PresentationFactory.getPresentationInfo kullanarak bir dosyayı Presentation örneği oluşturmadan inceleyin. PresentationInfo.getLoadFormat yöntemi algılanan biçimi, örneğin PPTX, PPT veya ODP olarak raporlar.
const aspose = require("aspose.slides.via.java");
const fileNames = ["pres.pptx", "pres.ppt", "pres.odp"];
for (const fileName of fileNames) {
const presentationInfo = aspose.PresentationFactory.getInstance().getPresentationInfo(fileName);
const loadFormat = presentationInfo.getLoadFormat();
let formatName = `Other (${loadFormat})`;
if (loadFormat === aspose.LoadFormat.Pptx) {
formatName = "PPTX";
} else if (loadFormat === aspose.LoadFormat.Ppt) {
formatName = "PPT";
} else if (loadFormat === aspose.LoadFormat.Odp) {
formatName = "ODP";
}
console.log(`${fileName}: ${formatName`);
}
Hafif Bir Sunum Envanteri Oluşturma
Birçok sunum dosyasını işlerken, doğrulama, indeksleme veya bir belge yönetim sistemi için kompakt bir envantere ihtiyacınız olabilir. 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 | Toplam slayt sayısı. |
| getHiddenSlides | Gizli slayt sayısı. |
| getNotes | Not içeren slayt sayısı. |
| getParagraphs | Mevcut olduğunda toplam paragraf sayısı. |
| getWords | Toplam kelime sayısı. |
| getMultimediaClips | Toplam ses ve video klip sayısı. |
Aşağıdaki örnek, bu değerleri bir Presentation nesnesi oluşturmadan okuyup kompakt bir envanter yazdırır. Ayrıca DocumentProperties.getHeadingPairs ile DocumentProperties.getTitlesOfParts kombinasyonunu kullanarak yazı tipleri, temalar ve slayt başlıkları gibi içerik gruplarını gösterir.
const path = require("path");
const aspose = require("aspose.slides.via.java");
const filePath = "sample.pptx";
const presentationInfo = aspose.PresentationFactory.getInstance().getPresentationInfo(filePath);
const documentProperties = presentationInfo.readDocumentProperties();
const loadFormat = presentationInfo.getLoadFormat();
let formatName = `Other (${loadFormat})`;
if (loadFormat === aspose.LoadFormat.Pptx) {
formatName = "PPTX";
} else if (loadFormat === aspose.LoadFormat.Ppt) {
formatName = "PPT";
} else if (loadFormat === aspose.LoadFormat.Odp) {
formatName = "ODP";
}
console.log(`File: ${path.basename(filePath)}`);
console.log(`Format: ${formatName}`);
console.log(`Title: ${documentProperties.getTitle()}`);
console.log(`Author: ${documentProperties.getAuthor()}`);
console.log("Statistics:");
console.log(` Slides: ${documentProperties.getSlides()}`);
console.log(` Hidden slides: ${documentProperties.getHiddenSlides()}`);
console.log(` Slides with notes: ${documentProperties.getNotes()}`);
console.log(` Paragraphs: ${documentProperties.getParagraphs()}`);
console.log(` Words: ${documentProperties.getWords()}`);
console.log(` Multimedia clips: ${documentProperties.getMultimediaClips()}`);
const headingPairs = documentProperties.getHeadingPairs() || [];
const titlesOfParts = documentProperties.getTitlesOfParts() || [];
let partIndex = 0;
if (headingPairs.length === 0 || titlesOfParts.length === 0) {
console.log("Content groups: not available");
} else {
console.log("Content groups:");
for (const headingPair of headingPairs) {
const partCount = headingPair.getCount();
console.log(` ${headingPair.getName()} (${partCount})`);
for (let partOffset = 0; partOffset < partCount && partIndex < titlesOfParts.length; partOffset++) {
console.log(` - ${titlesOfParts[partIndex]}`);
partIndex++;
}
}
if (partIndex < titlesOfParts.length) {
console.log(" Other parts:");
while (partIndex < titlesOfParts.length) {
console.log(` - ${titlesOfParts[partIndex]}`);
partIndex++;
}
}
}
Her [HeadingPair], grup adını HeadingPair.getName aracılığıyla ve grup içindeki öğe sayısını HeadingPair.getCount ile sağlar. DocumentProperties.getTitlesOfParts düz, sıralı bir dizi döndürür; bu yüzden her başlık çiftinin belirttiği ardışık başlık sayısını tüketin.
Depolanmış Meta Veriler ve Biçim Sınırlamaları
PresentationInfo.readDocumentProperties tarafından döndürülen envanter özellikleri, kaynak belgede mevcut meta verileri yansıtır. Aspose.Slides, bu çağrı için bu değerleri yeniden hesaplamak amacıyla sunum nesne modelini yüklemez ve dolaşmaz. Eksik özellikler varsayılan değerlerle temsil edilir ve saklanan değerler, dosyayı son kaydeden uygulama belge özelliklerini güncellememişse güncel olmayabilir.
- PPTX: Biçim, slayt, not, gizli slayt, paragraf, kelime ve multimedya sayımları için genişletilmiş belge özellikleri ile başlık çiftleri ve bölüm başlıkları sunar. Kullanılabilirlik, belge üreticisinin hangi özellikleri yazdığına bağlıdır.
- PPT: İkili format, karşılık gelen belge‑özet özelliklerini depolayabilir. Bir özellik yoksa veya belge üreticisi tarafından yenilenmemişse, Aspose.Slides, slaytlardan hesaplamak yerine saklanan ya da varsayılan değerini döner.
- ODP: OpenDocument meta verileri, sayfa, paragraf ve kelime sayısı gibi genel belge istatistikleri sağlar, ancak bu değerler her PowerPoint‑özelliğine özgü genişletilmiş özelliğe eşlenmez. 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ğer dönebilir. Sıfır değerini veya boş bir diziyi, ilgili içeriğin bulunmadığının kesin kanıtı olarak değerlendirmeyin.
Envanterler ve ön incelemeler için hafif meta veri yaklaşımını kullanın. Sonucun bellek içi değişiklikleri yansıtması gerektiğinde veya gerçek sunum içeriğini doğrulamanız gerektiğinde, sunumu yükleyip canlı nesne modelini inceleyin.
Sunum Özelliklerini Güncelleme
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, orijinal belge özelliklerini göstermektedir.

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

Yararlı 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 çağırın ve sunumda kullanılan yazı tiplerini elde etmek için FontsManager.getFonts kullanın. İki sonucu karşılaştırarak render için gerekli ancak gömülmemiş yazı tiplerini bulun.
Dosyanın gizli slaytları olup olmadığını ve kaç tane olduğunu nasıl hızlıca öğrenebilirim?
Depolanmış belge meta verileri yeterli olduğunda, 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, saklanan meta veriler eksik ya da güncel olmayabilir; 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öneliminin 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örmek mümkün mü?
Evet. Her Chart öğesini bulun ve ChartData.getDataSourceType çağırın. Harici bir çalışma kitabı için ChartData.getExternalWorkbookPath kullanın. Veri kaynağı türü ve yol, harici referansı gösterir, ancak hedefin erişilebilir olup olmadığını doğrulamak ayrı bir kaynak kontrolü gerektirir.
Render veya PDF dışa aktarma işlemlerini yavaşlatabilecek ‘ağır’ slaytları nasıl değerlendirebilirim?
Tek bir karmaşıklık özelliği yoktur. Presentation.getSlides ve her slaydın BaseSlide.getShapes koleksiyonunu dolaşın. Şekil sayısı ve büyük resimler, efektler, animasyonlar veya multimedya varlığı gibi sinyalleri tarama göstergesi olarak kullanın ve bir slaytı kesin bir performans darboğazı olarak kabul etmeden önce temsilî bir render veya dışa aktarma ölçümü yapın.