Como criar apresentações em Java

Como criar apresentações em Java

Aspose.Slides FOSS for Java permite criar apresentações PowerPoint totalmente em Java sem dependência do Microsoft Office. Este guia mostra como criar uma nova apresentação, adicionar slides e formas, formatar texto e salvar o resultado.

Guia passo a passo

Passo 1: Adicionar a dependência Maven

Adicione Aspose.Slides FOSS ao seu pom.xml. Java 21 ou posterior é necessário.

<dependency>
  <groupId>org.aspose.slides.foss</groupId>
  <artifactId>aspose-slides-foss</artifactId>
  <version>1.0.0</version>
</dependency>

Verifique a instalação:

import org.aspose.slides.foss.Presentation;

Presentation prs = new Presentation();
prs.dispose();
System.out.println("Aspose.Slides FOSS ready");

Etapa 2: Importar as Classes Necessárias

Importe a classe Presentation e o enum SaveFormat necessários para salvar.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;

Todas as constantes de tipo de forma estão em org.aspose.slides.foss.ShapeType. Os enums de formatação (FillType, NullableBool) também estão em org.aspose.slides.foss.


Etapa 3: Criar uma Apresentação

Use new Presentation() e envolva‑o em try‑with‑resources. Uma nova apresentação começa com um slide em branco.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation()) {
    System.out.println("Slides in new presentation: " + prs.getSlides().size());
    prs.save("output.pptx", SaveFormat.PPTX);
}

Importante: Sempre use try-with-resources ou chame prs.dispose() em um bloco finally. Caso contrário, os recursos não serão liberados corretamente.


Etapa 4: Acessar um slide

O primeiro slide está no índice 0. Uma apresentação em branco tem exatamente um slide.

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);  // zero-based index
    System.out.println("Slide at index 0: " + slide);
    prs.save("output.pptx", SaveFormat.PPTX);
}

Etapa 5: Adicionar uma Forma

Use slide.getShapes().addAutoShape() para adicionar um AutoShape. Os parâmetros são (shapeType, x, y, width, height) todos em pontos (1 ponto = 1/72 polegada; o slide padrão tem 720 x 540 pt).

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);

    // Rectangle at (50, 50) with 400 wide and 120 tall
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 400, 120
    );

    // Attach a text frame
    shape.addTextFrame("Hello from Aspose.Slides FOSS!");

    prs.save("with-shape.pptx", SaveFormat.PPTX);
}

Etapa 6: Salvar a Apresentação

Chame prs.save(path, SaveFormat.PPTX) antes que o bloco try seja encerrado. PPTX é o único formato de saída suportado.

prs.save("result.pptx", SaveFormat.PPTX);

O arquivo é escrito atômicamente; se ocorrer um erro antes desta chamada, nenhum arquivo de saída é criado.


Exemplo Funcional Completo

O programa a seguir cria uma apresentação de dois slides com uma forma de título no primeiro slide e uma tabela no segundo.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;

public class CreatePresentation {
    public static void main(String[] args) {
        try (Presentation prs = new Presentation()) {
            // --- Slide 1: title shape ---
            ISlide slide1 = prs.getSlides().get(0);
            IAutoShape title = slide1.getShapes().addAutoShape(
                ShapeType.RECTANGLE, 40, 40, 640, 80
            );
            ITextFrame tf = title.addTextFrame("Q1 Results: Executive Summary");
            IPortionFormat fmt = tf.getParagraphs().get(0)
                .getPortions().get(0).getPortionFormat();
            fmt.setFontHeight(32);
            fmt.setFontBold(NullableBool.TRUE);
            fmt.getFillFormat().setFillType(FillType.SOLID);
            fmt.getFillFormat().getSolidFillColor().setColor(
                Color.fromArgb(255, 0, 70, 127)
            );

            // --- Slide 2: table ---
            prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
            ISlide slide2 = prs.getSlides().get(1);
            ITable table = slide2.getShapes().addTable(
                40, 40,
                new double[]{200.0, 120.0, 120.0},
                new double[]{40.0, 40.0, 40.0}
            );
            String[] headers = {"Region", "Revenue", "Growth"};
            String[][] data = {
                {"North", "$1.2M", "+8%"},
                {"South", "$0.9M", "+4%"},
            };
            for (int col = 0; col < headers.length; col++) {
                table.getRows().get(0).get(col).getTextFrame().setText(headers[col]);
            }
            for (int row = 0; row < data.length; row++) {
                for (int col = 0; col < data[row].length; col++) {
                    table.getRows().get(row + 1).get(col)
                        .getTextFrame().setText(data[row][col]);
                }
            }

            prs.save("q1-results.pptx", SaveFormat.PPTX);
        }
        System.out.println("Saved q1-results.pptx");
    }
}

Problemas Comuns e Soluções

IllegalStateException: Presentation already disposed

Você está chamando métodos em um objeto Presentation após o bloco try-with-resources ter sido encerrado. Sempre mantenha todo o trabalho dentro do bloco try.

UnsupportedOperationException ao salvar

Isso ocorre ao tentar salvar em um formato diferente de PPTX, ou ao usar um recurso não suportado (como gráficos ou animações).

Forma aparece fora da área visível do slide

Os slides têm 720 × 540 pontos por padrão. Mantenha x + width <= 720 e y + height <= 540.


Perguntas Frequentes

Qual é o tamanho padrão do slide?

Um novo Presentation() cria slides no tamanho padrão de 10 x 7,5 polegadas (720 x 540 pontos). Alterar o tamanho do slide ainda não é suportado nesta edição.

Posso adicionar mais de um slide?

Sim. Chame prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)) para acrescentar um slide em branco e acessá‑lo por índice:

prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
ISlide slide2 = prs.getSlides().get(1);

Posso abrir um arquivo existente e adicionar slides?

Sim:

try (Presentation prs = new Presentation("existing.pptx")) {
    prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
    prs.save("existing.pptx", SaveFormat.PPTX);
}

Quais formatos posso salvar?

Apenas SaveFormat.PPTX é suportado. A exportação para PDF, HTML, SVG ou imagens não está disponível nesta edição.


Veja Também

 Português