Acessar slides de apresentação em C++
Visão geral
Este artigo explica como acessar e gerenciar slides em uma apresentação usando Aspose.Slides. Ele mostra como recuperar slides pelo seu índice baseado em zero a partir da coleção de slides e como acessar um slide pelo seu ID exclusivo usando o método GetSlideById.
Você também aprenderá como alterar a posição de um slide usando o método set_SlideNumber e como definir o número do slide inicial de uma apresentação com o método set_FirstSlideNumber. Os exemplos demonstram o carregamento de uma apresentação, a obtenção de referências de slides, a atualização da ordem ou numeração dos slides e a gravação da apresentação modificada.
Acessar um slide por índice
Todos os slides em uma apresentação são organizados numericamente com base na posição do slide, começando em 0. O primeiro slide é acessível através do índice 0; o segundo slide é acessado através do índice 1; etc.
A classe Presentation, que representa um arquivo de apresentação, expõe todos os slides como uma coleção ISlideCollection (coleção de objetos ISlide). Este código C++ mostra como acessar um slide pelo seu índice:
// O caminho para o diretório de documentos.
const String templatePath = u"../templates/AddSlides.pptx";
// Instancia a classe Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Obtém a referência de um slide através do seu índice
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
Acessar um slide por ID
Cada slide em uma apresentação tem um ID exclusivo associado a ele. Você pode usar o método GetSlideById() (exposto pela classe Presentation) para direcionar esse ID. Este código C++ mostra como fornecer um ID de slide válido e acessar esse slide através do método GetSlideById():
// O caminho para o diretório de documentos.
const String templatePath = u"../templates/AddSlides.pptx";
// Instancia a classe Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Obtém o ID de um slide
int id = pres->get_Slides()->idx_get(0)->get_SlideId();
// Acessa o slide através do seu ID
SharedPtr<IBaseSlide> slide = pres->GetSlideById(id);
Alterar a posição do slide
Aspose.Slides permite que você altere a posição de um slide. Por exemplo, você pode especificar que o primeiro slide passe a ser o segundo slide.
- Crie uma instância da classe Presentation.
- Obtenha a referência do slide (cuja posição você deseja mudar) através do seu índice.
- Defina uma nova posição para o slide através da propriedade set_SlideNumber().
- Salve a apresentação modificada.
Este código C++ demonstra uma operação em que o slide na posição 1 é movido para a posição 2:
// O caminho para o diretório de documentos.
const String templatePath = u"../templates/AddSlides.pptx";
const String outPath = u"../out/ChangeSlidePosition.pptx";
// Instancia a classe Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Obtém o slide cuja posição será alterada
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Define a nova posição para o slide
slide->set_SlideNumber(2);
// Salva a apresentação modificada
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
O primeiro slide tornou‑se o segundo; o segundo slide tornou‑se o primeiro. Quando você muda a posição de um slide, os demais slides são ajustados automaticamente.
Definir o número do slide
Usando a propriedade set_FirstSlideNumber() (exposta pela classe Presentation), você pode especificar um novo número para o primeiro slide de uma apresentação. Essa operação faz com que os demais números de slide sejam recalculados.
- Crie uma instância da classe Presentation.
- Obtenha o número do slide.
- Defina o número do slide.
- Salve a apresentação modificada.
Este código C++ demonstra uma operação onde o número do primeiro slide é definido como 10:
// O caminho para o diretório de documentos.
const String outPath = u"../out/SetSlideNumber_out.pptx";
const String templatePath = u"../templates/AccessSlides.pptx";
//Instancia a classe Presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Obtém o número do slide
int firstSlideNumber = pres->get_FirstSlideNumber();
// Define o número do slide
pres->set_FirstSlideNumber(2);
// Salva a apresentação modificada
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
Se preferir pular o primeiro slide, você pode iniciar a numeração a partir do segundo slide (e ocultar a numeração do primeiro slide) da seguinte forma:
auto presentation = System::MakeObject<Presentation>();
auto layoutSlide = presentation->get_LayoutSlides()->GetByType(SlideLayoutType::Blank);
auto slides = presentation->get_Slides();
slides->AddEmptySlide(layoutSlide);
slides->AddEmptySlide(layoutSlide);
slides->AddEmptySlide(layoutSlide);
// Define o número para o primeiro slide da apresentação
presentation->set_FirstSlideNumber(0);
// Exibe os números dos slides para todos os slides
presentation->get_HeaderFooterManager()->SetAllSlideNumbersVisibility(true);
// Oculta o número do slide para o primeiro slide
slides->idx_get(0)->get_HeaderFooterManager()->SetSlideNumberVisibility(false);
// Salva a apresentação modificada
presentation->Save(u"output.pptx", SaveFormat::Pptx);
FAQ
O número do slide que o usuário vê corresponde ao índice baseado em zero da coleção?
O número exibido em um slide pode começar a partir de um valor arbitrário (por exemplo, 10) e não precisa coincidir com o índice; o relacionamento é controlado pela configuração de first slide number da apresentação.
Slides ocultos afetam a indexação?
Sim. Um slide oculto permanece na coleção e é contado na indexação; “oculto” refere‑se à exibição, não à sua posição na coleção.
O índice de um slide muda quando outros slides são adicionados ou removidos?
Sim. Os índices sempre refletem a ordem atual dos slides e são recalculados ao inserir, excluir ou mover slides.