Aplicar ou Alterar Layouts de Slides em Python via Java
Visão geral
Um layout de slide define as posições e formatação de marcadores de posição como títulos, texto, imagens, gráficos e tabelas. Aplicar um layout dá aos slides uma estrutura consistente, permitindo que cada slide contenha seu próprio conteúdo.
Os layouts mais comuns incluem:
- Slide de Título: Contém marcadores de posição de título e subtítulo.
- Título e Conteúdo: Contém um marcador de posição de título e um marcador de posição de conteúdo de uso geral.
- Em branco: Não contém marcadores de posição de conteúdo e é útil quando cada forma será posicionada manualmente.
Entender a Herança de Layouts
Uma apresentação tem três níveis relacionados:
- A slide mestre define o tema, formatação compartilhada, planos de fundo e objetos comuns.
- A slide de layout pertence a um mestre e define um arranjo particular de marcadores de posição.
- A slide normal usa um layout e armazena o conteúdo inserido para esse slide.
Um slide normal herda o tema e a formatação do seu layout, e o layout herda do seu mestre. Um valor definido diretamente em um slide normal substitui o valor herdado naquele nível. Quando um slide normal é criado, suas formas de marcador de posição são geradas a partir do layout selecionado, enquanto o conteúdo inserido nesses marcadores pertence ao slide normal.
Adicione os marcadores de posição necessários a um layout antes de criar slides a partir dele. Adicionar outro marcador de posição a um layout posteriormente não adiciona automaticamente uma forma de marcador correspondente aos slides normais existentes.
Esse relacionamento tem duas consequências importantes:
- Alterar a formatação herdada ou a geometria de marcadores de posição existentes em um layout pode atualizar todos os slides que dependem dele. Antes de editar um layout já em uso, inspecione seus slides dependentes e revise a apresentação resultante.
- Um layout que ainda é usado por um slide não pode ser removido. Reatribua seus slides dependentes a outro layout primeiro, ou remova apenas layouts não utilizados.
Para mais informações sobre o nível superior desta hierarquia, veja Mestre de Slide.
Selecionar e Aplicar um Layout de Slide
Use um tipo de layout quando a apresentação segue definições padrão de layout do PowerPoint. Os nomes dos layouts são editáveis pelo usuário e podem ser localizados, portanto a seleção baseada em nome é menos confiável a menos que você controle o modelo de origem.
O exemplo a seguir procura por Título e Conteúdo no primeiro mestre. Se esse layout não estiver disponível, ele recorre deliberadamente a Em branco. A segunda verificação por None é necessária porque uma apresentação pode conter apenas layouts personalizados. O layout selecionado é então aplicado ao primeiro slide normal através do método Slide.setLayoutSlide.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation("input.pptx")
try:
layout_slides = presentation.getMasters().get_Item(0).getLayoutSlides()
target_layout = layout_slides.getByType(SlideLayoutType.TitleAndObject)
if target_layout is None:
target_layout = layout_slides.getByType(SlideLayoutType.Blank)
if target_layout is None:
print("The first master does not contain a suitable layout slide.")
else:
presentation.getSlides().get_Item(0).setLayoutSlide(target_layout)
presentation.save("output-with-new-layout.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Alterar o layout de um slide não remove formas comuns adicionadas diretamente ao slide. Entretanto, as posições dos marcadores de posição, a formatação herdada e a correspondência entre os marcadores existentes e o novo layout podem mudar, portanto inspeccione a saída ao alternar entre layouts substancialmente diferentes.
Adicionar um Slide de Layout
Seleção e criação são operações separadas. O exemplo anterior seleciona um layout existente; não o cria. Para criar um layout, chame o método MasterLayoutSlideCollection.add na coleção de layouts do mestre de destino.
O exemplo a seguir sempre adiciona um novo layout Título e Conteúdo chamado Report Title and Content, depois adiciona um slide normal baseado nele. Os nomes dos layouts devem ser exclusivos dentro da coleção.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation("input.pptx")
try:
master_slide = presentation.getMasters().get_Item(0)
report_layout = master_slide.getLayoutSlides().add(SlideLayoutType.TitleAndObject, "Report Title and Content")
presentation.getSlides().addEmptySlide(report_layout)
presentation.save("output-with-report-layout.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Adicione um layout somente quando o modelo realmente precisar de outra estrutura reutilizável. Se já existir um layout adequado, selecione‑o e reutilize‑o em vez de criar um duplicado.
Adicionar Marcadores de Posição a um Slide de Layout
O método LayoutSlide.getPlaceholderManager fornece um LayoutPlaceholderManager para adicionar formas de marcador de posição a um layout.
| Marcador de Posição do PowerPoint | Método LayoutPlaceholderManager |
|---|---|
![]() |
addContentPlaceholder |
![]() |
addVerticalContentPlaceholder |
![]() |
addTextPlaceholder |
![]() |
addVerticalTextPlaceholder |
![]() |
addPicturePlaceholder |
![]() |
addChartPlaceholder |
![]() |
addTablePlaceholder |
![]() |
addSmartArtPlaceholder |
![]() |
addMediaPlaceholder |
![]() |
addOnlineImagePlaceholder |
O exemplo a seguir verifica se o layout Em branco existe, adiciona quatro marcadores de posição a ele e, em seguida, cria um slide normal que usa o layout modificado. A ordem é intencional: os marcadores são adicionados antes da criação do slide normal, de modo que Aspose.Slides possa gerar as formas de marcador correspondentes naquele slide.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation()
try:
blank_layout = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank)
if blank_layout is None:
print("The presentation does not contain a Blank layout slide.")
else:
placeholder_manager = blank_layout.getPlaceholderManager()
placeholder_manager.addContentPlaceholder(20, 20, 310, 270)
placeholder_manager.addVerticalTextPlaceholder(350, 20, 350, 270)
placeholder_manager.addChartPlaceholder(20, 310, 310, 180)
placeholder_manager.addTablePlaceholder(350, 310, 350, 180)
presentation.getSlides().addEmptySlide(blank_layout)
presentation.save("output-with-placeholders.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
O resultado:

Aviso
Alterar a formatação herdada ou a geometria de marcadores de posição existentes no layout pode afetar slides dependentes. Um marcador de posição recém‑adicionado ao layout não é retroalimentado nos slides normais existentes. Teste alterações de layout em uma cópia da apresentação e inspecione cada slide dependente.Remover Slides de Layout Não Utilizados
Use o método Compress.removeUnusedLayoutSlides para remover layouts que nenhum slide normal referencia. O método deixa intactos os layouts que ainda estão em uso.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Compress, Presentation, SaveFormat
presentation = Presentation("input.pptx")
try:
Compress.removeUnusedLayoutSlides(presentation)
presentation.save("output-without-unused-layouts.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Para remover um layout específico, primeiro use seu método hasDependingSlides ou getDependingSlides. Reatribua quaisquer slides dependentes antes de chamar LayoutSlide.remove. Tentar remover um layout em uso gera uma PptxEditException.
Controlar a Visibilidade do Rodapé em um Slide de Layout
Um layout tem seus próprios marcadores de rodapé, número de slide e data‑hora. Use o método LayoutSlide.getHeaderFooterManager para controlar esses marcadores em um layout. Isso é útil quando, por exemplo, layouts de conteúdo devem mostrar rodapés, mas layouts de título não devem.
O exemplo a seguir seleciona um layout com segurança e torna seus elementos de rodapé visíveis:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation("input.pptx")
try:
layout_slide = presentation.getLayoutSlides().getByType(SlideLayoutType.TitleAndObject)
if layout_slide is None:
layout_slide = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank)
if layout_slide is None:
print("The presentation does not contain a suitable layout slide.")
else:
header_footer_manager = layout_slide.getHeaderFooterManager()
header_footer_manager.setFooterVisibility(True)
header_footer_manager.setSlideNumberVisibility(True)
header_footer_manager.setDateTimeVisibility(True)
header_footer_manager.setFooterText("Footer text")
header_footer_manager.setDateTimeText("Date and time text")
presentation.save("output-with-layout-footers.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Controlar a Visibilidade do Rodapé em um Mestre e em seus Layouts Filhos
Para aplicar configurações de rodapé consistentes em toda a hierarquia de mestres, use o método MasterSlide.getHeaderFooterManager. Os métodos de propagação de MasterSlideHeaderFooterManager operam no mestre e em seus slides de layout e slides normais dependentes; eles não visam apenas um slide normal.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("input.pptx")
try:
header_footer_manager = presentation.getMasters().get_Item(0).getHeaderFooterManager()
header_footer_manager.setFooterAndChildFootersVisibility(True)
header_footer_manager.setSlideNumberAndChildSlideNumbersVisibility(True)
header_footer_manager.setDateTimeAndChildDateTimesVisibility(True)
header_footer_manager.setFooterAndChildFootersText("Footer text")
header_footer_manager.setDateTimeAndChildDateTimesText("Date and time text")
presentation.save("output-with-master-footers.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Perguntas Frequentes
Qual é a diferença entre um slide mestre e um slide de layout?
Um slide mestre define o tema da apresentação e a formatação compartilhada. Um slide de layout pertence a um mestre e define um arranjo reutilizável de marcadores de posição. Slides normais utilizam esses layouts e armazenam o conteúdo específico de cada slide.
Posso copiar um slide de layout de uma apresentação para outra?
Sim. Adicione uma cópia à coleção de destino com o método addClone. Ao copiar entre apresentações, verifique também fontes, temas, imagens e outros recursos usados pelo layout de origem.
O que acontece quando modifico um layout que já está em uso?
Slides dependentes herdam as alterações do layout, a menos que substituam a formatação ou os objetos afetados localmente. A geometria dos marcadores de posição e o estilo herdado podem, portanto, mudar em muitos slides de uma só vez. Use getDependingSlides para identificar os slides afetados antes de editar o layout.
O que acontece se eu remover um layout que ainda está em uso?
Aspose.Slides lança uma PptxEditException. Reatribua primeiro os slides dependentes ou use removeUnusedLayoutSlides para remover apenas layouts não referenciados.









