Abrir Apresentações em JavaScript
Introdução
Além de criar apresentações do PowerPoint do zero, o Aspose.Slides também permite abrir apresentações existentes. Depois de carregar uma apresentação, você pode obter informações sobre ela, editar o conteúdo dos slides, adicionar novos slides, remover os existentes e muito mais.
Abrir Apresentações
Para abrir uma apresentação existente, instancie a classe Presentation e passe o caminho do arquivo ao seu construtor.
O exemplo JavaScript a seguir mostra como abrir uma apresentação e obter a contagem de slides:
// Instancie a classe Presentation e passe um caminho de arquivo ao seu construtor.
let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
// Imprima o número total de slides na apresentação.
console.log(presentation.getSlides().size());
} finally {
presentation.dispose();
}
Abrir Apresentações Protegidas por Senha
Quando precisar abrir uma apresentação protegida por senha, passe a senha através do método setPassword da classe LoadOptions para descriptografar e carregá‑la. O código JavaScript a seguir demonstra esta operação:
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");
let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
try {
// Execute operações na apresentação descriptografada.
} finally {
presentation.dispose();
}
Abrir Apresentações Grandes
O Aspose.Slides oferece opções — particularmente o método getBlobManagementOptions da classe LoadOptions — para ajudar a carregar apresentações grandes.
O código JavaScript a seguir demonstra o carregamento de uma apresentação grande (por exemplo, 2 GB):
const filePath = "LargePresentation.pptx";
let loadOptions = new aspose.slides.LoadOptions();
// Escolha o comportamento KeepLocked — o arquivo da apresentação permanecerá bloqueado durante a vida útil de
// a instância Presentation, mas não precisa ser carregado na memória ou copiado para um arquivo temporário.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(aspose.slides.PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB
let presentation = new aspose.slides.Presentation(filePath, loadOptions);
try {
// A grande apresentação foi carregada e pode ser usada, enquanto o consumo de memória permanece baixo.
// Faça alterações na apresentação.
presentation.getSlides().get_Item(0).setName("Large presentation");
// Salve a apresentação em outro arquivo. O consumo de memória permanece baixo durante esta operação.
presentation.save("LargePresentation-copy.pptx", aspose.slides.SaveFormat.Pptx);
// Não faça isso! Uma exceção de I/O será lançada porque o arquivo está bloqueado até que o objeto presentation seja descartado.
//fs.unlinkSync(filePath);
} finally {
presentation.dispose();
}
// Está tudo bem fazer isso aqui. O arquivo fonte não está mais bloqueado pelo objeto presentation.
fs.unlinkSync(filePath);
Info
Para contornar certas limitações ao trabalhar com streams, o Aspose.Slides pode copiar o conteúdo de um stream. Carregar uma apresentação grande a partir de um stream faz com que a apresentação seja copiada e pode tornar o carregamento mais lento. Portanto, quando precisar carregar uma apresentação grande, recomendamos fortemente usar o caminho do arquivo da apresentação em vez de um stream.
Ao criar uma apresentação que contém objetos grandes (vídeo, áudio, imagens de alta resolução etc.), você pode usar Gerenciamento de BLOB para reduzir o consumo de memória.
Controlar Recursos Externos
O Aspose.Slides fornece a interface IResourceLoadingCallback que permite gerenciar recursos externos. O código JavaScript a seguir mostra como usar a interface IResourceLoadingCallback:
const ImageLoadingHandler = java.newProxy("com.aspose.slides.IResourceLoadingCallback", {
resourceLoading: function(args) {
if (args.getOriginalUri().endsWith(".jpg")) {
try {
// Carregue uma imagem substituta.
const imageData = fs.readFileSync("aspose-logo.jpg");
args.setData(imageData);
return aspose.slides.ResourceLoadingAction.UserProvided;
} catch {
return aspose.slides.ResourceLoadingAction.Skip;
}
} else if (args.getOriginalUri().endsWith(".png")) {
// Defina uma URL substituta.
args.setUri("http://www.google.com/images/logos/ps_logo2.png");
return aspose.slides.ResourceLoadingAction.Default;
}
// Ignorar todas as outras imagens.
return aspose.slides.ResourceLoadingAction.Skip;
}
});
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setResourceLoadingCallback(ImageLoadingHandler);
let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
Carregar Apresentações Sem Objetos Binários Incorporados
Uma apresentação do PowerPoint pode conter os seguintes tipos de objetos binários incorporados:
- Projeto VBA (acessível via Presentation.getVbaProject);
- Dados incorporados de objeto OLE (acessível via OleEmbeddedDataInfo.getEmbeddedFileData);
- Dados binários de controle ActiveX (acessível via Control.getActiveXControlBinary).
Usando o método LoadOptions.setDeleteEmbeddedBinaryObjects, você pode carregar uma apresentação sem quaisquer objetos binários incorporados.
Esse método é útil para remover conteúdo binário potencialmente malicioso. O código JavaScript a seguir demonstra como carregar uma apresentação sem nenhum conteúdo binário incorporado:
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);
let presentation = new aspose.slides.Presentation("malware.ppt", loadOptions);
try {
// Execute operações na apresentação.
} finally {
presentation.dispose();
}
FAQ
Como posso saber que um arquivo está corrompido e não pode ser aberto?
Você receberá uma exceção de validação de parsing/formato durante o carregamento. Esses erros geralmente mencionam uma estrutura ZIP inválida ou registros do PowerPoint corrompidos.
O que acontece se fontes necessárias estiverem ausentes ao abrir?
O arquivo será aberto, mas posteriormente a renderização/exportação pode substituir fontes. Configure a substituição de fontes ou adicione as fontes necessárias ao ambiente de tempo de execução.
E quanto a mídia incorporada (vídeo/áudio) ao abrir?
Eles se tornam disponíveis como recursos da apresentação. Se a mídia for referenciada por caminhos externos, certifique‑se de que esses caminhos estejam acessíveis no seu ambiente; caso contrário, a renderização/exportação pode omitir a mídia.