Clonar slides de apresentação em Java

Introdução

Clonagem é o processo de fazer uma cópia exata ou réplica de algo. Aspose.Slides for Java também permite fazer uma cópia ou clone de qualquer slide e, em seguida, inserir esse slide clonado na apresentação atual ou em qualquer outra apresentação aberta. O processo de clonagem de slides cria um novo slide que pode ser modificado pelos desenvolvedores sem alterar o slide original. Existem várias maneiras possíveis de clonar um slide:

  • Clonar ao final dentro de uma apresentação.
  • Clonar em outra posição dentro da apresentação.
  • Clonar ao final em outra apresentação.
  • Clonar em outra posição em outra apresentação.
  • Clonar junto com seu slide mestre em outra apresentação.

No Aspose.Slides for Java, (uma coleção de objetos ISlide ) exposta pelo objeto Presentation fornece os métodos addClone e insertClone para executar os tipos de clonagem de slide acima.

Clonar um slide ao final de uma apresentação

Se você quiser clonar um slide e, em seguida, usá‑lo no 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.

import com.aspose.slides.*;

// Instanciar a classe Presentation que representa um arquivo de apresentação
Presentation pres = new Presentation("CloneWithinSamePresentationToEnd.pptx");
try {
    // Clonar o slide desejado para o final da coleção de slides na mesma apresentação
    ISlideCollection slds = pres.getSlides();

    slds.addClone(pres.getSlides().get_Item(0));

    // Gravar a apresentação modificada no disco
    pres.save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}

Clonar um slide para outra posição dentro de uma apresentação

Se você quiser clonar um slide e, em seguida, usá‑lo no 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 junto 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 1 – posição 2 – da apresentação) para o índice 2 – posição 3 – da apresentação.

import com.aspose.slides.*;

// Instanciar a classe Presentation que representa um arquivo de apresentação
Presentation pres = new Presentation("CloneWithInSamePresentation.pptx");
try {
    // Obter a coleção de slides na apresentação
    ISlideCollection slds = pres.getSlides();

    // Clonar o slide desejado para o índice especificado na mesma apresentação
    slds.insertClone(2, pres.getSlides().get_Item(1));

    // Gravar a apresentação modificada no disco
    pres.save("Aspose_CloneWithInSamePresentation_out.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}

Clonar um slide ao 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 que contém a apresentação da qual o slide será clonado.
  2. Crie uma instância da classe Presentation que contém 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 de 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.

import com.aspose.slides.*;

// Instanciar a classe Presentation para carregar o arquivo de apresentação de origem
Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
    // Instanciar a classe Presentation para o PPTX de destino (onde o slide será clonado)
    Presentation destPres = new Presentation();
    try {
        // 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.getSlides();

        slds.addClone(srcPres.getSlides().get_Item(0));

        // Gravar a apresentação de destino no disco
        destPres.save("Aspose2_out.pptx", SaveFormat.Pptx);
    } finally {
        destPres.dispose();
    }
} finally {
    srcPres.dispose();
}

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 que contém a apresentação de origem da qual o slide será clonado.
  2. Crie uma instância da classe Presentation que contém 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 junto com a posição desejada como parâmetro para o método insertClone.
  5. Grave o arquivo de 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.

import com.aspose.slides.*;

// Instanciar a classe Presentation para carregar o arquivo de apresentação de origem
Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
    // Instanciar a classe Presentation para o PPTX de destino (onde o slide será clonado)
    Presentation destPres = new Presentation();
    try {
        // Clonar o slide desejado da apresentação de origem para o índice especificado na apresentação de destino
        ISlideCollection slds = destPres.getSlides();

        slds.insertClone(1, srcPres.getSlides().get_Item(0));

        // Gravar a apresentação de destino no disco
        destPres.save("Aspose2_out.pptx", SaveFormat.Pptx);
    } finally {
        destPres.dispose();
    }
} finally {
    srcPres.dispose();
}

