PHP'de Sunumları Kaydet
Genel Bakış
Bir sunum oluşturduktan veya mevcut bir sunumu açtıktan, sonucu yazmak için Presentation::save yöntemini kullanın. Aspose.Slides for PHP via Java, bir sunumu PowerPoint, OpenDocument, PDF ve diğer formatlarda dosya veya akışa kaydedebilir. Aşağıdaki bölümler standart kaydetme işlemlerini ve PPTX çıktısı için mevcut seçenekleri kapsar.
Sunumları Dosyalara Kaydet
Bir sunumu dosyaya kaydetmek için, çıktı yolunu ve bir SaveFormat değerini Presentation::save yöntemine iletin. Format değeri, Aspose.Slides’ın oluşturacağı dosya türünü belirler.
Aşağıdaki örnek bir sunum oluşturur ve PPTX dosyası olarak kaydeder:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation();
try {
// Burada sunum içeriğini ekleyin veya değiştirin.
$presentation->save("Output.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Sunumları Orijinal Formatlarında Kaydet
Dosya ve akış tespiti örnekleri, yeni oluşturulan sunumların davranışı ve kaynak ile çıktı formatları arasındaki ayrım için Determine the Original Presentation Format bölümüne bakın.
Toplu işleme uygulamasında, giriş formatı önceden bilinmeyebilir. Bir dosya yüklendikten sonra, orijinal formatı Presentation::getSourceFormat yönteminden okuyun. Elde edilen SourceFormat değerini SlideUtil::toSaveFormat yöntemine geçirerek karşılık gelen SaveFormat değerini alın ve ardından Presentation::save yöntemiyle değiştirilmiş sunumu yazın.
Aşağıdaki tam örnek, bir giriş dizinindeki her dosyayı işler, başlığını günceller ve yüklendiği formatta bir çıktı dizinine kaydeder:
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 PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP ve PowerPoint XML dosyalarını ilgili sunum kaydetme formatlarına eşler. Yalnızca sunum kaynak formatlarını eşler; PDF, HTML, TIFF ya da görüntü gibi dışa aktarım formatlarını seçmek için kullanılmaz. Desteklenmeyen veya geçersiz bir SourceFormat değeri geçirilirse bir IllegalArgumentException oluşur.
Legacy PPT, PPS ve POT dosyaları aynı ikili kapsayıcıyı kullanır. Böyle bir sunum, dosya uzantısı olmadan bir akıştan yüklendiğinde bir PPS ya da POT dosyası PPT olarak tanımlanabilir. Bu eski alt tipleri korumanız gerekiyorsa, orijinal dosya adını veya format meta verisini ayrı olarak tutun ve çıktı dosya adı ve formatını seçerken kullanın.
Sunumları Akışlara Kaydet
Bir sunumu son bir dosya yoluna bağımlı olmadan yazmak için, write‑able bir akış ve bir SaveFormat değerini Presentation::save yöntemine iletin. Bu yaklaşım, çıktının bir web servisinden döndürülmesi, bir veritabanında saklanması veya bellekte işlenmesi gerektiğinde kullanışlıdır.
Aşağıdaki örnek yeni bir sunumu bir dosya akışına kaydeder:
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();
}
Önceden Tanımlı Görünüm Türüyle Sunumları Kaydet
PowerPoint’in kaydedilen bir sunumu ilk açtığında hangi görünümde açılacağını belirtebilirsiniz. Kaydetmeden önce bir ViewType değeriyle ViewProperties::setLastView yöntemini kullanın.
Aşağıdaki örnek Slide Master görünümünü başlangıç görünümü olarak ayarlar:
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();
}
Katı Office Open XML Formatında Sunumları Kaydet
Katı Office Open XML profiline uygun bir PPTX dosyası oluşturmak için bir PptxOptions örneği oluşturun ve PptxOptions::setConformance yöntemini Conformance::Iso29500_2008_Strict değeriyle kullanın. Ardından seçenekleri Presentation::save yöntemine iletin.
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();
}
ZIP64 Modunda Office Open XML Formatında Sunumları Kaydet
Standart ZIP arşivi, her girişin sıkıştırılmış ve sıkıştırılmamış boyutunu, toplam arşiv boyutunu ve giriş sayısını sınırlar. PPTX dosyası bir ZIP arşivi olduğundan, çok büyük bir sunum bu sınırlamaları aşabilir. ZIP64 uzantıları uygulanabilir boyut ve giriş sayısı limitlerini artırır.
PptxOptions::setZip64Mode yöntemiyle Aspose.Slides’ın ZIP64 uzantılarını yazıp yazmayacağını kontrol edin:
- IfNecessary sunum standart ZIP limitlerini aştığında yalnızca ZIP64 kullanır. Bu varsayılan moddur.
- Never ZIP64 uzantılarını devre dışı bırakır.
- Always her zaman ZIP64 uzantılarını yazar.
Aşağıdaki örnek, çıktı sunumu için ZIP64 uzantılarını her zaman etkinleştirir:
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();
}
Uyarı
Zip64Mode::Never kullanılır ve sunum standart ZIP limitlerine sığmazsa, kaydetme işlemi bir PptxException fırlatır.Sıkıştırma Seviyeleriyle Office Open XML Formatında Sunumları Kaydet
PPTX çıktısı için, PptxOptions::setCompressionLevel yöntemini kullanarak kaydetme hızını dosya boyutuyla dengeleyebilirsiniz. CompressionLevel sınıfı şu değerleri sağlar:
- None veriyi sıkıştırmadan depolar.
- Level1 en hızlı sıkıştırmayı ve en büyük sıkıştırılmış çıktıyı verir.
- Level2‑Level5 daha küçük çıktıyı kaydetme hızı pahasına tercih eder.
- Level6 kaydetme hızı ve dosya boyutunu dengeler. Bu varsayılan seviyedir.
- Level7 ve Level8 daha küçük çıktıyı kaydetme hızı pahasına daha da öne çıkar.
- Level9 en güçlü sıkıştırmayı sağlar ve en çok işlem süresi gerektirir.
Aşağıdaki örnek sıkıştırma olmadan bir sunum kaydeder:
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();
}
Aşağıdaki örnek en yüksek sıkıştırma seviyesini kullanır:
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();
}
Küçük Resmi Yenilemeksizin Sunumları Kaydet
Bir sunum PPTX olarak kaydedildiğinde, PptxOptions::setRefreshThumbnail yöntemi belge küçük resmini kontrol eder:
truekaydetme sırasında küçük resmi yeniden oluşturur. Bu varsayılan değerdir.falsemevcut küçük resmi korur. Sunumun küçük resmi yoksa Aspose.Slides bir tane oluşturmaz.
Aşağıdaki örnek küçük resmi yenilemeksizin bir sunum kaydeder:
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();
}
Not
Küçük resim yenilemeyi devre dışı bırakmak, bir PPTX dosyasının kaydedilme süresini azaltabilir.Kaydetme İlerleyişini Yüzde Olarak Güncelle
Bir kaydetme işlemini izlemek için, IProgressCallback arayüzünü uygulayan bir Java vekil nesnesi sağlayın ve bu vekili SaveOptions::setProgressCallback yöntemine geçirin. Aspose.Slides, dışa aktarım sırasında ilerleme değerlerini IProgressCallback::reporting yöntemiyle çağırır.
Aşağıdaki örnek bir PDF dışa aktarmasının ilerlemesini konsola raporlar:
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();
}
Not
Aspose, Aspose.Slides API’sı ile oluşturulmuş ücretsiz bir PowerPoint Splitter sunar. Bu araç, bir sunumdan seçilen slaytları ayrı PPT veya PPTX dosyaları olarak kaydeder.SSS
Aspose.Slides artımlı veya “hızlı kaydetme”yi destekliyor mu?
Hayır. Her kaydetme işlemi, sadece değişen bölümleri güncellemek yerine tam bir çıktı dosyası yazar.
Birden fazla iş parçacığı aynı Presentation örneğini kaydedebilir mi?
Hayır. Bir Presentation örneği thread‑safe değildir. Her örneğe aynı anda yalnızca bir iş parçacığından erişin ve kaydedin.
Bir sunumu kaydettiğimde hiper bağlantılar ve harici bağlı dosyalar ne olur?
Hyperlinks sunumda kalır. Aspose.Slides harici bağlı dosyaları kopyalamaz, bu nedenle kaydedilen sunum hâlâ bunların konumlarına erişebilmelidir.
Yazar, başlık, şirket ve oluşturma tarihi gibi belge meta verilerini kaydedebilir miyim?
Evet. Kaydetmeden önce uygun document properties ayarını yapın; Aspose.Slides bunları çıktı dosyasına yazar.