Mengambil dan Memperbarui Informasi Presentasi di .NET
Ikhtisar
Aspose.Slides dapat mengidentifikasi format presentasi dan membaca metadata dokumen tanpa membuat model objek presentasi lengkap. Hal ini berguna ketika Anda perlu mengklasifikasikan file, membangun inventaris, atau memeriksa properti sebelum memutuskan apakah akan memuat dan memproses konten presentasi.
Artikel ini menunjukkan inspeksi ringan melalui PresentationFactory dan IPresentationInfo, serta pembaruan terarah melalui IDocumentProperties.
Periksa Format Presentasi
Jika Anda sudah memiliki presentasi yang dimuat, lihat Determine the Original Presentation Format untuk deteksi setelah pemuatan dan keterbatasan aliran legacy PPT, PPS, dan POT.
Gunakan PresentationFactory.GetPresentationInfo untuk memeriksa file tanpa membuat instance Presentation. Properti IPresentationInfo.LoadFormat melaporkan format yang terdeteksi, seperti PPTX, PPT, atau ODP.
using System;
using Aspose.Slides;
var fileNames = new[] { "pres.pptx", "pres.ppt", "pres.odp" };
foreach (var fileName in fileNames)
{
var presentationInfo = PresentationFactory.Instance.GetPresentationInfo(fileName);
Console.WriteLine($"{fileName}: {presentationInfo.LoadFormat}");
}
Bangun Inventaris Presentasi Ringan
Ketika Anda memproses banyak file presentasi, Anda mungkin memerlukan inventaris ringkas untuk validasi, pengindeksan, atau sistem manajemen dokumen. Dalam skenario ini, gunakan PresentationFactory.GetPresentationInfo untuk memperoleh objek IPresentationInfo, lalu panggil IPresentationInfo.ReadDocumentProperties untuk membaca metadata dokumen. Pendekatan ini tidak membuat instance Presentation atau mengharuskan Anda menelusuri model objek presentasi lengkap.
Properti tambahan yang diekspos oleh IDocumentProperties menyediakan nilai inventaris berikut:
| Properti | Nilai inventaris |
|---|---|
| Slides | Total jumlah slide. |
| HiddenSlides | Jumlah slide tersembunyi. |
| Notes | Jumlah slide yang berisi catatan. |
| Paragraphs | Total jumlah paragraf, bila tersedia. |
| Words | Total jumlah kata. |
| MultimediaClips | Total jumlah klip audio dan video. |
Contoh berikut membaca nilai-nilai ini tanpa membuat objek Presentation dan mencetak inventaris ringkas. Contoh ini juga menggabungkan HeadingPairs dengan TitlesOfParts untuk menampilkan grup konten seperti font, tema, dan judul slide.
using System;
using System.IO;
using Aspose.Slides;
var filePath = "sample.pptx";
var presentationInfo = PresentationFactory.Instance.GetPresentationInfo(filePath);
var documentProperties = presentationInfo.ReadDocumentProperties();
Console.WriteLine($"File: {Path.GetFileName(filePath)}");
Console.WriteLine($"Format: {presentationInfo.LoadFormat}");
Console.WriteLine($"Title: {documentProperties.Title}");
Console.WriteLine($"Author: {documentProperties.Author}");
Console.WriteLine("Statistics:");
Console.WriteLine($" Slides: {documentProperties.Slides}");
Console.WriteLine($" Hidden slides: {documentProperties.HiddenSlides}");
Console.WriteLine($" Slides with notes: {documentProperties.Notes}");
Console.WriteLine($" Paragraphs: {documentProperties.Paragraphs}");
Console.WriteLine($" Words: {documentProperties.Words}");
Console.WriteLine($" Multimedia clips: {documentProperties.MultimediaClips}");
var headingPairs = documentProperties.HeadingPairs ?? Array.Empty<IHeadingPair>();
var titlesOfParts = documentProperties.TitlesOfParts ?? Array.Empty<string>();
var partIndex = 0;
if (headingPairs.Length == 0 || titlesOfParts.Length == 0)
{
Console.WriteLine("Content groups: not available");
}
else
{
Console.WriteLine("Content groups:");
foreach (var headingPair in headingPairs)
{
Console.WriteLine($" {headingPair.Name} ({headingPair.Count})");
for (var partOffset = 0; partOffset < headingPair.Count && partIndex < titlesOfParts.Length; partOffset++)
{
Console.WriteLine($" - {titlesOfParts[partIndex]}");
partIndex++;
}
}
if (partIndex < titlesOfParts.Length)
{
Console.WriteLine(" Other parts:");
while (partIndex < titlesOfParts.Length)
{
Console.WriteLine($" - {titlesOfParts[partIndex]}");
partIndex++;
}
}
}
Setiap IHeadingPair menyediakan nama grup dan jumlah item dalam grup tersebut. IDocumentProperties.TitlesOfParts adalah array datar berurutan, sehingga konsumsi sejumlah judul berurutan yang ditentukan oleh setiap heading pair.
Metadata yang Disimpan dan Batasan Format
Properti inventaris yang dikembalikan oleh IPresentationInfo.ReadDocumentProperties mencerminkan metadata yang tersedia dalam dokumen sumber. Aspose.Slides tidak memuat dan menelusuri model objek presentasi untuk menghitung ulang nilai-nilai ini pada pemanggilan ini. Properti yang tidak ada diwakili oleh nilai default, dan nilai yang disimpan dapat menjadi usang jika aplikasi yang terakhir menyimpan file tidak memperbarui properti dokumennya.
- PPTX: Format ini menyediakan properti dokumen tambahan untuk hitungan slide, catatan, slide tersembunyi, paragraf, kata, dan multimedia, serta heading pair dan judul bagian. Ketersediaannya tergantung pada properti mana yang ditulis oleh pembuat dokumen.
- PPT: Format biner dapat menyimpan properti ringkasan dokumen yang sesuai. Jika suatu properti tidak ada atau tidak diperbarui oleh pembuat dokumen, Aspose.Slides mengembalikan nilai yang disimpan atau nilai default alih-alih menghitungnya dari slide.
- ODP: Metadata OpenDocument menyediakan statistik dokumen umum, seperti hitungan halaman, paragraf, dan kata, tetapi nilai-nilai ini tidak selalu sesuai dengan setiap properti tambahan khusus PowerPoint. Metadata untuk slide tersembunyi, catatan slide, multimedia, heading-pair, dan judul bagian mungkin tidak tersedia, dan properti inventaris dapat mengembalikan nilai default. Jangan menganggap nilai nol atau array kosong sebagai bukti otoritatif bahwa konten terkait tidak ada.
Gunakan pendekatan metadata ringan untuk inventaris dan pemeriksaan awal. Muat presentasi dan inspeksi model objek langsungnya ketika hasil harus mencerminkan perubahan dalam memori atau ketika Anda perlu memverifikasi konten presentasi yang sebenarnya.
Perbarui Properti Presentasi
Properti yang dikembalikan oleh IPresentationInfo.ReadDocumentProperties juga dapat diubah tanpa membuat instance Presentation. Terapkan perubahan dengan IPresentationInfo.UpdateDocumentProperties, lalu tulis presentasi yang terikat dengan IPresentationInfo.WriteBindedPresentation.
Gambar berikut menunjukkan properti dokumen asli.

