Abrir Apresentações em Java

Introdução

Além de criar apresentações PowerPoint do zero, o Aspose.Slides também permite abrir apresentações existentes. Após 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 Java 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.
Presentation presentation = new Presentation("Sample.pptx");
try {
    // Imprima o número total de slides na apresentação.
    System.out.println(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 descriptografá‑la e carregá‑la. O código Java a seguir demonstra essa operação:

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");

Presentation presentation = new Presentation("Sample.pptx", loadOptions);
try {
    // Realize operações na apresentação descriptografada.
} finally {
    presentation.dispose();
}

Abrir Apresentações Grandes

O Aspose.Slides oferece opções—especialmente o método getBlobManagementOptions na classe LoadOptions—para ajudar a carregar apresentações grandes.

O código Java a seguir demonstra o carregamento de uma apresentação grande (por exemplo, 2 GB):

LoadOptions loadOptions = new LoadOptions();
// Choose the KeepLocked behavior — the presentation file will remain locked for the lifetime of
// the Presentation instance, but it does not need to be loaded into memory or copied to a temporary file.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB

Presentation presentation = new Presentation(filePath, loadOptions);
try {
    // The large presentation has been loaded and can be used, while memory consumption remains low.

    // Make changes to the presentation.
    presentation.getSlides().get_Item(0).setName("Large presentation");

    // Save the presentation to another file. Memory consumption remains low during this operation.
    presentation.save("LargePresentation-copy.pptx", SaveFormat.Pptx);

    // Don't do this! An I/O exception will be thrown because the file is locked until the presentation object is disposed.
    //Files.delete(Paths.get(filePath));
} finally {
    presentation.dispose();
}

// It is OK to do it here. The source file is no longer locked by the presentation object.
Files.delete(Paths.get(filePath));

Controlar Recursos Externos

O Aspose.Slides fornece a interface IResourceLoadingCallback que permite gerenciar recursos externos. O código Java a seguir mostra como usar a interface IResourceLoadingCallback:

LoadOptions loadOptions = new LoadOptions();
loadOptions.setResourceLoadingCallback(new ImageLoadingHandler());

Presentation presentation = new Presentation("Sample.pptx", loadOptions);
class ImageLoadingHandler implements IResourceLoadingCallback {
    public int resourceLoading(IResourceLoadingArgs args) {
        if (args.getOriginalUri().endsWith(".jpg")) {
            try {
                // Carregue uma imagem substituta.
                byte[] imageData = Files.readAllBytes(new File("aspose-logo.jpg").toPath());
                args.setData(imageData);
                return ResourceLoadingAction.UserProvided;
            } catch (RuntimeException ex) {
                return ResourceLoadingAction.Skip;
            }  catch (IOException ex) {
                ex.printStackTrace();
            }
        } else if (args.getOriginalUri().endsWith(".png")) {
            // Defina uma URL substituta.
            args.setUri("http://www.google.com/images/logos/ps_logo2.png");
            return ResourceLoadingAction.Default;
        }
        // Ignorar todas as outras imagens.
        return ResourceLoadingAction.Skip;
    }
}

Carregar Apresentações sem Objetos Binários Incorporados

Uma apresentação PowerPoint pode conter os seguintes tipos de objetos binários incorporados:

Usando o método ILoadOptions.setDeleteEmbeddedBinaryObjects, você pode carregar uma apresentação sem nenhum objeto binário incorporado.

Esse método é útil para remover conteúdo binário potencialmente malicioso. O código Java a seguir demonstra como carregar uma apresentação sem nenhum conteúdo binário incorporado:

LoadOptions loadOptions = new LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);

Presentation presentation = new Presentation("malware.ppt", loadOptions);
try {
    // Execute operações na apresentação.
} finally {
    presentation.dispose();
}

FAQ

Como saber se um arquivo está corrompido e não pode ser aberto?

Você receberá uma exceção de validação de análise/formato durante o carregamento. Esses erros frequentemente mencionam uma estrutura ZIP inválida ou registros PowerPoint quebrados.

O que acontece se fontes necessárias estiverem ausentes ao abrir?

O arquivo será aberto, mas a renderização/exportação posterior pode substituir as fontes. Configure substituições 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?

Ela se torna disponível como recurso da apresentação. Se a mídia for referenciada por caminhos externos, assegure que esses caminhos estejam acessíveis no seu ambiente; caso contrário, a renderização/exportação pode omitir a mídia.