Salvar Apresentações em PHP
Visão geral
Depois de criar uma apresentação ou abrir uma existente, use o método Presentation::save para gravar o resultado. Aspose.Slides for PHP via Java pode salvar uma apresentação em um arquivo ou fluxo nos formatos PowerPoint, OpenDocument, PDF e outros. As seções a seguir cobrem as operações padrão de salvamento e as opções disponíveis para a saída PPTX.
Salvar apresentações em arquivos
Para salvar uma apresentação em um arquivo, passe o caminho de saída e um valor de SaveFormat para o método Presentation::save. O valor de formato determina o tipo de arquivo que o Aspose.Slides cria.
O exemplo a seguir cria uma apresentação e a salva como um arquivo PPTX:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation();
try {
// Adicionar ou modificar o conteúdo da apresentação aqui.
$presentation->save("Output.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Salvar apresentações em seu formato original
Para exemplos de detecção de arquivos e fluxos, o comportamento de apresentações recém‑criadas e a distinção entre formatos de origem e de saída, veja Determine the Original Presentation Format.
Em uma aplicação de processamento em lote, o formato de entrada pode não ser conhecido com antecedência. Após carregar um arquivo, leia seu formato original usando o método Presentation::getSourceFormat. Passe o valor resultante de SourceFormat para SlideUtil::toSaveFormat para obter o correspondente valor de SaveFormat, e então use Presentation::save para gravar a apresentação modificada.
O exemplo completo a seguir processa cada arquivo em um diretório de entrada, atualiza seu título e o salva em um diretório de saída no mesmo formato em que foi carregado:
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 mapeia PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP e PowerPoint XML para seus respectivos formatos de salvamento de apresentação. Ele mapeia apenas formatos de origem da apresentação; não é destinado a selecionar formatos de exportação como PDF, HTML, TIFF ou imagens. Passar um valor de SourceFormat não suportado ou inválido resulta em um IllegalArgumentException.
Arquivos legados PPT, PPS e POT usam o mesmo contêiner binário. Quando tal apresentação é carregada a partir de um fluxo sem extensão de arquivo, um arquivo PPS ou POT pode ser identificado como PPT. Se for necessário preservar esses subtipos legados, mantenha o nome de arquivo original ou os metadados de formato separadamente e use‑os ao escolher o nome e o formato de saída.
Salvar apresentações em fluxos
Para gravar uma apresentação sem depender de um caminho de arquivo final, passe um fluxo gravável e um valor de SaveFormat para o método Presentation::save. Essa abordagem é útil quando a saída deve ser retornada de um serviço web, armazenada em um banco de dados ou processada na memória.
O exemplo a seguir salva uma nova apresentação em um fluxo de arquivo:
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();
}
Salvar apresentações com um tipo de exibição predefinido
É possível especificar a exibição na qual o PowerPoint abre inicialmente uma apresentação salva. Use o método ViewProperties::setLastView com um valor de ViewType antes de salvar.
O exemplo a seguir configura a exibição Mestre de Slides como a exibição inicial:
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();
}
Salvar apresentações no formato Strict Office Open XML
Para criar um arquivo PPTX que esteja em conformidade com o perfil Strict do Office Open XML, crie uma instância de PptxOptions e use seu método PptxOptions::setConformance com Conformance::Iso29500_2008_Strict. Em seguida, passe as opções para o método 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();
}
Salvar apresentações no formato Office Open XML no modo Zip64
Um arquivo ZIP padrão limita o tamanho compactado e descompactado de cada entrada, o tamanho total do arquivo e o número de entradas. Como um arquivo PPTX é um arquivo ZIP, uma apresentação muito grande pode exceder esses limites. As extensões ZIP64 aumentam os limites de tamanho e contagem de entradas aplicáveis.
Use o método PptxOptions::setZip64Mode para controlar se o Aspose.Slides grava extensões ZIP64:
- IfNecessary usa ZIP64 somente quando a apresentação excede os limites padrão de ZIP. Este é o modo padrão.
- Never desabilita as extensões ZIP64.
- Always sempre grava extensões ZIP64.
O exemplo a seguir sempre habilita extensões ZIP64 para a apresentação de saída:
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();
}
Aviso
Se Zip64Mode::Never for usado e a apresentação não couber dentro dos limites padrão de ZIP, a operação de salvamento lançará um PptxException.Salvar apresentações no formato Office Open XML com níveis de compressão
Para a saída PPTX, você pode equilibrar a velocidade de salvamento contra o tamanho do arquivo usando o método PptxOptions::setCompressionLevel. A classe CompressionLevel fornece estes valores:
- None armazena dados sem compressão.
- Level1 fornece a compressão mais rápida e a maior saída compactada.
- Level2 até Level5 favorecem progressivamente uma saída menor em detrimento da velocidade de salvamento.
- Level6 equilibra velocidade de salvamento e tamanho do arquivo. Este é o nível padrão.
- Level7 e Level8 favorecem ainda mais uma saída menor sobre a velocidade.
- Level9 fornece a compressão mais forte e requer mais tempo de processamento.
O exemplo a seguir salva uma apresentação sem compressão:
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();
}
O exemplo a seguir usa o nível máximo de compressão:
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();
}
Salvar apresentações sem atualizar a miniatura
Quando uma apresentação é salva como PPTX, o método PptxOptions::setRefreshThumbnail controla sua miniatura de documento:
trueregenera a miniatura durante a operação de salvamento. Este é o valor padrão.falsepreserva a miniatura existente. Se a apresentação não possuir miniatura, o Aspose.Slides não gera uma.
O exemplo a seguir salva uma apresentação sem atualizar sua miniatura:
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();
}
Nota
Desabilitar a atualização da miniatura pode reduzir o tempo necessário para salvar um arquivo PPTX.Atualizações de progresso de salvamento em porcentagem
Para monitorar uma operação de salvamento, forneça um proxy Java que implemente a interface IProgressCallback e passe o proxy ao método SaveOptions::setProgressCallback. O Aspose.Slides então chama o método IProgressCallback::reporting com valores de progresso durante a exportação.
O exemplo a seguir relata o progresso de uma exportação PDF no console:
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();
}
Nota
A Aspose oferece um PowerPoint Splitter gratuito, construído com a API Aspose.Slides. Ele salva slides selecionados de uma apresentação como arquivos PPT ou PPTX separados.FAQ
O Aspose.Slides suporta salvamento incremental ou “fast save”?
Não. Cada operação de salvamento grava um arquivo de saída completo em vez de atualizar apenas as partes alteradas.
Vários threads podem salvar a mesma instância de Presentation?
Não. Uma instância de Presentation não é thread‑safe (/slides/pt/php-java/multithreading/). Acesse e salve cada instância a partir de apenas um thread por vez.
O que acontece com hyperlinks e arquivos vinculados externamente ao salvar uma apresentação?
Hyperlinks permanecem na apresentação. O Aspose.Slides não copia arquivos vinculados externamente, portanto a apresentação salva ainda deve ser capaz de acessar suas localizações.
Posso salvar metadados do documento como autor, título, empresa e data de criação?
Sim. Defina as propriedades do documento apropriadas antes de salvar, e o Aspose.Slides as grava no arquivo de saída.