Clonar Slides de Apresentação em .NET

Introdução

Clonar é o processo de fazer uma cópia exata ou réplica de algo. Aspose.Slides também permite copiar (clonar) qualquer slide e, em seguida, inserir o slide clonado na apresentação atual ou em qualquer outra apresentação aberta. A clonagem de slide cria um novo slide que os desenvolvedores podem modificar sem afetar o slide original. Existem várias maneiras de clonar um slide:

  • Clonar no final de uma apresentação.
  • Clonar em outra posição dentro de uma apresentação.
  • Clonar no final de outra apresentação.
  • Clonar em outra posição em outra apresentação.
  • Clonar em uma posição específica em outra apresentação.

No Aspose.Slides para .NET, a coleção de slides (uma coleção de ISlide objetos) exposta pelo objeto Presentation fornece os métodos AddClone e InsertClone para executar as operações de clonagem de slide descritas acima.

Clonar um Slide no Final de uma Apresentação

Se você quiser clonar um slide e, em seguida, usá‑lo dentro do mesmo arquivo de apresentação ao final dos slides existentes, use o método AddClone conforme os passos listados abaixo:

  1. Crie uma instância da classe Presentation.
  2. Instancie a classe ISlideCollection referenciando a coleção Slides exposta pelo objeto Presentation.
  3. Chame o método AddClone exposto pelo objeto ISlideCollection e passe o slide a ser clonado como parâmetro para o método AddClone.
  4. Grave o arquivo de apresentação modificado.

No exemplo abaixo, clonamos um slide (situado na primeira posição – índice zero – da apresentação) para o final da apresentação.

 // Instanciar a classe Presentation que representa um arquivo de apresentação
 using (Presentation pres = new Presentation("CloneWithinSamePresentationToEnd.pptx"))
 {
 
     // Clonar o slide desejado para o final da coleção de slides na mesma apresentação
     ISlideCollection slds = pres.Slides;
 
     slds.AddClone(pres.Slides[0]);
 
     // Gravar a apresentação modificada no disco
     pres.Save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", SaveFormat.Pptx);
 
 }

Clonar um Slide para Outra Posição dentro de uma Apresentação

Se você quiser clonar um slide e, em seguida, usá‑lo dentro do mesmo arquivo de apresentação, mas em uma posição diferente, use o método InsertClone:

  1. Crie uma instância da classe Presentation.
  2. Instancie a classe referenciando a coleção Slides exposta pelo objeto Presentation.
  3. Chame o método InsertClone exposto pelo objeto ISlideCollection e passe o slide a ser clonado juntamente com o índice para a nova posição como parâmetro para o método InsertClone.
  4. Grave a apresentação modificada como um arquivo PPTX.

No exemplo abaixo, clonamos um slide (situado no índice zero – posição 1 – da apresentação) para o índice 1 – Posição 2 – da apresentação.

 // Instanciar a classe Presentation que representa um arquivo de apresentação
 using (Presentation pres = new Presentation("CloneWithInSamePresentation.pptx"))
 {
 
     // Clonar o slide desejado para o final da coleção de slides na mesma apresentação
     ISlideCollection slds = pres.Slides;
 
     // Clonar o slide desejado para o índice especificado na mesma apresentação
     slds.InsertClone(2, pres.Slides[1]);
 
     // Gravar a apresentação modificada no disco
     pres.Save("Aspose_CloneWithInSamePresentation_out.pptx", SaveFormat.Pptx);
 
 }

Clonar um Slide no Final de outra Apresentação

Se precisar clonar um slide de uma apresentação e usá‑lo em outra apresentação, ao final dos slides existentes:

  1. Crie uma instância da classe Presentation contendo a apresentação da qual o slide será clonado.
  2. Crie uma instância da classe Presentation contendo a apresentação de destino à qual o slide será adicionado.
  3. Instancie a classe ISlideCollection referenciando a coleção Slides exposta pelo objeto Presentation da apresentação de destino.
  4. Chame o método AddClone exposto pelo objeto ISlideCollection e passe o slide da apresentação de origem como parâmetro para o método AddClone.
  5. Grave o arquivo da apresentação de destino modificado.

