Cómo crear presentaciones en Java
Aspose.Slides FOSS for Java le permite crear presentaciones de PowerPoint completamente en Java sin depender de Microsoft Office. Esta guía muestra cómo crear una nueva presentación, agregar diapositivas y formas, dar formato al texto y guardar el resultado.
Guía paso a paso
Paso 1: Añadir la dependencia Maven
Agrega Aspose.Slides FOSS a tu pom.xml. Se requiere Java 21 o posterior.
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Verifique la instalación:
import org.aspose.slides.foss.Presentation;
Presentation prs = new Presentation();
prs.dispose();
System.out.println("Aspose.Slides FOSS ready");Paso 2: Importar las clases requeridas
Importa la clase Presentation y el enum SaveFormat necesarios para guardar.
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 las constantes de tipo de forma se encuentran en org.aspose.slides.foss.ShapeType. Los enums de formato (FillType, NullableBool) también están en org.aspose.slides.foss.
Paso 3: Crear una presentación
Utilice new Presentation() y envuélvalo en try-with-resources. Una nueva presentación comienza con una diapositiva en blanco.
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: Siempre use try-with-resources o llame a prs.dispose() en un bloque finally. De lo contrario, los recursos no se liberarán correctamente.
Paso 4: Acceder a una diapositiva
La primera diapositiva está en el índice 0. Una presentación en blanco tiene exactamente una diapositiva.
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);
}Paso 5: Añadir una forma
Use slide.getShapes().addAutoShape() para agregar un AutoShape. Los parámetros son (shapeType, x, y, width, height) todos en puntos (1 punto = 1/72 de pulgada; la diapositiva estándar es 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);
}Paso 6: Guardar la presentación
Llame prs.save(path, SaveFormat.PPTX) antes de que el bloque try finalice. PPTX es el único formato de salida compatible.
prs.save("result.pptx", SaveFormat.PPTX);El archivo se escribe de forma atómica; si ocurre un error antes de esta llamada, no se crea el archivo de salida.
Ejemplo completo de trabajo
El siguiente programa crea una presentación de dos diapositivas con una forma de título en la primera diapositiva y una tabla en la segunda.
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 comunes y soluciones
IllegalStateException: Presentation already disposed
Estás llamando a métodos en un objeto Presentation después de que el bloque try‑with‑resources haya finalizado. Siempre mantén todo el trabajo dentro del bloque try.
UnsupportedOperationException al guardar
Esto ocurre al intentar un formato de guardado distinto de PPTX, o al usar una función no compatible (como gráficos o animaciones).
La forma aparece fuera del área visible de la diapositiva
Las diapositivas son 720 × 540 puntos por defecto. Mantener x + width <= 720 y y + height <= 540.
Preguntas frecuentes
¿Cuál es el tamaño de diapositiva predeterminado?
Un nuevo Presentation() crea diapositivas con el tamaño estándar de 10 × 7,5 pulgadas (720 × 540 puntos). Cambiar el tamaño de la diapositiva aún no es compatible en esta edición.
¿Puedo añadir más de una diapositiva?
Sí. Llame a prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)) para añadir una diapositiva en blanco y acceder a ella por índice:
prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
ISlide slide2 = prs.getSlides().get(1);¿Puedo abrir un archivo existente y añadir diapositivas?
Sí:
try (Presentation prs = new Presentation("existing.pptx")) {
prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
prs.save("existing.pptx", SaveFormat.PPTX);
}¿Qué formatos puedo guardar?
Solo SaveFormat.PPTX es compatible. La exportación a PDF, HTML, SVG o imágenes no está disponible en esta edición.