Simpan Presentasi di .NET

Gambaran Umum

Setelah Anda membuat presentasi atau buka presentasi yang ada, gunakan metode Presentation.Save untuk menulis hasilnya. Aspose.Slides untuk .NET dapat menyimpan presentasi ke file atau stream dalam format PowerPoint, OpenDocument, PDF, dan format lainnya. Bagian berikut mencakup operasi penyimpanan standar dan opsi yang tersedia untuk output PPTX.

Simpan Presentasi ke File

Untuk menyimpan presentasi ke file, berikan jalur output dan nilai SaveFormat ke metode Presentation.Save. Nilai format menentukan jenis file yang dibuat oleh Aspose.Slides.

Contoh berikut membuat presentasi dan menyimpannya sebagai file PPTX:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation();

// Add or modify presentation content here.

presentation.Save("Output.pptx", SaveFormat.Pptx);

Simpan Presentasi dalam Format Aslinya

Untuk contoh deteksi file dan stream, perilaku presentasi yang baru dibuat, serta perbedaan antara format sumber dan output, lihat Determine the Original Presentation Format.

Dalam aplikasi pemrosesan batch, format masukan mungkin tidak diketahui sebelumnya. Setelah memuat file, baca format aslinya dari properti IPresentation.SourceFormat. Berikan nilai SourceFormat yang dihasilkan ke SlideUtil.ToSaveFormat untuk memperoleh nilai SaveFormat yang sesuai, lalu gunakan Presentation.Save untuk menulis presentasi yang telah dimodifikasi.

Contoh lengkap berikut memproses setiap file dalam direktori masukan, memperbarui judulnya, dan menyimpannya ke direktori keluaran dalam format yang dari mana file tersebut dimuat:

using System;
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Util;

var inputDirectory = "Input";
var outputDirectory = "Output";

Directory.CreateDirectory(outputDirectory);

foreach (var inputPath in Directory.EnumerateFiles(inputDirectory))
{
    try
    {
        using var presentation = new Presentation(inputPath);

        var sourceFormat = presentation.SourceFormat;
        var saveFormat = SlideUtil.ToSaveFormat(sourceFormat);

        presentation.DocumentProperties.Title = "Processed by the batch application";

        var outputPath = Path.Combine(outputDirectory, Path.GetFileName(inputPath));
        presentation.Save(outputPath, saveFormat);
    }
    catch (ArgumentException exception)
    {
        Console.Error.WriteLine($"Cannot map the source format of '{inputPath}': {exception.Message}");
    }
    catch (Exception exception)
    {
        Console.Error.WriteLine($"Cannot process '{inputPath}': {exception.Message}");
    }
}

SlideUtil.ToSaveFormat memetakan PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP, dan PowerPoint XML ke format penyimpanan presentasi yang bersesuaian. Ia hanya memetakan format sumber presentasi; tidak dimaksudkan untuk memilih format ekspor seperti PDF, HTML, TIFF, atau gambar. Memberikan nilai SourceFormat yang tidak didukung atau tidak valid menghasilkan ArgumentException.

File legacy PPT, PPS, dan POT menggunakan kontainer biner yang sama. Ketika presentasi semacam itu dimuat dari stream tanpa ekstensi file, file PPS atau POT dapat diidentifikasi sebagai PPT. Jika perlu mempertahankan subtipe legacy ini, simpan nama file atau metadata format asli secara terpisah dan gunakan saat memilih nama file dan format keluaran.

Simpan Presentasi ke Stream

Untuk menulis presentasi tanpa bergantung pada jalur file akhir, berikan sebuah Stream yang dapat ditulisi dan nilai SaveFormat ke metode Presentation.Save. Pendekatan ini berguna ketika output harus dikembalikan dari layanan web, disimpan dalam basis data, atau diproses di memori.

Contoh berikut menyimpan presentasi baru ke stream file:

using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation();
using var outputStream = new FileStream("Output.pptx", FileMode.Create);

presentation.Save(outputStream, SaveFormat.Pptx);

Simpan Presentasi dengan Jenis Tampilan yang Ditetapkan

Anda dapat menentukan tampilan di mana PowerPoint pertama kali membuka presentasi yang disimpan. Atur properti ViewProperties.LastView ke nilai ViewType sebelum menyimpan.

Contoh berikut mengonfigurasi tampilan Slide Master sebagai tampilan awal:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation();

presentation.ViewProperties.LastView = ViewType.SlideMasterView;
presentation.Save("SlideMasterView.pptx", SaveFormat.Pptx);

Simpan Presentasi dalam Format Office Open XML yang Ketat

Untuk membuat file PPTX yang mematuhi profil Strict dari Office Open XML, buat sebuah instance PptxOptions dan atur properti Conformance ke Conformance.Iso29500_2008_Strict. Kemudian berikan opsi tersebut ke metode Presentation.Save.

using Aspose.Slides;
using Aspose.Slides.Export;

var options = new PptxOptions
{
    Conformance = Conformance.Iso29500_2008_Strict
};

using var presentation = new Presentation();

presentation.Save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);

Simpan Presentasi dalam Format Office Open XML dalam Mode Zip64

