Menyimpan Presentasi di PHP
Gambaran Umum
Setelah Anda membuat presentasi atau membuka presentasi yang ada, gunakan metode Presentation::save untuk menulis hasilnya. Aspose.Slides untuk PHP via Java 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.
Menyimpan 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:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation();
try {
// Tambahkan atau ubah konten presentasi di sini.
$presentation->save("Output.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Menyimpan 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 input mungkin tidak diketahui sebelumnya. Setelah memuat file, baca format aslinya dari metode Presentation::getSourceFormat. Berikan nilai SourceFormat yang dihasilkan ke SlideUtil::toSaveFormat untuk memperoleh nilai SaveFormat yang sesuai, kemudian 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 sama dengan file yang dimuat:
use aspose\slides\Presentation;
use aspose\slides\SlideUtil;
$inputDirectory = __DIR__ . DIRECTORY_SEPARATOR . "Input";
$outputDirectory = __DIR__ . DIRECTORY_SEPARATOR . "Output";
if (!is_dir($outputDirectory) && !mkdir($outputDirectory, 0777, true)) {
echo("Cannot create the output directory." . PHP_EOL);
}
$inputFiles = is_dir($inputDirectory) ? scandir($inputDirectory) : false;
if ($inputFiles !== false && is_dir($outputDirectory)) {
foreach ($inputFiles as $fileName) {
$inputPath = $inputDirectory . DIRECTORY_SEPARATOR . $fileName;
if (!is_file($inputPath)) {
continue;
}
$presentation = null;
$presentationLoaded = false;
try {
$presentation = new Presentation($inputPath);
$presentationLoaded = true;
$saveFormat = SlideUtil::toSaveFormat($presentation->getSourceFormat());
$presentation->getDocumentProperties()->setTitle("Processed by the batch application");
$outputPath = $outputDirectory . DIRECTORY_SEPARATOR . $fileName;
$presentation->save($outputPath, $saveFormat);
} catch (\Throwable $exception) {
echo("Cannot process '" . $inputPath . "': " . $exception->getMessage() . PHP_EOL);
} finally {
if ($presentationLoaded) {
$presentation->dispose();
}
}
}
}
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 memetakan hanya format sumber presentasi; tidak dimaksudkan untuk memilih format ekspor seperti PDF, HTML, TIFF, atau gambar. Memberikan nilai SourceFormat yang tidak didukung atau tidak valid akan menghasilkan IllegalArgumentException.
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 diperlukan mempertahankan subtipe legacy ini, simpan nama file atau metadata format asli secara terpisah dan gunakan saat menentukan nama file dan format keluaran.
Menyimpan Presentasi ke Stream
Untuk menulis presentasi tanpa bergantung pada jalur file akhir, berikan stream yang dapat ditulis dan nilai SaveFormat ke metode Presentation::save. Pendekatan ini berguna ketika output harus dikembalikan dari layanan web, disimpan di basis data, atau diproses dalam memori.
Contoh berikut menyimpan presentasi baru ke stream file:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation();
try {
$outputStream = new Java("java.io.FileOutputStream", "Output.pptx");
try {
$presentation->save($outputStream, SaveFormat::Pptx);
} finally {
$outputStream->close();
}
} finally {
$presentation->dispose();
}
Menyimpan Presentasi dengan Tipe Tampilan yang Telah Ditentukan
Anda dapat menentukan tampilan yang akan dibuka PowerPoint secara awal saat membuka presentasi yang disimpan. Gunakan metode ViewProperties::setLastView dengan nilai ViewType sebelum menyimpan.
Contoh berikut mengonfigurasi tampilan Slide Master sebagai tampilan awal:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ViewType;
$presentation = new Presentation();
try {
$presentation->getViewProperties()->setLastView(ViewType::SlideMasterView);
$presentation->save("SlideMasterView.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Menyimpan Presentasi dalam Format Strict Office Open XML
Untuk membuat file PPTX yang mematuhi profil Strict dari Office Open XML, buat instance PptxOptions dan gunakan metode PptxOptions::setConformance dengan nilai Conformance::Iso29500_2008_Strict. Kemudian berikan opsi tersebut ke metode Presentation::save.
use aspose\slides\Conformance;
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$options = new PptxOptions();
$options->setConformance(Conformance::Iso29500_2008_Strict);
$presentation = new Presentation();
try {
$presentation->save("StrictOfficeOpenXml.pptx", SaveFormat::Pptx, $options);
} finally {
$presentation->dispose();
}
Menyimpan Presentasi dalam Format Office Open XML dalam Mode Zip64
Arsip ZIP standar membatasi ukuran terkompresi dan tidak terkompresi setiap entri, ukuran total arsip, serta jumlah entri. Karena file PPTX adalah arsip ZIP, presentasi yang sangat besar dapat melampaui batas tersebut. Ekstensi ZIP64 memperbesar batas ukuran dan jumlah entri yang berlaku.
Gunakan metode PptxOptions::setZip64Mode 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:
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\Zip64Mode;
$presentation = new Presentation("Sample.pptx");
try {
$options = new PptxOptions();
$options->setZip64Mode(Zip64Mode::Always);
$presentation->save("OutputZip64.pptx", SaveFormat::Pptx, $options);
} finally {
$presentation->dispose();
}
Peringatan
Jika Zip64Mode::Never digunakan dan presentasi tidak dapat muat dalam batas ZIP standar, operasi penyimpanan akan melempar PptxException.Menyimpan Presentasi dalam Format Office Open XML dengan Tingkat Kompresi
Untuk output PPTX, Anda dapat menyeimbangkan kecepatan penyimpanan dengan ukuran file menggunakan metode PptxOptions::setCompressionLevel. Kelas CompressionLevel menyediakan nilai-nilai berikut:
- None menyimpan data tanpa kompresi.
- Level1 memberikan kompresi tercepat dan output terkompresi terbesar.
- Level2 hingga Level5 secara progresif memberi prioritas pada output yang lebih kecil dibandingkan kecepatan penyimpanan.
- Level6 menyeimbangkan kecepatan penyimpanan dan ukuran file. Ini adalah tingkat default.
- Level7 dan Level8 lebih memprioritaskan output kecil dibandingkan kecepatan penyimpanan.
- Level9 memberikan kompresi terkuat dan memerlukan waktu pemrosesan paling lama.
Contoh berikut menyimpan presentasi tanpa kompresi:
use aspose\slides\CompressionLevel;
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("Sample.pptx");
try {
$options = new PptxOptions();
$options->setCompressionLevel(CompressionLevel::None);
$presentation->save("OutputNoCompression.pptx", SaveFormat::Pptx, $options);
} finally {
$presentation->dispose();
}
Contoh berikut menggunakan tingkat kompresi maksimum:
use aspose\slides\CompressionLevel;
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("Sample.pptx");
try {
$options = new PptxOptions();
$options->setCompressionLevel(CompressionLevel::Level9);
$presentation->save("OutputMaximumCompression.pptx", SaveFormat::Pptx, $options);
} finally {
$presentation->dispose();
}
Menyimpan Presentasi tanpa Menyegarkan Thumbnail
Saat presentasi disimpan sebagai PPTX, metode PptxOptions::setRefreshThumbnail mengontrol thumbnail dokumen:
truemenghasilkan kembali thumbnail selama operasi penyimpanan. Ini adalah nilai default.falsemempertahankan thumbnail yang ada. Jika presentasi tidak memiliki thumbnail, Aspose.Slides tidak akan membuatnya.
Contoh berikut menyimpan presentasi tanpa menyegarkan thumbnailnya:
use aspose\slides\PptxOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("Sample.pptx");
try {
$options = new PptxOptions();
$options->setRefreshThumbnail(false);
$presentation->save("Output.pptx", SaveFormat::Pptx, $options);
} finally {
$presentation->dispose();
}
Catatan
Menonaktifkan penyegaran thumbnail dapat mengurangi waktu yang diperlukan untuk menyimpan file PPTX.Pembaruan Progres Penyimpanan dalam Persentase
Untuk memantau operasi penyimpanan, sediakan proxy Java yang mengimplementasikan antarmuka IProgressCallback dan berikan proxy tersebut ke metode SaveOptions::setProgressCallback. Aspose.Slides kemudian akan memanggil metode IProgressCallback::reporting dengan nilai progres selama ekspor.
Contoh berikut melaporkan progres ekspor PDF ke konsol:
use aspose\slides\PdfOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
class ExportProgressHandler {
function reporting($progressValue) {
$progress = java("java.lang.Double")->valueOf($progressValue)->intValue();
echo($progress . "% of the file has been converted." . PHP_EOL);
}
}
$progressHandler = java_closure(new ExportProgressHandler(), null, java("com.aspose.slides.IProgressCallback"));
$options = new PdfOptions();
$options->setProgressCallback($progressHandler);
$presentation = new Presentation("Sample.pptx");
try {
$presentation->save("Output.pdf", SaveFormat::Pdf, $options);
} finally {
$presentation->dispose();
}
Catatan
Aspose menyediakan PowerPoint Splitter gratis yang dibangun dengan API Aspose.Slides. Alat ini menyimpan slide terpilih dari sebuah presentasi sebagai file PPT atau PPTX terpisah.FAQ
Apakah Aspose.Slides mendukung penyimpanan inkremental atau “fast save”?
Tidak. Setiap operasi penyimpanan menulis file output lengkap bukan hanya bagian yang berubah.
Dapatkah beberapa thread menyimpan instance Presentation yang sama?
Tidak. Sebuah instance Presentation tidak thread‑safe. Akses dan simpan setiap instance hanya dari satu thread pada satu waktu.
Apa yang terjadi pada hyperlink dan file yang ditautkan secara eksternal ketika 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. Atur properti dokumen yang sesuai sebelum menyimpan, dan Aspose.Slides akan menuliskannya ke file output.