Abrir Apresentações no Android
Introdução
Aspose.Slides para Android via Java pode carregar apresentações PowerPoint e OpenDocument a partir de arquivos e fluxos. Depois que uma apresentação é 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 por meio da classe LoadOptions. Por exemplo, você pode fornecer uma senha de abertura, manter objetos binários grandes fora da memória heap do Java, controlar recursos externos ou omitir dados binários incorporados.
Abrir Apresentações
Após carregar um arquivo ou fluxo, você pode determinar seu formato original de apresentação para escolher como sua aplicação o processa.
Para abrir uma apresentação existente, passe o caminho do arquivo ao construtor Presentation. Libere a apresentação após o uso para que manipuladores de arquivo, dados temporários e outros recursos sejam liberados prontamente.
O exemplo Java a seguir mostra como abrir uma apresentação e obter a contagem de slides:
import com.aspose.slides.Presentation;
Presentation presentation = new Presentation("sample.pptx");
try {
System.out.println("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 construtor Presentation. O carregamento falha quando a senha está ausente ou incorreta.
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("open_password");
Presentation presentation = new Presentation("encrypted-presentation.pptx", loadOptions);
try {
System.out.println("Slide count: " + presentation.getSlides().size());
} finally {
presentation.dispose();
}
Para detecção, validação e fluxos de trabalho de criptografia de senhas, consulte Apresentações Protegidas por Senha. Se uma apresentação criptografada foi deliberadamente salva 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 devolve opções que controlam como 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 retidos na memória.
O código Java a seguir demonstra o carregamento de uma apresentação grande (por exemplo, 2 GB):
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.PresentationLockingBehavior;
import com.aspose.slides.SaveFormat;
final String filePath = "large-presentation.pptx";
LoadOptions loadOptions = new LoadOptions();
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024);
Presentation presentation = new Presentation(filePath, loadOptions);
try {
presentation.getSlides().get_Item(0).setName("Large presentation");
presentation.save("large-presentation-copy.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Note
Com PresentationLockingBehavior.KeepLocked, o arquivo de origem permanece bloqueado até que a instância da apresentação seja liberada. Não mova, sobrescreva ou exclua o arquivo de origem enquanto essa instância estiver viva.
Aspose.Slides pode copiar o conteúdo de um fluxo de entrada durante o carregamento. Para apresentações grandes, um caminho de arquivo é geralmente mais eficiente que um fluxo. Consulte Gerenciar 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 ignorar o recurso. Isso é útil quando apresentações contêm imagens externas que precisam ser resolvidas de acordo com regras de segurança ou armazenamento específicas da aplicação.
import com.aspose.slides.IResourceLoadingArgs;
import com.aspose.slides.IResourceLoadingCallback;
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.ResourceLoadingAction;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Locale;
class ImageLoadingHandler implements IResourceLoadingCallback {
public int resourceLoading(IResourceLoadingArgs args) {
boolean isJpeg = args.getOriginalUri().toLowerCase(Locale.ROOT).endsWith(".jpg");
Path approvedImagePath = Paths.get("approved-image.jpg");
if (!isJpeg || !Files.exists(approvedImagePath)) {
return ResourceLoadingAction.Skip;
}
try {
byte[] imageData = Files.readAllBytes(approvedImagePath);
args.setData(imageData);
return ResourceLoadingAction.UserProvided;
} catch (IOException exception) {
System.err.println("The approved replacement image could not be read.");
return ResourceLoadingAction.Skip;
}
}
}
LoadOptions loadOptions = new LoadOptions();
loadOptions.setResourceLoadingCallback(new ImageLoadingHandler());
Presentation presentation = new Presentation("presentation-with-external-images.pptx", loadOptions);
try {
System.out.println("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 a aplicação não precisa ou não deseja reter. Exemplos incluem:
- projetos VBA, disponíveis por meio de IPresentation.getVbaProject;
- dados OLE incorporados, disponíveis por meio de IOleEmbeddedDataInfo.getEmbeddedFileData;
- dados de controle ActiveX, disponíveis por meio de IControl.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 cargas úteis incorporadas indesejadas, mas não é um sistema completo de detecção de malware ou sanitização de conteúdo.
import com.aspose.slides.LoadOptions;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
LoadOptions loadOptions = new LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);
Presentation presentation = new Presentation("presentation-with-embedded-data.pptx", loadOptions);
try {
presentation.save("presentation-without-embedded-data.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
FAQ
Como posso identificar que um arquivo está corrompido e não pode ser aberto?
Aspose.Slides lança uma exceção de parsing 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?
Áudio e vídeo incorporados ficam disponíveis por meio do modelo de objetos da apresentação. Recursos externos são resolvidos de acordo com o comportamento de carregamento configurado e podem estar indisponíveis se seus locais não puderem ser acessados.