Arsip ZIP standar membatasi ukuran terkompresi dan tidak terkompresi tiap entri, total ukuran arsip, serta jumlah entri. Karena file PPTX adalah arsip ZIP, presentasi yang sangat besar dapat melampaui batas tersebut. Ekstensi ZIP64 meningkatkan batas ukuran dan jumlah entri yang berlaku.

Gunakan properti PptxOptions.Zip64Mode untuk mengontrol apakah Aspose.Slides menulis ekstensi ZIP64:

  • IfNecessary menggunakan ZIP64 hanya ketika presentasi melampaui batas ZIP standar. Ini adalah mode default.
  • Never menonaktifkan ekstensi ZIP64.
  • Always selalu menulis ekstensi ZIP64.

Contoh berikut selalu mengaktifkan ekstensi ZIP64 untuk presentasi keluaran:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("Sample.pptx");

var options = new PptxOptions
{
    Zip64Mode = Zip64Mode.Always
};

presentation.Save("OutputZip64.pptx", SaveFormat.Pptx, options);

Simpan Presentasi dalam Format Office Open XML dengan Tingkat Kompresi

Untuk output PPTX, Anda dapat menyeimbangkan kecepatan penyimpanan dengan ukuran file dengan mengatur properti PptxOptions.CompressionLevel. Enumerasi CompressionLevel menyediakan nilai berikut:

  • None menyimpan data tanpa kompresi.
  • Level1 memberikan kompresi tercepat dan output terkompresi terbesar.
  • Level2 hingga Level5 secara progresif lebih mengutamakan ukuran output yang lebih kecil daripada kecepatan penyimpanan.
  • Level6 menyeimbangkan kecepatan penyimpanan dan ukuran file. Ini adalah level default.
  • Level7 dan Level8 lebih mengutamakan ukuran output yang lebih kecil daripada kecepatan penyimpanan.
  • Level9 memberikan kompresi terkuat dan memerlukan waktu pemrosesan paling lama.

Contoh berikut menyimpan presentasi tanpa kompresi:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("Sample.pptx");

var options = new PptxOptions
{
    CompressionLevel = CompressionLevel.None
};

presentation.Save("OutputNoCompression.pptx", SaveFormat.Pptx, options);

Contoh berikut menggunakan tingkat kompresi maksimum:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("Sample.pptx");

var options = new PptxOptions
{
    CompressionLevel = CompressionLevel.Level9
};

presentation.Save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options);

Simpan Presentasi tanpa Menyegarkan Thumbnail

Ketika presentasi disimpan sebagai PPTX, properti PptxOptions.RefreshThumbnail mengontrol thumbnail dokumen:

  • true menghasilkan kembali thumbnail selama operasi penyimpanan. Ini adalah nilai default.
  • false mempertahankan thumbnail yang ada. Jika presentasi tidak memiliki thumbnail, Aspose.Slides tidak akan menghasilkan satu thumbnail.

Contoh berikut menyimpan presentasi tanpa menyegarkan thumbnail-nya:

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("Sample.pptx");

var options = new PptxOptions
{
    RefreshThumbnail = false
};

presentation.Save("Output.pptx", SaveFormat.Pptx, options);

Simpan Pembaruan Progres dalam Persentase

Untuk memantau operasi penyimpanan, implementasikan antarmuka IProgressCallback dan tetapkan implementasinya ke properti ISaveOptions.ProgressCallback. Aspose.Slides kemudian memanggil metode IProgressCallback.Reporting dengan nilai progres selama ekspor.

Contoh berikut melaporkan progres ekspor PDF ke konsol:

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

var options = new PdfOptions
{
    ProgressCallback = new ExportProgressHandler()
};

using var presentation = new Presentation("Sample.pptx");

presentation.Save("Output.pdf", SaveFormat.Pdf, options);

class ExportProgressHandler : IProgressCallback
{
    public void Reporting(double progressValue)
    {
        var progress = Convert.ToInt32(progressValue);
        Console.WriteLine($"{progress}% of the file has been converted.");
    }
}

FAQ

Apakah Aspose.Slides mendukung penyimpanan incremental atau “fast save”?

Tidak. Setiap operasi penyimpanan menulis file output lengkap alih-alih memperbarui hanya bagian yang berubah.

Dapatkah beberapa thread menyimpan instance Presentation yang sama?

Tidak. Sebuah instance Presentation tidak thread‑safe (/slides/id/net/multithreading/). Akses dan simpan setiap instance hanya dari satu thread pada satu waktu.

Apa yang terjadi pada hyperlink dan file yang ditautkan secara eksternal saat saya menyimpan presentasi?

Hyperlink tetap berada dalam presentasi. Aspose.Slides tidak menyalin file yang ditautkan secara eksternal, sehingga presentasi yang disimpan tetap harus dapat mengakses lokasi file tersebut.

Bisakah saya menyimpan metadata dokumen seperti penulis, judul, perusahaan, dan tanggal pembuatan?

Ya. Tetapkan properti dokumen yang sesuai sebelum menyimpan, dan Aspose.Slides akan menuliskannya ke file output.