Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Crea presentaciones Power Point desde Java

Crea presentaciones Power Point desde Java

Por jc mouse martes, mayo 15, 2018

Apache POI es la API de Java para el trabajo con archivos de Microsoft como son Word, Excel y Power Point.

Apache POI se encuentra en la versión 3.17 compatible con Java 6. El próximo lanzamiento sera la 4.0.0 y requerirá Java 8 o superior.

Apache POI puede utilizarse descargando su librería desde este enlace (29 MB binarios y 92 MB las fuentes) o usarse Maven para integrarlo al proyecto de la siguiente forma:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>

A continuación un sencillo ejemplo pata la creación de un documento Power Point con un slide, texto, imágenes y tabla:

import java.awt.Rectangle;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.awt.Color;
import java.awt.Dimension;
import java.io.File;
import java.io.IOException;
import org.apache.poi.sl.usermodel.TextParagraph;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFTextBox;
import org.apache.poi.xslf.usermodel.XSLFTextParagraph;
import org.apache.poi.xslf.usermodel.XSLFTextRun;
import org.apache.poi.sl.usermodel.PictureData;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xslf.usermodel.XSLFHyperlink;
import org.apache.poi.xslf.usermodel.XSLFPictureData;
import org.apache.poi.xslf.usermodel.XSLFPictureShape;
import org.apache.poi.xslf.usermodel.XSLFTable;
import org.apache.poi.xslf.usermodel.XSLFTableCell;
import org.apache.poi.xslf.usermodel.XSLFTableRow;
/**
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public class Main {
    
    public static void main(String[] args) {       
        
        final String presentacion_ppt="Mi_presentacion_007";
        final int ANCHO = 1280;
        final int ALTO = 720;
        
        try {
            /**
             * Crea nueva presentacion
             */            
            XMLSlideShow ppt = new XMLSlideShow();
            ppt.setPageSize(new Dimension(ANCHO,ALTO));
            
            /**
             * Crea un slide
             */
            XSLFSlide slide1 = ppt.createSlide();
            
            /**
             * Imagen de fondo
             */
            XSLFPictureData psssssd = ppt.addPicture(new File("e:\\DIRECCION DE TU IMAGEN\\fondoppt.jpg"), PictureData.PictureType.JPEG);
            XSLFPictureShape pictssure = slide1.createPicture(psssssd);
            pictssure.setAnchor(new Rectangle(0, 0, ANCHO, ALTO));                        
            
            /**
             * Texto "El Titulo de la presentación"
             */
            XSLFTextBox textBox = slide1.createTextBox();
            textBox.clearText();            
            //posicion y dimensiones
            textBox.setAnchor(new Rectangle(240, 560, 1000, 70));
            //color de fondo
            textBox.setFillColor(new Color(105,124,138));
            //parrafo
            XSLFTextParagraph parrafo = textBox.addNewTextParagraph();
            //alineación del texto
            parrafo.setFontAlign(TextParagraph.FontAlign.CENTER);
            parrafo.setTextAlign(TextParagraph.TextAlign.CENTER);
            //texto individual
            XSLFTextRun texto = parrafo.addNewTextRun();            
            texto.setText("COMPUTACION EN LA NUBE");
            //estilos
            texto.setUnderlined(true);
            texto.setBold(true);
            texto.setFontColor(Color.WHITE);            
            texto.setFontSize(48.);            

            /**
             * Texto con Link
             */
            XSLFTextBox textbox2 = slide1.createTextBox();
            textbox2.clearText();      
            textbox2.setAnchor(new Rectangle(440, 630, 480, 40));     
            XSLFTextParagraph parrafo2 = textbox2.addNewTextParagraph();
            XSLFTextRun texto1 = parrafo2.addNewTextRun();            
            texto1.setText("Para más información visite ");
            texto1.setFontSize(30.);        
            XSLFTextRun texto2 = parrafo2.addNewTextRun();            
            XSLFHyperlink link = texto2.createHyperlink();                 
            link.setAddress("https://www.jc-mouse.net/");
            texto2.setText("JC Mouse");
            texto2.setBold(true);
            texto2.setFontSize(30.);        
            
            
            /**
             * Imagen 
             */
            byte[] pictureData = IOUtils.toByteArray(new FileInputStream("e:\\DIRECCION DE TU IMAGEN\\cloud.png"));
            XSLFPictureData pd = ppt.addPicture(pictureData, PictureData.PictureType.PNG);
            XSLFPictureShape picture = slide1.createPicture(pd);
            picture.setAnchor(new Rectangle(50, 250, 300, 300));                        

            /**
             * Tabla
             */
            XSLFTable tabla = slide1.createTable();
            tabla.setAnchor(new Rectangle(600, 100, 460, 320));
            XSLFTextParagraph p = textBox.addNewTextParagraph();
            //encabezado
            int columnas = 3;
            XSLFTableRow fila_encabezado = tabla.addRow();
            fila_encabezado.setHeight(40);
            for (int i = 1; i <= columnas; i++) {
                XSLFTableCell celda_encabezado = fila_encabezado.addCell();
                celda_encabezado.setFillColor(new Color(0,0,0));
                XSLFTextParagraph tp = celda_encabezado.addNewTextParagraph();                
                XSLFTextRun tr = tp.addNewTextRun();
                tr.setText("Encabezado " + i);
                tr.setFontColor(new Color(255,255,255));
                tr.setBold(true);
                tabla.setColumnWidth(i-1, 200);
            }
            //contenido
            int filas = 6;
            for (int fila = 1; fila <= filas; fila++) {
                XSLFTableRow tr = tabla.addRow();
                tr.setHeight(50);
                for (int columna = 0; columna < columnas; columna++) {
                    XSLFTableCell celda_contenido = tr.addCell();
                    celda_contenido.setFillColor((fila%2==0)?new Color(202,233,242):new Color(235,233,245));
                    XSLFTextParagraph tp = celda_contenido.addNewTextParagraph();
                    XSLFTextRun trc = tp.addNewTextRun();
                    trc.setText("Celda [" + fila + "," + (columna+1)+"]" );
                }
            }
            
            /**
             * Guardando archivo PPT
             */            
            File file = new File("E:\\DIRECCION PARA GUARDAR ARCHIVO PPTX\\"+presentacion_ppt+".pptx");
            FileOutputStream out = new FileOutputStream(file);            
            ppt.write(out);
            System.out.println("Archivo PPT creado");
            out.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }

    }
    
}

Y tenemos:

slide java ppt

El código fuente completo más los recursos utilizados en este ejemplo los puedes descargar desde este <enlace pobre> (Actualizado 04/01/2026)

enjoy!!!

Tags

Artículos similares

Tradukisto: Conversión de dinero en palabras

Tradukisto es una biblioteca para Java 8 creada para convertir números enteros o cantidades de dinero a sus equivalentes[...]

Crear un Exe para programas Java con JavaExe

En este videotutorial veremos la forma de crear un ejecutable para programas hechos en lenguaje Java con el software Jav[...]

Formulario de autenticación circular

En este tutorial crearemos un formulario de logueo de forma circular usando el lenguaje java y el IDE de Netbeans. Neces[...]

Guardar y Leer imagenes en PostgresSQL

En este tutorial veremos una forma para registrar archivos JPG en una base de datos PostgreSQL y recuperarlos para utili[...]

JSON Web Token para Java y Android

Un JSON Web Token es un estandar abierto para la creación de Token de Acceso el cual permite firmar digitalmente informa[...]

Crea tu lector de códigos QR

En este post desarrollaremos una aplicación que nos permitirá leer un código QR y capturar la información que contiene y[...]