Clonar um slide com seu slide mestre para outra apresentação

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

  1. Crie uma instância da classe Presentation que contém a apresentação de origem da qual o slide será clonado.
  2. Crie uma instância da classe Presentation que contém 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 do PPTX de origem a ser clonado como parâmetro para o método addClone.
  6. Instancie a classe ISlideCollection configurando a referência para a 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âmetro para o método addClone.
  8. Grave o arquivo de apresentação de destino modificado.

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

import com.aspose.slides.*;

//    // Instanciar a classe Presentation para carregar o arquivo de apresentação de origem
Presentation srcPres = new Presentation("CloneToAnotherPresentationWithMaster.pptx");
try {
    //        // Instanciar a classe Presentation para a apresentação de destino (onde o slide será clonado)
    Presentation destPres = new Presentation();
    try {
        //            // Instanciar ISlide a partir da coleção de slides na apresentação de origem juntamente com
        //            // Slide mestre
        ISlide SourceSlide = srcPres.getSlides().get_Item(0);
        IMasterSlide SourceMaster = SourceSlide.getLayoutSlide().getMasterSlide();

        //            // Clonar o slide mestre desejado da apresentação de origem para a coleção de mestres na
        //            // apresentação de destino
        IMasterSlideCollection masters = destPres.getMasters();
        IMasterSlide DestMaster = 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.getSlides();
        slds.addClone(SourceSlide, DestMaster, true);

        //            // Gravar a apresentação de destino no disco
        destPres.save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat.Pptx);
    } finally {
        destPres.dispose();
    }
} finally {
    srcPres.dispose();
}

Clonar um slide ao final de uma seção especificada

Se você quiser clonar um slide e, em seguida, usá‑lo no mesmo arquivo de apresentação, mas em uma seção diferente, use o método addClone exposto pela interface ISlideCollection. O Aspose.Slides for Java permite clonar um slide da primeira seção e, em seguida, inserir esse slide clonado na segunda seção da mesma apresentação.

O snippet de código a seguir mostra como clonar um slide e inserir o slide clonado em uma seção especificada.

import com.aspose.slides.*;

IPresentation presentation = new Presentation();
try {
    presentation.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 200, 50, 300, 100);
    presentation.getSections().addSection("Section 1", presentation.getSlides().get_Item(0));

    ISection section2 = presentation.getSections().appendEmptySection("Section 2");
    presentation.getSlides().addClone(presentation.getSlides().get_Item(0), section2);

    // Salvar a apresentação de destino no disco
    presentation.save("CloneSlideIntoSpecifiedSection.pptx", SaveFormat.Pptx);
} finally {
    if (presentation != null) presentation.dispose();
}

Garantir correspondência do tamanho do slide

Ao clonar slides para outra apresentação, certifique‑se de que a apresentação de destino tenha o mesmo tamanho de slide da origem. Se os tamanhos dos slides forem diferentes, o Aspose.Slides não redimensiona automaticamente as formas clonadas — suas coordenadas e dimensões originais são preservadas, o que pode fazer com que o conteúdo apareça desalinhado ou se estenda além dos limites do slide.

Você pode definir o tamanho do slide da apresentação de destino para coincidir com o da origem antes de clonar o mestre e o slide:

Dimension2D sourceSize = sourcePresentation.getSlideSize().getSize();

targetPresentation.getSlideSize().setSize(
        sourceSize.getWidth(), sourceSize.getHeight(), SlideSizeScaleType.DoNotScale);

Faça isso antes de clonar o mestre e o slide.

FAQ

As notas do apresentador e os comentários dos revisores são clonados?

Sim. A página de notas e os comentários de revisão são incluídos no clone. Se você não quiser, remova-os após a inserção.

Como os 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 estiver vinculado a uma fonte externa (por exemplo, uma pasta de trabalho incorporada via OLE), esse vínculo é preservado como um objeto OLE. Após a movimentação 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 o clone?

Sim. Você pode inserir o clone em um índice de slide específico e colocá‑lo 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.