Recuperar e Atualizar Informações da Apresentação em Python
Visão geral
Aspose.Slides pode identificar o formato de uma apresentação e ler seus metadados de documento sem criar um modelo de objeto de apresentação completo. Isso é útil quando você precisa classificar arquivos, criar um inventário ou inspecionar propriedades antes de decidir se carrega e processa o conteúdo da apresentação.
Este artigo demonstra inspeção leve por meio de PresentationFactory e PresentationInfo, bem como atualizações direcionadas por meio de DocumentProperties.
Verificar o formato de uma apresentação
Se você já tem uma apresentação carregada, consulte Determine the Original Presentation Format para detecção após o carregamento e as limitações dos fluxos legados PPT, PPS e POT.
Use PresentationFactory.get_presentation_info para inspecionar um arquivo sem criar uma instância de Presentation. A propriedade PresentationInfo.load_format informa o formato detectado, como PPTX, PPT ou ODP.
import aspose.slides as slides
file_names = ["pres.pptx", "pres.ppt", "pres.odp"]
for file_name in file_names:
presentation_info = slides.PresentationFactory.instance.get_presentation_info(file_name)
print(f"{file_name}: {presentation_info.load_format}")
Criar um inventário de apresentação leve
Ao processar muitos arquivos de apresentação, você pode precisar de um inventário compacto para validação, indexação ou um sistema de gerenciamento de documentos. Nesse cenário, use PresentationFactory.get_presentation_info para obter um objeto PresentationInfo e, em seguida, chame PresentationInfo.read_document_properties para ler os metadados do documento. Essa abordagem não cria uma instância de Presentation nem exige que você percorra todo o modelo de objeto da apresentação.
As propriedades estendidas expostas por DocumentProperties fornecem os seguintes valores de inventário:
| Propriedade | Valor de inventário |
|---|---|
| slides | Número total de slides. |
| hidden_slides | Número de slides ocultos. |
| notes | Número de slides que contêm anotações. |
| paragraphs | Número total de parágrafos, quando disponível. |
| words | Número total de palavras. |
| multimedia_clips | Número total de clipes de áudio e vídeo. |
O exemplo a seguir lê esses valores sem criar um objeto Presentation e imprime um inventário compacto. Ele também combina heading_pairs com titles_of_parts para exibir grupos de conteúdo como fontes, temas e títulos de slides.
import os
import aspose.slides as slides
file_path = "sample.pptx"
presentation_info = slides.PresentationFactory.instance.get_presentation_info(file_path)
document_properties = presentation_info.read_document_properties()
print(f"File: {os.path.basename(file_path)}")
print(f"Format: {presentation_info.load_format}")
print(f"Title: {document_properties.title}")
print(f"Author: {document_properties.author}")
print("Statistics:")
print(f" Slides: {document_properties.slides}")
print(f" Hidden slides: {document_properties.hidden_slides}")
print(f" Slides with notes: {document_properties.notes}")
print(f" Paragraphs: {document_properties.paragraphs}")
print(f" Words: {document_properties.words}")
print(f" Multimedia clips: {document_properties.multimedia_clips}")
heading_pairs = document_properties.heading_pairs or []
titles_of_parts = document_properties.titles_of_parts or []
part_index = 0
if not heading_pairs or not titles_of_parts:
print("Content groups: not available")
else:
print("Content groups:")
for heading_pair in heading_pairs:
print(f" {heading_pair.name} ({heading_pair.count})")
for _ in range(heading_pair.count):
if part_index >= len(titles_of_parts):
break
print(f" - {titles_of_parts[part_index]}")
part_index += 1
if part_index < len(titles_of_parts):
print(" Other parts:")
while part_index < len(titles_of_parts):
print(f" - {titles_of_parts[part_index]}")
part_index += 1
Cada HeadingPair fornece um nome de grupo e o número de itens nesse grupo. DocumentProperties.titles_of_parts é uma coleção plana e ordenada, portanto consuma o número de títulos consecutivos especificado por cada par de cabeçalho.
Metadados armazenados e limitações de formato
As propriedades de inventário retornadas por PresentationInfo.read_document_properties refletem os metadados disponíveis no documento fonte. Aspose.Slides não carrega e percorre o modelo de objeto da apresentação para recalcular esses valores para esta chamada. Propriedades ausentes são representadas por valores padrão, e os valores armazenados podem estar desatualizados se a aplicação que salvou o arquivo pela última vez não atualizou suas propriedades de documento.
- PPTX: O formato fornece propriedades de documento estendidas para contagens de slide, nota, slide oculto, parágrafo, palavra e multimídia, bem como pares de cabeçalho e títulos de partes. A disponibilidade depende de quais propriedades foram gravadas pelo produtor do documento.
- PPT: O formato binário pode armazenar propriedades de resumo de documento correspondentes. Se uma propriedade estiver ausente ou não for atualizada pelo produtor do documento, Aspose.Slides retornará seu valor armazenado ou padrão em vez de calculá‑lo a partir dos slides.
- ODP: Os metadados OpenDocument fornecem estatísticas gerais do documento, como contagens de página, parágrafo e palavra, mas esses valores não mapeiam para todas as propriedades estendidas específicas do PowerPoint. Metadados de slide oculto, slide de notas, multimídia, pares de cabeçalho e títulos de partes podem estar indisponíveis, e as propriedades de inventário podem retornar valores padrão. Não trate um valor zero ou uma coleção vazia como prova autoritária de que o conteúdo correspondente está ausente.
Use a abordagem de metadados leves para inventários e verificações preliminares. Carregue a apresentação e inspecione seu modelo de objeto em tempo real quando o resultado precisar refletir alterações em memória ou quando for necessário verificar o conteúdo real da apresentação.
Atualizar propriedades da apresentação
As propriedades retornadas por PresentationInfo.read_document_properties também podem ser alteradas sem criar uma instância de Presentation. Aplique as alterações com PresentationInfo.update_document_properties e, em seguida, grave a apresentação vinculada com PresentationInfo.write_binded_presentation.
A imagem a seguir mostra as propriedades do documento original.

