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);

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:

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.