Bemutatók mentése PHP-ben
Áttekintés
Miután létrehoz egy bemutatót vagy nyisson meg egy meglévőt, használja a Presentation::save metódust az eredmény írásához. Az Aspose.Slides for PHP via Java képes a bemutatót fájlba vagy adatfolyamba menteni PowerPoint, OpenDocument, PDF és más formátumokban. Az alábbi szakaszok lefedik a szabványos mentési műveleteket és a PPTX kimenethez elérhető beállításokat.
Bemutatók mentése fájlokba
A bemutató fájlba mentéséhez adja meg a kimeneti útvonalat és egy SaveFormat értéket a Presentation::save metódusnak. A formátumérték határozza meg a fájl típusát, amelyet az Aspose.Slides létrehoz.
A következő példa bemutatót hoz létre, és PPTX fájlként menti el:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation();
try {
// Itt adjon hozzá vagy módosítson bemutató tartalmat.
$presentation->save("Output.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Bemutatók mentése eredeti formátumban
Fájl- és adatfolyam-észlelési példákért, az újonnan létrehozott bemutatók viselkedéséért, valamint a forrás- és kimeneti formátumok közti különbségért lásd az Az eredeti bemutatóformátum meghatározása.
Kötegelt feldolgozó alkalmazásban a bemeneti formátum nem ismerhető előre. Egy fájl betöltése után olvassa ki az eredeti formátumát a Presentation::getSourceFormat metódusból. Adja át a kapott SourceFormat értéket a SlideUtil::toSaveFormat metódusnak, hogy megkapja a megfelelő SaveFormat értéket, majd használja a Presentation::save metódust a módosított bemutató írásához.
A következő teljes példa minden fájlt feldolgoz egy bemeneti könyvtárban, frissíti a címét, és a betöltött formátumban menti egy kimeneti könyvtárba:
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();
}
}
}
}
Az SlideUtil::toSaveFormat leképezi a PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP és a PowerPoint XML formátumokat a megfelelő bemutató mentési formátumokra. Csak a bemutató forrásformátumokat térképezi le; nem arra szolgál, hogy export formátumokat, például PDF, HTML, TIFF vagy képek válasszon. Nem támogatott vagy érvénytelen SourceFormat érték átadása IllegalArgumentException kivételt eredményez.
A régi PPT, PPS és POT fájlok ugyanazt a bináris tárolót használják. Ha egy ilyen bemutatót egy kiterjesztés nélküli adatfolyamból töltenek be, egy PPS vagy POT fájlt ezért PPT‑ként azonosíthatnak. Ha ezeknek a régi alkategóriáknak a megőrzése szükséges, tartsa meg az eredeti fájlnevet vagy formátum metaadatát külön, és használja azt a kimeneti fájlnév és formátum kiválasztásakor.
Bemutatók mentése adatfolyamokba
A bemutató írásához anélkül, hogy végső fájl útvonalra támaszkodna, adjon meg egy írható adatfolyamot és egy SaveFormat értéket a Presentation::save metódusnak. Ez a megközelítés akkor hasznos, ha a kimenetet egy webszolgáltatásból kell visszaadni, adatbázisban tárolni vagy memóriában feldolgozni.
A következő példa egy új bemutatót ment fájl adatfolyamba:
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();
}
Bemutatók mentése előre definiált nézettípussal
Megadhatja azt a nézetet, amelyben a PowerPoint kezdetben megnyit egy mentett bemutatót. Használja a ViewProperties::setLastView metódust egy ViewType értékkel a mentés előtt.
A következő példa a Dia-mester nézetet állítja be kezdeti nézetként:
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();
}
Bemutatók mentése a szigorú Office Open XML formátumban
A PPTX fájl létrehozásához, amely megfelel az Office Open XML szigorú profiljának, hozzon létre egy PptxOptions példányt, és használja a PptxOptions::setConformance metódust a Conformance::Iso29500_2008_Strict értékkel. Ezután adja át a beállításokat a Presentation::save metódusnak.
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();
}
Bemutatók mentése Office Open XML formátumban Zip64 módban
A szabványos ZIP archívum korlátozza minden bejegyzés tömörített és tömörítetlen méretét, a teljes archívum méretét és a bejegyzések számát. Mivel a PPTX fájl egy ZIP archívum, egy nagyon nagy bemutató túllépheti ezeket a korlátokat. A ZIP64 kiterjesztések emelik a vonatkozó méret- és bejegyzésszám‑korlátokat.
Használja a PptxOptions::setZip64Mode metódust annak szabályozására, hogy az Aspose.Slides ZIP64 kiterjesztéseket írjon‑e:
- IfNecessary csak akkor használ ZIP64‑et, ha a bemutató meghaladja a szabványos ZIP korlátokat. Ez a alapértelmezett mód.
- Never letiltja a ZIP64 kiterjesztéseket.
- Always mindig ír ZIP64 kiterjesztéseket.
A következő példa minden esetben engedélyezi a ZIP64 kiterjesztéseket a kimeneti bemutatóhoz:
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();
}
Warning
Ha a Zip64Mode::Never használatos és a bemutató nem fér bele a szabványos ZIP korlátokba, a mentési művelet PptxException kivételt dob.Bemutatók mentése Office Open XML formátumban tömörítési szintekkel
A PPTX kimenethez a mentési sebesség és a fájlméret egyensúlyát a PptxOptions::setCompressionLevel metódus használatával állíthatja be. A CompressionLevel osztály a következő értékeket biztosítja:
- None adatokat tömörítés nélkül tárol.
- Level1 a leggyorsabb tömörítést és a legnagyobb tömörített kimenetet biztosítja.
- Level2 a Level5 fokozatosan a kisebb kimenetet részesíti előnyben a mentési sebességgel szemben.
- Level6 egyensúlyt teremt a mentési sebesség és a fájlméret között. Ez az alapértelmezett szint.
- Level7 és Level8 még inkább a kisebb kimenetet részesítik előnyben a mentési sebességgel szemben.
- Level9 a legerősebb tömörítést biztosítja, és a legtöbb feldolgozási időt igényli.
A következő példa bemutatót ment tömörítés nélkül:
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 következő példa a maximális tömörítési szintet használja:
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();
}
Bemutatók mentése a bélyegkép frissítése nélkül
Amikor egy bemutatót PPTX‑ként ment, a PptxOptions::setRefreshThumbnail metódus szabályozza a dokumentum bélyegképét:
truea mentés során újragenerálja a bélyegképet. Ez az alapértelmezett érték.falsemegőrzi a meglévő bélyegképet. Ha a bemutatónak nincs bélyegképe, az Aspose.Slides nem generál újat.
A következő példa a bemutatót a bélyegkép frissítése nélkül menti:
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();
}
Note
A bélyegkép frissítésének letiltása csökkentheti a PPTX fájl mentéséhez szükséges időt.Mentési előrehaladás frissítései százalékban
A mentési művelet nyomon követéséhez biztosítson egy Java proxy‑t, amely megvalósítja az IProgressCallback interfészt, és adja át a proxy‑t a SaveOptions::setProgressCallback metódusnak. Az Aspose.Slides ezután a IProgressCallback::reporting metódust hívja meg a folyamat értékekkel az export során.
A következő példa a PDF export előrehaladását a konzolra jelenti:
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();
}
Note
Az Aspose egy ingyenes PowerPoint Splitter szolgáltatást kínál, amely az Aspose.Slides API‑val készült. Kiválasztott diák mentését külön PPT vagy PPTX fájlokként végzi.GYIK
Támogatja‑e az Aspose.Slides az inkrementális vagy „gyors mentést”?
Nem. Minden mentési művelet egy teljes kimeneti fájlt ír, nem csak a módosult részeket.
Több szál is mentheti ugyanazt a Presentation példányt?
Nem. A Presentation példány is not thread-safe. Minden példányt csak egy szál használhat egyszerre.
Mi történik a hiperhivatkozásokkal és a külsőleg hivatkozott fájlokkal, amikor egy bemutatót mentek?
Hyperlinks megmaradnak a bemutatóban. Az Aspose.Slides nem másolja a külsőleg hivatkozott fájlokat, ezért a mentett bemutatónak továbbra is hozzá kell férnie azok helyéhez.
Menthetek‑e dokumentum metaadatokat, például szerzőt, címet, céget és létrehozási dátumot?
Igen. Állítsa be a megfelelő document properties értékeket a mentés előtt, és az Aspose.Slides a kimeneti fájlba írja őket.