O exemplo a seguir altera o título e a hora da última gravação e grava o resultado em um novo arquivo:
import datetime
import aspose.slides as slides
source_file = "sample.pptx"
output_file = "sample_with_updated_properties.pptx"
presentation_info = slides.PresentationFactory.instance.get_presentation_info(source_file)
document_properties = presentation_info.read_document_properties()
document_properties.title = "Quarterly sales report"
document_properties.last_saved_time = datetime.datetime.now(datetime.timezone.utc)
presentation_info.update_document_properties(document_properties)
with open(output_file, "wb") as output_stream:
presentation_info.write_binded_presentation(output_stream)
A imagem a seguir mostra as propriedades do documento alteradas.

Links úteis
Para verificações de segurança relacionadas e configurações de proteção, veja os artigos a seguir:
FAQ
Como posso verificar se as fontes estão incorporadas e quais são?
Carregue a apresentação e use Presentation.fonts_manager. Chame FontsManager.get_embedded_fonts para obter as fontes incorporadas e FontsManager.get_fonts para obter as fontes usadas pela apresentação. Compare os dois resultados para encontrar fontes que são necessárias para renderização mas não estão incorporadas.
Como posso rapidamente saber se o arquivo tem slides ocultos e quantos?
Quando os metadados do documento armazenados são suficientes, leia DocumentProperties.hidden_slides por meio de PresentationFactory.get_presentation_info e PresentationInfo.read_document_properties. Isso é adequado para um inventário leve. Se a apresentação foi modificada em memória, os metadados armazenados podem estar ausentes ou desatualizados, ou se precisar verificar valores em tempo real, itere por Presentation.slides e inspecione a propriedade Slide.hidden de cada slide.
Posso detectar se um tamanho e orientação de slide personalizados são usados e se eles diferem dos padrões?
Sim. Carregue a apresentação e leia Presentation.slide_size. Inspecione SlideSize.type, SlideSize.size e SlideSize.orientation para comparar as configurações atuais com o preset e as dimensões esperadas.
Existe uma maneira rápida de ver se os gráficos referenciam fontes de dados externas?
Sim. Localize cada Chart e inspecione ChartData.data_source_type. Para uma pasta de trabalho externa, leia ChartData.external_workbook_path. O tipo de fonte de dados e o caminho identificam uma referência externa, mas verificar se o destino está disponível requer uma verificação de recurso separada.
Como posso avaliar slides “pesados” que podem desacelerar a renderização ou exportação em PDF?
Não existe uma única propriedade de complexidade. Percorra Presentation.slides e a coleção BaseSlide.shapes de cada slide. Use contagens de formas e a presença de imagens grandes, efeitos, animações ou multimídia como sinais de triagem e meça uma renderização ou exportação representativa antes de considerar um slide como um gargalo de desempenho confirmado.