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.