No exemplo abaixo, clonamos um slide (do primeiro índice da apresentação de origem) para o final da apresentação de destino.

 // Instanciar a classe Presentation para carregar o arquivo de apresentação de origem
 using (Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx"))
 {
     // Instanciar a classe Presentation para o PPTX de destino (onde o slide será clonado)
     using (Presentation destPres = new Presentation())
     {
         // Clonar o slide desejado da apresentação de origem para o final da coleção de slides na apresentação de destino
         ISlideCollection slds = destPres.Slides;

         slds.AddClone(srcPres.Slides[0]);

         // Gravar a apresentação de destino no disco
         destPres.Save("Aspose2_out.pptx", SaveFormat.Pptx);
     }
 }

Clonar um Slide para Outra Posição em outra Apresentação

Se precisar clonar um slide de uma apresentação e usá‑lo em outra apresentação, em uma posição específica:

  1. Crie uma instância da classe Presentation contendo a apresentação de origem da qual o slide será clonado.
  2. Crie uma instância da classe Presentation contendo a apresentação à qual o slide será adicionado.
  3. Instancie a classe ISlideCollection referenciando a coleção Slides exposta pelo objeto Presentation da apresentação de destino.
  4. Chame o método InsertClone exposto pelo objeto ISlideCollection e passe o slide da apresentação de origem juntamente com a posição desejada como parâmetro para o método InsertClone.
  5. Grave o arquivo da apresentação de destino modificado.

No exemplo abaixo, clonamos um slide (do índice zero da apresentação de origem) para o índice 1 (posição 2) da apresentação de destino.

 // Instanciar a classe Presentation para carregar o arquivo de apresentação de origem
 using (Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx"))
 {
     // Instanciar a classe Presentation para o PPTX de destino (onde o slide será clonado)
     using (Presentation destPres = new Presentation())
     {
         ISlideCollection slds = destPres.Slides;

         slds.InsertClone(2, srcPres.Slides[0]);

         // Gravar a apresentação de destino no disco
         destPres.Save("Aspose2_out.pptx", SaveFormat.Pptx);
     }
 }

Clonar um Slide em uma Posição Específica em outra Apresentação

Se precisar clonar um slide com um slide mestre de uma apresentação e usá‑lo em outra apresentação, primeiro clone o slide mestre desejado da apresentação de origem para a de destino. Em seguida, use esse slide mestre para clonar o slide com mestre. O método AddClone(ISlide, IMasterSlide) espera um slide mestre da apresentação de destino, não da de origem. Para clonar o slide com mestre, siga os passos abaixo:

  1. Crie uma instância da classe Presentation contendo a apresentação de origem da qual o slide será clonado.
  2. Crie uma instância da classe Presentation contendo a apresentação de destino para a qual o slide será clonado.
  3. Acesse o slide a ser clonado juntamente com o slide mestre.
  4. Instancie a classe IMasterSlideCollection referenciando a coleção Masters exposta pelo objeto Presentation da apresentação de destino.
  5. Chame o método AddClone exposto pelo objeto IMasterSlideCollection e passe o mestre da apresentação PPTX de origem a ser clonado como parâmetro para o método AddClone.
  6. Instancie a classe ISlideCollection definindo a referência à coleção Slides exposta pelo objeto Presentation da apresentação de destino.
  7. Chame o método AddClone exposto pelo objeto ISlideCollection e passe o slide da apresentação de origem a ser clonado e o slide mestre como parâmetros para o método AddClone.
  8. Grave o arquivo da apresentação de destino modificado.

No exemplo abaixo, clonamos um slide com mestre (situado no índice zero da apresentação de origem) para o final da apresentação de destino usando um mestre da apresentação de origem.

 // Instanciar a classe Presentation para carregar o arquivo de apresentação de origem

 using (Presentation srcPres = new Presentation("CloneToAnotherPresentationWithMaster.pptx"))
 {
     // Instanciar a classe Presentation para a apresentação de destino (onde o slide será clonado)
     using (Presentation destPres = new Presentation())
     {

         // Instanciar ISlide a partir da coleção de slides na apresentação de origem juntamente com
         // o slide mestre
         ISlide SourceSlide = srcPres.Slides[0];
         IMasterSlide SourceMaster = SourceSlide.LayoutSlide.MasterSlide;

         // Clonar o slide mestre desejado da apresentação de origem para a coleção de mestres na
         // apresentação de destino
         IMasterSlideCollection masters = destPres.Masters;
         IMasterSlide DestMaster = SourceSlide.LayoutSlide.MasterSlide;

         // Clonar o slide mestre desejado da apresentação de origem para a coleção de mestres na
         // apresentação de destino
         IMasterSlide iSlide = masters.AddClone(SourceMaster);

         // Clonar o slide desejado da apresentação de origem com o mestre desejado para o final da
         // coleção de slides na apresentação de destino
         ISlideCollection slds = destPres.Slides;
         slds.AddClone(SourceSlide, iSlide, true);
       
         // Clonar o slide mestre desejado da apresentação de origem para a coleção de mestres na apresentação de destino
         // Gravar a apresentação de destino no disco
         destPres.Save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat.Pptx);

     }
 }

Clonar um Slide no Final de uma Seção Especificada

Com Aspose.Slides para .NET, você pode clonar um slide de uma seção de uma apresentação e inserir esse slide em outra seção da mesma apresentação. Nesse caso, use o método AddClone da interface ISlideCollection.

Este código C# mostra como clonar um slide e inserir o slide clonado em uma seção especificada:

using (Presentation pres = new Presentation())
{
    ISlide slide = pres.Slides.AddEmptySlide(pres.Slides[0].LayoutSlide);
    slide.Shapes.AddAutoShape(ShapeType.Ellipse, 150, 150, 100, 100); // para clonar
    
    ISlide slide2 = pres.Slides.AddEmptySlide(pres.Slides[0].LayoutSlide);
    ISection section = pres.Sections.AddSection("Section2", slide2);

    pres.Slides.AddClone(slide, section);
    
    pres.Save("pres.pptx", SaveFormat.Pptx);
}

FAQ

As notas do orador e os comentários de revisão são clonados?

Sim. A página de notas e os comentários de revisão são incluídos na clonagem. Se não quiser mantê‑los, remova‑os após a inserção.

Como gráficos e suas fontes de dados são tratados?

O objeto de gráfico, a formatação e os dados incorporados são copiados. Se o gráfico estava vinculado a uma fonte externa (por exemplo, uma planilha incorporada via OLE), esse vínculo é mantido como um objeto OLE. Após mover entre arquivos, verifique a disponibilidade dos dados e o comportamento de atualização.

Posso controlar a posição de inserção e as seções para a clonagem?

Sim. Você pode inserir a clonagem em um índice de slide específico e colocá‑la em uma seção escolhida. Se a seção de destino não existir, crie‑a primeiro e então mova o slide para ela.