Salvar apresentações em JavaScript
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 Node.js via Java pode salvar uma apresentação em um arquivo ou stream 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 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 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:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
// Adicione ou modifique o conteúdo da apresentação aqui.
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Salvar apresentações no seu formato original
Para exemplos de detecção de arquivos e streams, 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 um aplicativo de processamento em lote, o formato de entrada pode não ser conhecido previamente. Após carregar um arquivo, leia seu formato original usando o método Presentation.getSourceFormat. Passe o valor SourceFormat resultante para SlideUtil.toSaveFormat a fim de obter o correspondente valor 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 formato em que foi carregado:
const aspose = { slides: require("aspose.slides.via.java") };
const fs = require("fs");
const path = require("path");
const inputDirectory = "Input";
const outputDirectory = "Output";
if (!fs.existsSync(inputDirectory)) {
console.error("The input directory does not exist.");
} else {
fs.mkdirSync(outputDirectory, { recursive: true });
const inputFiles = fs.readdirSync(inputDirectory, { withFileTypes: true })
.filter((entry) => entry.isFile());
for (const inputFile of inputFiles) {
const inputPath = path.join(inputDirectory, inputFile.name);
try {
const presentation = new aspose.slides.Presentation(inputPath);
try {
const saveFormat = aspose.slides.SlideUtil.toSaveFormat(presentation.getSourceFormat());
presentation.getDocumentProperties().setTitle("Processed by the batch application");
const outputPath = path.join(outputDirectory, inputFile.name);
presentation.save(outputPath, saveFormat);
} finally {
presentation.dispose();
}
} catch (error) {
console.error(`Cannot process '${inputPath}': ${error.message}`);
}
}
}
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 de apresentação; não serve para selecionar formatos de exportação como PDF, HTML, TIFF ou imagens. Passar um valor SourceFormat não suportado ou inválido resulta em erro.
Arquivos legados PPT, PPS e POT usam o mesmo contêiner binário. Quando tal apresentação é carregada de um stream sem extensão de arquivo, um arquivo PPS ou POT pode ser identificado como PPT. Se for necessário preservar esses subtipos legados, conserve o nome de arquivo ou metadados de formato originais separadamente e use‑os ao escolher o nome e o formato de saída.
Salvar apresentações em streams
Para gravar uma apresentação sem depender de um caminho de arquivo final, passe um stream gravável e um valor 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 stream de arquivo:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
const outputStream = java.newInstanceSync("java.io.FileOutputStream", "output.pptx");
try {
presentation.save(outputStream, aspose.slides.SaveFormat.Pptx);
} finally {
outputStream.close();
}
} finally {
presentation.dispose();
}
Salvar apresentações com um tipo de visualização pré‑definido
Você pode especificar a visualização na qual o PowerPoint abre inicialmente uma apresentação salva. Use o método ViewProperties.setLastView com um valor ViewType antes de salvar.
O exemplo a seguir configura a visualização Slide Master como visualização inicial:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
presentation.getViewProperties().setLastView(aspose.slides.ViewType.SlideMasterView);
presentation.save("slide-master-view.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Salvar apresentações no formato estrito 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 setConformance com Conformance.Iso29500_2008_Strict. Em seguida, passe as opções para o método Presentation.save.
const aspose = { slides: require("aspose.slides.via.java") };
const options = new aspose.slides.PptxOptions();
options.setConformance(aspose.slides.Conformance.Iso29500_2008_Strict);
const presentation = new aspose.slides.Presentation();
try {
presentation.save("strict-office-open-xml.pptx", aspose.slides.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 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 apenas quando a apresentação excede os limites padrão do ZIP. Este é o modo padrão.
- Never desabilita extensões ZIP64.
- Always grava sempre extensões ZIP64.
O exemplo a seguir sempre habilita extensões ZIP64 para a apresentação de saída:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setZip64Mode(aspose.slides.Zip64Mode.Always);
presentation.save("output-zip64.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Warning
Se Zip64Mode.Never for usado e a apresentação não couber nos limites padrão do ZIP, a operação de salvamento lançará uma PptxException.Salvar apresentações no formato Office Open XML com níveis de compressão
Para saída PPTX, você pode equilibrar a velocidade de salvamento em relação ao tamanho do arquivo usando o método PptxOptions.setCompressionLevel. A classe CompressionLevel fornece estes valores:
- None armazena os dados sem compressão.
- Level1 oferece 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 oferece a compressão mais forte e requer mais tempo de processamento.
O exemplo a seguir salva uma apresentação sem compressão:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setCompressionLevel(aspose.slides.CompressionLevel.None);
presentation.save("output-no-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
O exemplo a seguir usa o nível máximo de compressão:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setCompressionLevel(aspose.slides.CompressionLevel.Level9);
presentation.save("output-maximum-compression.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Salvar apresentações sem atualizar a miniatura
Ao salvar uma apresentação como PPTX, o método PptxOptions.setRefreshThumbnail controla a miniatura do 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:
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation("input.pptx");
try {
const options = new aspose.slides.PptxOptions();
options.setRefreshThumbnail(false);
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
presentation.dispose();
}
Note
Desabilitar a atualização da miniatura pode reduzir o tempo necessário para salvar um arquivo PPTX.Salvar atualizações de progresso em porcentagem
Para monitorar uma operação de salvamento, implemente a interface IProgressCallback com um proxy Java e passe a implementação para o 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:
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const exportProgressHandler = java.newProxy("com.aspose.slides.IProgressCallback", {
reporting: function(progressValue) {
const progress = Math.floor(progressValue);
console.log(`${progress}% of the file has been converted.`);
}
});
const options = new aspose.slides.PdfOptions();
options.setProgressCallback(exportProgressHandler);
const presentation = new aspose.slides.Presentation("input.pptx");
try {
presentation.save("output.pdf", aspose.slides.SaveFormat.Pdf, options);
} finally {
presentation.dispose();
}
Note
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.Perguntas frequentes
O Aspose.Slides oferece suporte a salvamento incremental ou “salvamento rápido”?
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. Acesse e salve cada instância apenas de um thread por vez.
O que acontece com hiperlinks e arquivos vinculados externamente quando salvo uma apresentação?
Hyperlinks permanecem na apresentação. O Aspose.Slides não copia arquivos vinculados externamente, portanto a apresentação salva ainda precisa conseguir acessar seus locais.
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.