Contoh berikut mengubah judul dan waktu terakhir disimpan serta menulis hasilnya ke file baru:
using System;
using System.IO;
using Aspose.Slides;
var sourceFile = "sample.pptx";
var outputFile = "sample_with_updated_properties.pptx";
var presentationInfo = PresentationFactory.Instance.GetPresentationInfo(sourceFile);
var documentProperties = presentationInfo.ReadDocumentProperties();
documentProperties.Title = "Quarterly sales report";
documentProperties.LastSavedTime = DateTime.UtcNow;
presentationInfo.UpdateDocumentProperties(documentProperties);
using var outputStream = File.Create(outputFile);
presentationInfo.WriteBindedPresentation(outputStream);
Gambar berikut menunjukkan properti dokumen yang telah diperbarui.

Tautan Berguna
Untuk pemeriksaan keamanan terkait dan pengaturan perlindungan, lihat artikel berikut:
FAQ
Bagaimana cara memeriksa apakah font tercantum dan font mana saja?
Muat presentasi dan gunakan Presentation.FontsManager. Panggil FontsManager.GetEmbeddedFonts untuk memperoleh font yang tertanam dan FontsManager.GetFonts untuk memperoleh font yang digunakan oleh presentasi. Bandingkan kedua hasil untuk menemukan font yang diperlukan untuk merender tetapi tidak tertanam.
Bagaimana cara cepat mengetahui apakah file memiliki slide tersembunyi dan berapa banyak?
Ketika metadata dokumen yang disimpan cukup, baca IDocumentProperties.HiddenSlides melalui PresentationFactory.GetPresentationInfo dan IPresentationInfo.ReadDocumentProperties. Ini cocok untuk inventaris ringan. Jika presentasi telah dimodifikasi dalam memori, metadata yang disimpan mungkin hilang atau usang, atau Anda perlu memverifikasi nilai langsung, iterasi melalui Presentation.Slides dan periksa properti Slide.Hidden setiap slide.
Apakah saya dapat mendeteksi apakah ukuran slide khusus dan orientasi digunakan, serta apakah mereka berbeda dari default?
Ya. Muat presentasi dan baca Presentation.SlideSize. Periksa ISlideSize.Type, ISlideSize.Size, dan ISlideSize.Orientation untuk membandingkan pengaturan saat ini dengan preset dan dimensi yang diharapkan.
Apakah ada cara cepat untuk melihat apakah bagan merujuk ke sumber data eksternal?
Ya. Temukan setiap Chart dan periksa ChartData.DataSourceType. Untuk buku kerja eksternal, baca ChartData.ExternalWorkbookPath. Tipe sumber data dan jalur mengidentifikasi referensi eksternal, tetapi verifikasi ketersediaan target memerlukan pengecekan sumber daya terpisah.
Bagaimana cara menilai slide ‘berat’ yang dapat memperlambat rendering atau ekspor PDF?
Tidak ada properti kompleksitas tunggal. Telusuri Presentation.Slides dan koleksi IBaseSlide.Shapes setiap slide. Gunakan jumlah shape serta keberadaan gambar besar, efek, animasi, atau multimedia sebagai sinyal penyaringan, dan ukur render atau ekspor perwakilan sebelum menganggap suatu slide sebagai bottleneck kinerja yang terkonfirmasi.