Abrir apresentações em JavaScript
Introdução
Aspose.Slides for Node.js via Java pode carregar apresentações PowerPoint e OpenDocument a partir de arquivos e streams. Após uma apresentação ser carregada, você pode inspecionar sua estrutura, editar slides, gerenciar recursos e salvá‑la no formato original ou em outro formato suportado.
O comportamento de carregamento pode ser personalizado através da classe LoadOptions. Por exemplo, você pode fornecer uma senha de abertura, manter objetos binários grandes fora da memória do Node.js, controlar recursos externos ou omitir dados binários incorporados.
Abrir Apresentações
Para abrir uma apresentação existente, passe o caminho do arquivo para o Presentation constructor. Libere a apresentação após o uso para que manipuladores de arquivos, dados temporários e outros recursos sejam liberados prontamente.
O exemplo JavaScript a seguir mostra como abrir uma apresentação e obter a contagem de slides:
const slides = require("aspose.slides.via.java");
const presentation = new slides.Presentation("sample.pptx");
try {
console.log("Slide count: " + presentation.getSlides().size());
} finally {
presentation.dispose();
}
Abrir Apresentações Protegidas por Senha
Uma senha de abertura criptografa o conteúdo da apresentação. Para carregar a apresentação completa, passe a senha correta para LoadOptions.setPassword e forneça as opções ao Presentation constructor. O carregamento falha quando a senha está ausente ou incorreta.
const slides = require("aspose.slides.via.java");
const loadOptions = new slides.LoadOptions();
loadOptions.setPassword("open_password");
const presentation = new slides.Presentation("encrypted-presentation.pptx", loadOptions);
try {
console.log("Slide count: " + presentation.getSlides().size());
} finally {
presentation.dispose();
}
Para detecção de senha, validação e fluxos de trabalho de criptografia, veja Apresentações Protegidas por Senha. Se uma apresentação criptografada foi salva deliberadamente com propriedades de documento públicas, essas propriedades podem ser lidas sem senha; veja Gerenciar Propriedades da Apresentação.
Abrir Apresentações Grandes
LoadOptions.getBlobManagementOptions retorna opções que controlam como o Aspose.Slides lida com objetos binários grandes, como imagens, áudio e vídeo. Você pode manter o arquivo de origem bloqueado, permitir arquivos temporários e limitar a quantidade de dados BLOB mantidos na memória.
O código JavaScript a seguir demonstra o carregamento de uma apresentação grande (por exemplo, 2 GB):
const slides = require("aspose.slides.via.java");
const filePath = "large-presentation.pptx";
const loadOptions = new slides.LoadOptions();
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(slides.PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024);
const presentation = new slides.Presentation(filePath, loadOptions);
try {
presentation.getSlides().get_Item(0).setName("Large presentation");
presentation.save("large-presentation-copy.pptx", slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Note
Com PresentationLockingBehavior.KeepLocked, o arquivo de origem permanece bloqueado até que a instância da apresentação seja descartada. Não mova, sobrescreva ou exclua o arquivo de origem enquanto essa instância estiver ativa.
O Aspose.Slides pode copiar o conteúdo de um stream de entrada ao carregá‑lo. Para apresentações grandes, um caminho de arquivo geralmente é mais eficiente do que um stream. Veja Manage BLOBs para opções adicionais de armazenamento e gerenciamento de memória.
Controlar Recursos Externos
LoadOptions.setResourceLoadingCallback aceita uma implementação de IResourceLoadingCallback. O callback pode fornecer dados de substituição, redirecionar um recurso, usar o carregador padrão ou pular o recurso. Isso é útil quando as apresentações contêm imagens externas que precisam ser resolvidas de acordo com regras de segurança ou armazenamento específicas da aplicação.
const slides = require("aspose.slides.via.java");
const fs = require("fs");
const java = require("java");
const imageLoadingHandler = java.newProxy("com.aspose.slides.IResourceLoadingCallback", {
resourceLoading: function(args) {
const isJpeg = args.getOriginalUri().toLowerCase().endsWith(".jpg");
const approvedImagePath = "approved-image.jpg";
if (!isJpeg || !fs.existsSync(approvedImagePath)) {
return slides.ResourceLoadingAction.Skip;
}
try {
const imageData = fs.readFileSync(approvedImagePath);
args.setData(imageData);
return slides.ResourceLoadingAction.UserProvided;
} catch (error) {
console.error("The approved replacement image could not be read.");
return slides.ResourceLoadingAction.Skip;
}
}
});
const loadOptions = new slides.LoadOptions();
loadOptions.setResourceLoadingCallback(imageLoadingHandler);
const presentation = new slides.Presentation("presentation-with-external-images.pptx", loadOptions);
try {
console.log("Slide count: " + presentation.getSlides().size());
} finally {
presentation.dispose();
}
Carregar Apresentações sem Objetos Binários Incorporados
Uma apresentação pode conter dados binários incorporados que uma aplicação não precisa ou não deseja manter. Exemplos incluem:
- Projetos VBA, disponíveis através de Presentation.getVbaProject;
- Dados OLE incorporados, disponíveis através de OleEmbeddedDataInfo.getEmbeddedFileData;
- Dados de controle ActiveX, disponíveis através de Control.getActiveXControlBinary.
Defina LoadOptions.setDeleteEmbeddedBinaryObjects como true para remover esses dados binários durante o carregamento. Salve a apresentação carregada para persistir o resultado sanitizado.
Esta opção reduz a exposição a payloads incorporados indesejados, mas não é um sistema completo de detecção de malware ou sanitização de conteúdo.
const slides = require("aspose.slides.via.java");
const loadOptions = new slides.LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);
const presentation = new slides.Presentation("presentation-with-embedded-data.pptx", loadOptions);
try {
presentation.save("presentation-without-embedded-data.pptx", slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
FAQ
Como posso saber que um arquivo está corrompido e não pode ser aberto?
O Aspose.Slides lança uma exceção de análise ou de formato durante o carregamento. Trate essa falha separadamente de um erro de senha incorreta para que a aplicação possa relatar a causa com precisão.
O que acontece se fontes necessárias estiverem ausentes?
A apresentação ainda pode ser carregada, mas a renderização e a exportação podem substituir fontes. Você pode configurar substituição de fontes ou fornecer fontes personalizadas para tornar a saída mais previsível.
O carregamento de uma apresentação também carrega sua mídia incorporada?
Áudios e vídeos incorporados tornam‑se disponíveis através do modelo de objeto da apresentação. Recursos externos são resolvidos de acordo com o comportamento de carregamento de recursos configurado e podem estar indisponíveis se seus locais não puderem ser acessados.