Apache POI PPT - Guida rapida

Molte volte, è necessaria un'applicazione software per generare report nel formato di file di Microsoft Office. A volte, un'applicazione dovrebbe persino ricevere file di MS-Office come dati di input.

Qualsiasi programmatore Java che desidera produrre file MS Office come output deve utilizzare un'API predefinita e di sola lettura per farlo.

Cos'è Apache POI?

Apache POI è un'API popolare che consente ai programmatori di creare, modificare e visualizzare file MS-Office utilizzando programmi Java. È una libreria open source sviluppata e distribuita da Apache Software Foundation. Contiene classi e metodi per decodificare i dati di input dell'utente o un file in documenti MS Office.

Componenti di Apache POI

Apache POI contiene classi e metodi per lavorare su tutti i documenti OLE2 Compound di MS-Office. Di seguito è riportato l'elenco dei componenti di questa API:

  • POIFS (Poor Obfuscation Implementation File System)- Questo componente è il fattore di base di tutti gli altri elementi POI. Viene utilizzato per leggere diversi file in modo esplicito.

  • HSSF (Horrible SpreadSheet Format) - Viene utilizzato per leggere e scrivere in formato .xls di file MS-Excel.

  • XSSF (XML SpreadSheet Format) - Viene utilizzato per il formato file .xlsx di MS-Excel.

  • HPSF (Horrible Property Set Format) - Viene utilizzato per estrarre i set di proprietà dei file di MS-Office.

  • HWPF (Horrible Word Processor Format) - Serve per leggere e scrivere .doc file di estensione di MS-Word.

  • XWPF (XML Word Processor Format) - Viene utilizzato per leggere e scrivere file con estensione .docx di MS-Word.

  • HSLF (Horrible Slide Layout Format) - Viene utilizzato per leggere, creare e modificare presentazioni di PowerPoint.

  • HDGF (Horrible DiaGram Format) - Contiene classi e metodi per i file binari di MS-Visio.

  • HPBF (Horrible PuBlisher Format) - Viene utilizzato per leggere e scrivere file MS-Publisher.

Questo tutorial ti guida attraverso il processo di lavoro sulla presentazione di Microsoft PowerPoint utilizzando Java. Pertanto la discussione si limita aXSLF component.

Note - Le versioni precedenti di POI supportano formati di file binari come doc, xls, ppt, ecc. Dalla versione 3.5 in poi, POI supporta i formati di file OOXML di MS-Office come docx, xlsx, pptx, ecc.

Questo capitolo ti guida attraverso alcune delle versioni dell'API di Java PowerPoint e delle loro caratteristiche. Esistono molti fornitori che forniscono API correlate a Java PPT; alcuni di loro sono considerati in questo capitolo.

Aspose Slides per Java

Aspose slides for Java è un'API PPT Java con licenza puramente, sviluppata e distribuita dal fornitore Aspose. L'ultima versione di questa API è 8.1.2, rilasciata a luglio 2014. È un'API ricca e pesante (combinazione di classi Java semplici e classi AWT) per la progettazione del componente PPT in grado di leggere, scrivere e gestire diapositive.

Gli usi comuni di questa API sono i seguenti:

  • Crea presentazioni dinamiche
  • Rendering e stampa di presentazioni ad alta fedeltà
  • Genera, modifica, converti e stampa presentazioni

Apache POI

Apache POI è una libreria open source al 100% fornita da Apache Software Foundation. La maggior parte degli sviluppatori di applicazioni di piccola e media scala dipendono fortemente da Apache POI (HSLF + XSLF). Supporta tutte le funzionalità di base delle librerie PPT; tuttavia, il rendering e l'estrazione del testo sono le sue caratteristiche principali. Di seguito è riportata l'architettura di Apache POI per PPT.

Questo capitolo ti guida attraverso il processo di configurazione di Apache POI su sistemi basati su Windows e Linux. Apache POI può essere facilmente installato e integrato con il tuo attuale ambiente Java, seguendo pochi semplici passaggi senza complesse procedure di configurazione. Per l'installazione è necessaria l'amministrazione degli utenti.

Requisiti di sistema

JDK Java SE 2 JDK 1.5 o successivo
Memoria 1 GB di RAM (consigliato)
Spazio sul disco Nessun requisito minimo
Versione del sistema operativo Windows XP o successivo, Linux

Procediamo ora con i passaggi per installare Apache POI.

Passaggio 1: verifica l'installazione di Java

Prima di tutto, devi avere Java Software Development Kit (SDK) installato sul tuo sistema. Per verificarlo, esegui uno dei seguenti due comandi a seconda della piattaforma su cui stai lavorando.

Se l'installazione di Java è stata eseguita correttamente, verranno visualizzate la versione corrente e le specifiche dell'installazione di Java. Un output di esempio è fornito nella tabella seguente.

piattaforma Comando Output di esempio
finestre

Apri la Console di comando e digita -

\>java –version

Versione Java "1.7.0_60"

Java (TM) SE Run Time

Ambiente (build 1.7.0_60-b19)

Server Java Hotspot (TM) a 64 bit

VM (build 24.60-b09, modalità mista)

Linux

Apri il terminale di comando e digita -

$java –version

versione java "1.7.0_25"

Aprire JDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64)

Apri la VM server JDK a 64 bit (build 23.7-b01, modalità mista)

  • Si presume che i lettori di questo tutorial abbiano Java SDK versione 1.7.0_60 installato sul proprio sistema.

  • Se non disponi di Java SDK, scarica la versione corrente da https://www.oracle.com/technetwork/java/javase/downloads/index.html e installalo.

Passaggio 2: imposta l'ambiente Java

Impostare la variabile di ambiente JAVA_HOME in modo che punti alla posizione della directory di base in cui Java è installato sulla macchina. Per esempio,

piattaforma Descrizione
finestre Imposta JAVA_HOME su C: \ ProgramFiles \ java \ jdk1.7.0_60
Linux Esporta JAVA_HOME = / usr / local / java-current

Aggiungi il percorso completo della posizione del compilatore Java al percorso di sistema.

piattaforma Descrizione
finestre Aggiungi la stringa "C: \ Programmi \ Java \ jdk1.7.0_60 \ bin" alla fine della variabile di sistema PATH.
Linux Esporta PATH = $ PATH: $ JAVA_HOME / bin /

Esegui il comando java -version dal prompt dei comandi come spiegato sopra.

Passaggio 3: installa la libreria dei POI di Apache

Scarica l'ultima versione di Apache POI da https://poi.apache.org/download.htmle decomprimere il contenuto in una cartella da cui è possibile collegare le librerie richieste al programma Java. Supponiamo che i file siano raccolti in una cartella sull'unità C.

Le immagini seguenti mostrano le directory e le strutture dei file all'interno della cartella scaricata:

Aggiungi il percorso completo dei cinque jars come evidenziato nell'immagine sopra al CLASSPATH.

piattaforma Descrizione
finestre

Aggiungi le seguenti stringhe alla fine della variabile utente CLASSPATH -

"C: \ poi-3.9 \ poi-3.9-20121203.jar;"

"C: \ poi-3.9 \ poi-ooxml-3.9-20121203.jar;"

"C: \ poi-3.9 \ poi-ooxml-schemas-3.9-20121203.jar;"

"C: \ poi-3.9 \ ooxml-lib \ dom4j-1.6.1.jar;"

"C: \ poi-3.9 \ ooxml-lib \ xmlbeans-2.3.0.jar;.;"

Linux

Esporta CLASSPATH = $ CLASSPATH:

/usr/share/poi-3.9/poi-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-schemas-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-3.9-20121203.tar:

/usr/share/poi-3.9/ooxml-lib/dom4j-1.6.1.tar:

/usr/share/poi-3.9/ooxml-lib/xmlbeans-2.3.0.tar

pom.xml

Di seguito è riportato il file pom.xml per eseguire i programmi in questo tutorial.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>ApachePoiPPT</groupId>
   <artifactId>ApachePoiPPT</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <build>
      <sourceDirectory>src</sourceDirectory>
      <plugins>
         <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
               <source>1.8</source>
               <target>1.8</target>
            </configuration>
         </plugin>
      </plugins>
   </build>
   <dependencies>  
      <dependency>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi</artifactId>
         <version>3.9</version>
      </dependency>
      <dependency>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-ooxml</artifactId>
         <version>3.9</version>
      </dependency>    
   </dependencies>
</project>

In questo capitolo, impareremo alcune classi e metodi nell'API POI di Apache che sono cruciali per lavorare sui file PPT utilizzando programmi Java.

Presentazione

Per creare e gestire una presentazione, hai una classe chiamata XMLSlideShow nel pacchetto org.apache.poi.xslf.usermodel . Di seguito sono riportati alcuni metodi importanti e un costruttore di questa classe.

Class - XMLSlideShow

Package - org.apache.poi.xslf.usermodel

S.No Costruttore e descrizione
1

XMLSlideShow(java.io.InputStream inputStream)

È possibile creare un'istanza di questa classe passandole un oggetto di classe inputstream.

S.No Metodi e descrizione
1

int addPicture (byte[] pictureData, int format)

Utilizzando questo metodo, puoi aggiungere un'immagine a una presentazione.

2

XSLFSlide createSlide()

Crea una diapositiva vuota in una presentazione.

3

XSLFSlide createSlide(XSLFSlideLayout layout)

Crea una diapositiva con un determinato layout diapositiva.

4

java.util.List <XSLFPictureData> getAllPictures()

Restituisce un array di tutte le immagini in una presentazione.

5

java.awt.Dimension getPageSize()

Usando questo metodo, puoi conoscere le dimensioni della pagina corrente.

6

XSLFSlideMaster[] getSlideMasters()

Restituisce la matrice di tutte le diapositive in una presentazione.

7

XSLFSlide[] getSlides()

Restituisce tutte le diapositive in una presentazione.

8

XSLFSlide removeSlide(int index)

Utilizzando questo metodo, puoi rimuovere una diapositiva da una presentazione.

9

void setPageSize(java.awt.Dimension pgSize)

Utilizzando questo metodo, è possibile ripristinare le dimensioni della pagina.

10

void setSlideOrder(XSLFSlide slide, int newIndex)

Utilizzando questo metodo, puoi riordinare le diapositive.

Diapositiva

Per creare e gestire una diapositiva in una presentazione, i metodi di XSLFSlideclasse vengono utilizzati. Alcuni metodi importanti di questa classe sono menzionati di seguito.

Class - XSLFSlide

Package - org.apache.poi.xslf.usermodel

S.No Metodo e descrizione
1

XSLFBackground getBackground()

Restituisce il file XSLFBackgroundoggetto che può essere utilizzato per recuperare dettagli come il colore e l'ancoraggio dello sfondo della diapositiva. Puoi anche disegnare forme nella diapositiva usando questo oggetto.

2

XSLFSlideLayout getSlideLayout()

Fornisce accesso a XSLFSlideLayout oggetto della diapositiva corrente.

3

XSLFSlideMaster getSlideMaster()

Fornisce accesso allo schema diapositiva della diapositiva corrente.

4

XSLFTheme getTheme()

Restituisce il file XSLFTheme oggetto della diapositiva corrente.

5

java.lang.String getTitle()

Restituisce il titolo della diapositiva corrente.

6

XSLFSlide importContent(XSLFSheet src)

Copia il contenuto di un'altra diapositiva in questa diapositiva.

Presentazione principale

È il componente della presentazione con diversi layout di diapositiva. IlXSLFSlideMasterclass ti dà accesso ad esso. Di seguito sono menzionati alcuni metodi importanti di questa classe.

Class - XSLFSlideMaster

Package - org.apache.poi.xslf.usermodel

S.No Metodo e descrizione
1

XSLFBackground getBackground()

Restituisce lo sfondo comune dello schema diapositiva.

2

XSLFSlideLayout getLayout(SlideLayout type)

Restituisce l'oggetto XSLFSlideLayout.

3

XSLFSlideLayout[] getSlideLayouts()

Restituisce tutti i layout diapositiva in questo schema diapositiva.

Layout diapositiva

La libreria POI ha una classe chiamata XSLFSlideLayout, utilizzando il quale puoi gestire i layout di una diapositiva.

Class - XSLFSlideLayout

Package - org.apache.poi.xslf.usermodel

S.No Metodo e descrizione
1

void copyLayout(XSLFSlide slide)

Questo metodo copierà i segnaposto da questo layout alla diapositiva data.

Paragrafo di testo

Puoi scrivere il contenuto sulla diapositiva usando XSLFTextParagraphclasse. Di seguito sono menzionati alcuni metodi importanti di questa classe.

Class - XSLFTextParagraph

Package - org.apache.poi.xslf.usermodel

S.No Metodo e descrizione
1

XSLFTextRun addLineBreak()

Inserisce un'interruzione di riga in un paragrafo.

2

XSLFTextRun addNewTextRun()

Aggiunge una nuova sequenza di testo in un paragrafo.

3

void setBulletAutoNumber(ListAutoNumber scheme, int startAt)

Applica punti elenco numerati automatici al paragrafo.

4

void setIndent(double value)

Imposta il rientro del testo nel paragrafo.

5

void setLeftMargin(double value)

Questo metodo viene utilizzato per aggiungere il margine sinistro del paragrafo.

6

void setLineSpacing(double linespacing)

Questo metodo viene utilizzato per impostare l'interlinea nel paragrafo.

7

void setTextAlign(TextAlign align)

Questo metodo viene utilizzato per impostare l'allineamento che deve essere impostato al paragrafo.

Text Run

Questo è il livello più basso di separazione del testo all'interno di un corpo di testo. HaiXSLFTextRunclasse per gestire la sequenza di testo di un paragrafo. Di seguito sono menzionati alcuni metodi importanti di questa classe.

Class - XSLFTextParagraph

Package - org.apache.poi.xslf.usermodel

S.No Metodo e descrizione
1

XSLFHyperlink createHyperlink()

Crea un collegamento ipertestuale nella presentazione.

2

XSLFHyperlink getHyperlink()

Questo metodo viene utilizzato per ottenere il collegamento ipertestuale.

3

java.lang.String getText()

Restituisce il valore di questo nodo di testo come una stringa Java.

4

void setBold(boolean bold)

Questo metodo viene utilizzato per impostare il testo in grassetto.

5

void setCharacterSpacing(double spc)

Imposta la spaziatura tra i caratteri all'interno di una sequenza di testo.

6

void setFontColor(java.awt.Color color)

Imposta il colore del carattere del testo.

7

void setFontSize(double fontSize)

Imposta la dimensione del carattere del testo.

8

void setItalic(boolean italic)

Questo metodo viene utilizzato per rendere il paragrafo in corsivo.

9

void setStrikethrough(boolean strike)

Questo metodo viene utilizzato per formattare una sequenza di testo come testo barrato.

10

void setSubscript(boolean flag)

Questo metodo viene utilizzato per formattare il testo come pedice.

11

void setSuperscript(boolean flag)

Questo metodo viene utilizzato per formattare il testo in questa esecuzione come apice.

12

void setText(java.lang.String text)

Questo metodo viene utilizzato per impostare il testo in una sequenza.

13

void setUnderline(boolean underline)

Questo metodo viene utilizzato per sottolineare il testo in una sequenza di testo.

Forma del testo

In PPT, abbiamo forme che possono contenere del testo al loro interno. Possiamo gestirli usandoXSLFTextShapeclasse. Di seguito sono menzionati alcuni metodi importanti di questa classe.

Class - XSLFTextShape

Package - org.apache.poi.xslf.usermodel

S.No Metodo e descrizione
1

void setPlaceholder(Placeholder placeholder)

Utilizzando questo metodo, puoi scegliere un segnaposto.

2

Placeholder getTextType()

Restituisce il tipo di segnaposto corrente.

3

void clearText()

Cancella l'area di testo della forma del testo corrente.

4

XSLFTextParagraph addNewTextParagraph()

Aggiunge una nuova sequenza di paragrafo a una forma.

5

void drawContent(java.awt.Graphics2D graphics)

Questo metodo ti consente di disegnare qualsiasi contenuto sulla diapositiva.

HyperLink

La libreria POI ha una classe chiamata XSLFHyperlinkutilizzando il quale è possibile creare un collegamento ipertestuale nella presentazione. Di seguito sono menzionati alcuni metodi importanti di questa classe.

Class - XSLFHyperlink

Package - org.apache.poi.xslf.usermodel

S.No Metodo e descrizione
1

java.net.URI getTargetURL()

Restituisce l'URL esistente in una diapositiva della presentazione.

2

void setAddress(java.lang.String address)

Questo metodo viene utilizzato per impostare l'indirizzo su un URL.

3

void setAddress(XSLFSlide slide)

Imposta l'indirizzo all'URL presente in una diapositiva della presentazione.

In generale, utilizziamo MS-PowerPoint per creare presentazioni. Vediamo ora come creare presentazioni utilizzando Java. Dopo il completamento di questo capitolo, sarai in grado di creare nuove presentazioni MS-PowerPoint e aprire PPT esistenti con il tuo programma Java.

Creazione di una presentazione vuota

Per creare una presentazione vuota, devi istanziare il file XMLSlideShowclasse del pacchetto org.poi.xslf.usermodel -

XMLSlideShow ppt = new XMLSlideShow();

Salvare le modifiche a un documento PPT utilizzando il file FileOutputStream classe -

File file = new File("C://POIPPT//Examples//example1.pptx");
FileOutputStream out = new FileOutputStream(file);
ppt.write(out);

Di seguito è riportato il programma completo per creare una presentazione MS-PowerPoint vuota.

import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class CreatePresentation {
   
   public static void main(String args[]) throws IOException {
   
      //creating a new empty slide show
      XMLSlideShow ppt = new XMLSlideShow();	     
      
      //creating an FileOutputStream object
      File file = new File("example1.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //saving the changes to a file
      ppt.write(out);
      System.out.println("Presentation created successfully");
      out.close()
   }
}

Salva il codice Java sopra come CreatePresentation.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac CreatePresentation.java $java CreatePresentation

Se l'ambiente di sistema è configurato con la libreria POI, verrà compilato ed eseguito per generare un file PPT vuoto denominato example1.pptx nella directory corrente e visualizzare il seguente output sul prompt dei comandi:

Presentation created successfully

Il documento PowerPoint vuoto viene visualizzato come segue:

Modifica di una presentazione esistente

Per aprire una presentazione esistente, creare un'istanza del file XMLSlideShow class e passare il FileInputStream oggetto del file da modificare, come argomento del file XMLSlideShow costruttore.

File file = new File(“C://POIPPT//Examples//example1.pptx”);
FileInputstream inputstream = new FileInputStream(file);
XMLSlideShow ppt = new XMLSlideShow(inputstream);

Puoi aggiungere diapositive a una presentazione utilizzando il file createSlide()metodo della classe XMLSlideShow che si trova nel pacchetto org.poi.xslf.usermodel .

XSLFSlide slide1 = ppt.createSlide();

Di seguito è riportato il programma completo per aprire e aggiungere diapositive a un PPT esistente -

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class EditPresentation {

   public static void main(String ar[]) throws IOException {
	   
      //opening an existing slide show
      File file = new File("example1.pptx");
      FileInputStream inputstream = new FileInputStream(file);
      XMLSlideShow ppt = new XMLSlideShow(inputstream);
      
      //adding slides to the slodeshow
      XSLFSlide slide1 = ppt.createSlide();
      XSLFSlide slide2 = ppt.createSlide();
      
      //saving the changes 
      FileOutputStream out = new FileOutputStream(file);
      ppt.write(out);
      
      System.out.println("Presentation edited successfully");
      out.close();	
   }
}

Salva il codice Java sopra come EditPresentation.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac EditPresentation.java $java EditPresentation

Verrà compilato ed eseguito per generare il seguente output:

slides successfully added

Il documento PPT di output con le diapositive appena aggiunte appare come segue:

Dopo aver aggiunto le diapositive a un PPT, è possibile aggiungere, eseguire, leggere e scrivere operazioni sulle diapositive.

Nel capitolo precedente, hai visto come creare diapositive vuote e come aggiungervi diapositive. In questo capitolo imparerai come ottenere l'elenco delle diapositive disponibili e come creare una diapositiva con layout differenti.

Layout diapositiva disponibili

Le presentazioni di PowerPoint dispongono di layout diapositiva e puoi scegliere un layout desiderato per modificare una diapositiva. Prima di tutto, cerchiamo di scoprire l'elenco di tutti i layout di diapositiva disponibili.

  • Esistono diversi schemi diapositiva e in ogni schema diapositiva sono presenti diversi layout diapositiva.

  • È possibile ottenere l'elenco degli schemi diapositiva utilizzando il file getSlideMasters() metodo del XMLSlideShow classe.

  • Puoi ottenere l'elenco dei layout delle diapositive da ogni schema diapositiva utilizzando il file getSlideLayouts() metodo del XSLFSlideMaster classe.

  • È possibile ottenere il nome del layout diapositiva dall'oggetto layout utilizzando il file getType() metodo del XSLFSlideLayout classe.

Note- Tutte queste classi appartengono al pacchetto org.poi.xslf.usermodel .

Di seguito è riportato il programma completo per ottenere l'elenco dei layout di diapositiva disponibili nel PPT -

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;

public class SlideLayouts {

   public static void main(String args[]) throws IOException {
   
      //create an empty presentation
      XMLSlideShow ppt = new XMLSlideShow();
      System.out.println("Available slide layouts:")
   
      //getting the list of all slide masters
      for(XSLFSlideMaster master : ppt.getSlideMasters()) {
   
         //getting the list of the layouts in each slide master
         for(XSLFSlideLayout layout : master.getSlideLayouts()) {
   
            //getting the list of available slides
            System.out.println(layout.getType());
         } 
      }
   }
}

Salva il codice Java sopra come SlideLayouts.java , quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac SlideLayouts.java $java SlideLayouts

Verrà compilato ed eseguito per generare il seguente output:

Available slide layouts:
TITLE
PIC_TX
VERT_TX
TWO_TX_TWO_OBJ
BLANK
VERT_TITLE_AND_TX
TITLE_AND_CONTENT
TITLE_ONLY
SECTION_HEADER
TWO_OBJ
OBJ_TX

Di seguito sono riportati alcuni dei layout di diapositiva di esempio disponibili con MS-Office 360, edizione 2013.

Layout del titolo

Creiamo una diapositiva in un PPT utilizzando il layout del titolo. Segui i passaggi indicati di seguito:

Step 1 - Crea una presentazione vuota istanziando il file XMLSlideShow classe come mostrato di seguito.

XMLSlideShow ppt = new XMLSlideShow();

Step 2 - Ottieni l'elenco degli schemi diapositiva utilizzando il file getSlideMasters()metodo. Successivamente, selezionare lo schema diapositiva desiderato utilizzando l'indice come mostrato di seguito.

XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

Qui stiamo ottenendo lo schema diapositiva predefinito che si trova nella posizione 0 ° dell'array master diapositiva.

Step 3 - Ottieni il layout desiderato utilizzando il file getLayout() metodo del XSLFSlideMasterclasse. Questo metodo accetta un parametro in cui devi passare una delle variabili statiche del fileSlideLayoutclass, che rappresenta il nostro layout desiderato. Esistono diverse variabili in questa classe in cui ogni variabile rappresenta un layout di diapositiva.

Lo snippet di codice riportato di seguito mostra come creare un layout del titolo:

XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);

Step 4 - Crea una nuova diapositiva passando un oggetto layout diapositiva come parametro.

XSLFSlide slide = ppt.createSlide(titleLayout);

Step 5 - Seleziona un segnaposto utilizzando il getPlaceholder() metodo del XSLFSlideclasse. Questo metodo accetta un parametro intero. Passando0 ad esso, otterrai il file XSLFTextShapeoggetto, utilizzando il quale è possibile accedere all'area di testo del titolo della diapositiva. Impostare il titolo utilizzando il metodo setText () come mostrato di seguito.

XSLFTextShape title1 = slide.getPlaceholder(0);
//setting the title init
title1.setText("Tutorials point");

Di seguito è riportato il programma completo per creare una diapositiva con layout del titolo in una presentazione -

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.SlideLayout;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class TitleLayout {

   public static void main(String args[]) throws IOException {
   
      //creating presentation
      XMLSlideShow ppt = new XMLSlideShow();	    	
      
      //getting the slide master object
      XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
      
      //get the desired slide layout 
      XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
                                                     
      //creating a slide with title layout
      XSLFSlide slide1 = ppt.createSlide(titleLayout);
      
      //selecting the place holder in it 
      XSLFTextShape title1 = slide1.getPlaceholder(0); 
      
      //setting the title init 
      title1.setText("Tutorials point");
      
      //create a file object
      File file = new File("C://POIPPT//Examples//Titlelayout.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //save the changes in a PPt document
      ppt.write(out);
      System.out.println("slide cretated successfully");
      out.close();  
   }
}

Salva il codice Java sopra come TitleLayout.java, quindi compilalo ed eseguilo dal prompt dei comandi come segue:

$javac TitleLayout.java $java TitleLayout

Verrà compilato ed eseguito per generare il seguente output.

slide created successfully

Il documento PPT con la diapositiva del layout del titolo appena aggiunta viene visualizzato come segue:

Titolo e layout del contenuto

Creiamo una diapositiva in un PPT utilizzando Titolo e layout del contenuto. Segui i passaggi indicati di seguito.

Step 1 - Crea una presentazione vuota istanziando il file XMLSlideShow classe come mostrato di seguito.

XMLSlideShow ppt = new XMLSlideShow();

Step 2 - Ottieni l'elenco degli schemi diapositiva utilizzando il file getSlideMasters()metodo. Selezionare lo schema diapositiva desiderato utilizzando l'indice come mostrato di seguito.

XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

Qui stiamo ottenendo lo schema diapositiva predefinito che si trova nella posizione 0 ° dell'array master diapositiva.

Step 3 - Ottieni il layout desiderato utilizzando il file getLayout() metodo del XSLFSlideMasterclasse. Questo metodo accetta un parametro in cui devi passare una delle variabili statiche del fileSlideLayoutclasse che rappresenta il nostro layout desiderato. Esistono diverse variabili in questa classe che rappresentano i layout delle diapositive.

Il frammento di codice seguente mostra come creare il layout del titolo e del contenuto:

XSLFSlideLayout contentlayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);

Step 4 - Crea una nuova diapositiva passando l'oggetto layout diapositiva come parametro.

XSLFSlide slide = ppt.createSlide(SlideLayout.TITLE_AND_CONTENT);

Step 5 - Seleziona un segnaposto utilizzando il getPlaceholder() metodo del XSLFSlideclasse. Questo metodo accetta un parametro intero. Passando1 ad esso, otterrai il file XSLFTextShapeoggetto, utilizzando il quale è possibile accedere all'area del contenuto della diapositiva. Impostare il titolo utilizzando il metodo setText () come mostrato di seguito.

XSLFTextShape title1 = slide1.getPlaceholder(1);
//setting the title init 
title1.setText("Introduction");

Step 6 - Cancella il testo esistente nella diapositiva utilizzando il clearText() metodo del XSLFTextShape classe.

body.clearText();

Step 7 - Aggiungi un nuovo paragrafo utilizzando il addNewTextParagraph()metodo. Ora aggiungi una nuova sequenza di testo al paragrafo usando iladdNewTextRun()metodo. Ora alla sequenza di testo, aggiungi testo usando ilsetText() metodo come mostrato di seguito.

body.addNewTextParagraph().addNewTextRun().setText("this is  my first slide body");

Di seguito è riportato il programma completo per creare una diapositiva con layout del titolo in una presentazione -

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.SlideLayout;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class TitleAndBodyLayout {
   
   public static void main(String args[]) throws IOException {
   
      //creating presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //getting the slide master object
      XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
      
      //select a layout from specified list
      XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
      
      //creating a slide with title and content layout
      XSLFSlide slide = ppt.createSlide(slidelayout);
      //selection of title place holder
      XSLFTextShape title = slide.getPlaceholder(0);
      
      //setting the title in it
      title.setText("introduction");
      
      //selection of body placeholder
      XSLFTextShape body = slide.getPlaceholder(1);
      
      //clear the existing text in the slide
      body.clearText();
      
      //adding new paragraph
      body.addNewTextParagraph().addNewTextRun().setText("this is  my first slide body");
      
      //create a file object
      File file = new File("contentlayout.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //save the changes in a file
      ppt.write(out);
      System.out.println("slide cretated successfully");
      out.close();                
   }
}

Salva il codice Java sopra come TitleLayout.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac TitleLayout.java $java TitleLayout

Verrà compilato ed eseguito per generare il seguente output:

slide created successfully

Il documento PPT con la diapositiva del layout del titolo appena aggiunta viene visualizzato come segue:

Allo stesso modo, puoi anche creare diapositive con layout diversi.

Dopo aver completato questo capitolo, sarai in grado di eliminare, riordinare ed eseguire operazioni di lettura e scrittura su una diapositiva.

Modifica di una diapositiva

Possiamo cambiare la dimensione della pagina di una diapositiva usando il setPageSize() metodo del XMLSlideShow classe.

Inizialmente crea una presentazione come mostrato di seguito -

File file = new File("C://POIPPT//Examples// TitleAndContentLayout.pptx");

//create presentation
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));

Ottieni le dimensioni della diapositiva corrente utilizzando il file getPageSize() metodo del XMLSlideShow classe.

java.awt.Dimension pgsize = ppt.getPageSize();

Imposta la dimensione della pagina usando il setPageSize() metodo.

ppt.setPageSize(new java.awt.Dimension(1024, 768));

Di seguito viene fornito il programma completo per modificare le dimensioni di una diapositiva:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;

public class ChangingSlide {
   
   public static void main(String args[]) throws IOException {

      //create file object
      File file = new File("TitleAndContentLayout.pptx");
	 
      //create presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //getting the current page size
      java.awt.Dimension pgsize = ppt.getPageSize();
      int pgw = pgsize.width; //slide width in points
      int pgh = pgsize.height; //slide height in points
      
      System.out.println("current page size of the PPT is:");
      System.out.println("width :" + pgw);
      System.out.println("height :" + pgh);
      
      //set new page size
      ppt.setPageSize(new java.awt.Dimension(2048,1536));
      
      //creating file object
      FileOutputStream out = new FileOutputStream(file);
      
      //saving the changes to a file
      ppt.write(out);
      System.out.println("slide size changed to given dimentions ");
      out.close();	
   }
}

Salva il codice Java sopra come ChangingSlide.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac ChangingSlide.java $java ChangingSlide

Verrà compilato ed eseguito per generare il seguente output.

current page size of the presentation is : 
width :720
height :540
slide size changed to given dimensions

Di seguito è riportata l'istantanea della presentazione prima di modificare la dimensione della diapositiva -

La diapositiva appare come segue dopo aver modificato le sue dimensioni:

Riordino delle diapositive

È possibile impostare l'ordine delle diapositive utilizzando il file setSlideOrder()metodo. Di seguito è riportata la procedura per impostare l'ordine delle diapositive.

Apri un documento PPT esistente come mostrato di seguito -

File file = new File("C://POIPPT//Examples//example1.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));

Ottieni le diapositive usando il file getSlides() metodo come mostrato di seguito -

XSLFSlide[] slides = ppt.getSlides();

Seleziona una diapositiva dall'array delle diapositive e modifica l'ordine utilizzando il setSlideOrder() metodo come mostrato di seguito -

//selecting the fourth slide
XSLFSlide selectesdslide = slides[4];

//bringing it to the top
ppt.setSlideOrder(selectesdslide, 1);

Di seguito è riportato il programma completo per riordinare le diapositive in una presentazione:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class ReorderSlide {	
   
   public static void main(String args[]) throws IOException {
   
      //opening an existing presentation
      File file = new File("example1.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //get the slides 
      XSLFSlide[] slides = ppt.getSlides();    
      
      //selecting the fourth slide
      XSLFSlide selectesdslide = slides[13];
      
      //bringing it to the top
      ppt.setSlideOrder(selectesdslide, 0);
      
      //creating an file object 
      FileOutputStream out = new FileOutputStream(file);
	  
      //saving the changes to a file
      ppt.write(out);
      out.close();	
   }
}

Salva il codice Java sopra come ReorderSlide.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac ReorderSlide.java $java ReorderSlide

Verrà compilato ed eseguito per generare il seguente output.

Reordering of the slides is done

Di seguito è riportata l'istantanea della presentazione prima di riordinare le diapositive:

Dopo aver riordinato le diapositive, la presentazione appare come segue. Qui abbiamo selezionato la diapositiva con l'immagine e l'abbiamo spostata in alto.

Eliminazione di diapositive

È possibile eliminare le diapositive utilizzando il file removeSlide()metodo. Seguire i passaggi indicati di seguito per eliminare le diapositive.

Apri una presentazione esistente utilizzando il file XMLSlideShow classe come mostrato di seguito -

File file = new File("C://POIPPT//Examples//image.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));

Elimina la diapositiva richiesta utilizzando il file removeSlide()metodo. Questo metodo accetta un parametro intero. Passa l'indice della diapositiva che deve essere eliminata a questo metodo.

ppt.removeSlide(1);

Di seguito è riportato il programma per eliminare le diapositive da una presentazione:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;

public class Deleteslide { 
   
   public static void main(String args[]) throws IOException {
   
      //Opening an existing slide
      File file = new File("image.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //deleting a slide
      ppt.removeSlide(1);
      
      //creating a file object
      FileOutputStream out = new FileOutputStream(file);
      
      //Saving the changes to the presentation
      ppt.write(out);
      out.close();	
   }
}

Salva il codice Java sopra come Deleteslide.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac Deleteslide.java $java Deleteslide

Verrà compilato ed eseguito per generare il seguente output:

reordering of the slides is done

L'istantanea di seguito è della presentazione prima di eliminare la diapositiva -

Dopo aver eliminato la diapositiva, la presentazione appare come segue:

In questo capitolo imparerai come aggiungere un'immagine a un PPT e come leggere un'immagine da esso.

Aggiunta di immagini

Puoi aggiungere immagini a una presentazione utilizzando il file createPicture() metodo di XSLFSlide. Questo metodo accetta immagini sotto forma di formato array di byte. Pertanto, è necessario creare un array di byte dell'immagine che deve essere aggiunto alla presentazione.

Segui la procedura indicata per aggiungere un'immagine a una presentazione. Crea una presentazione vuota usandoXMLSlideShow come mostrato di seguito -

XMLSlideShow ppt = new XMLSlideShow();

Crea una presentazione vuota utilizzando createSlide().

XSLFSlide slide = ppt.createSlide();

Leggere il file immagine che deve essere aggiunto e convertirlo in array di byte utilizzando IOUtils.toByteArray() del IOUtils classe come mostrato di seguito -

//reading an image
File image = new File("C://POIPPT//boy.jpg");

//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));

Aggiungi l'immagine alla presentazione usando addPicture(). Questo metodo accetta due variabili: il formato della matrice di byte dell'immagine che deve essere aggiunta e la variabile statica che rappresenta il formato del file dell'immagine. L'utilizzo diaddPicture() metodo è mostrato di seguito -

int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);

Incorpora l'immagine nella diapositiva usando createPicture() come mostrato di seguito -

XSLFPictureShape pic = slide.createPicture(idx);

Di seguito è riportato il programma completo per aggiungere un'immagine alla diapositiva in una presentazione -

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.util.IOUtils;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFPictureData;
import org.apache.poi.xslf.usermodel.XSLFPictureShape;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class AddingImage {
   
   public static void main(String args[]) throws IOException {
   
      //creating a presentation 
      XMLSlideShow ppt = new XMLSlideShow();
      
      //creating a slide in it 
      XSLFSlide slide = ppt.createSlide();
      
      //reading an image
      File image = new File("C://POIPPT//boy.jpg");
      
      //converting it into a byte array
      byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
      
      //adding the image to the presentation
      int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);
      
      //creating a slide with given picture on it
      XSLFPictureShape pic = slide.createPicture(idx);
      
      //creating a file object 
      File file = new File("addingimage.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //saving the changes to a file
      ppt.write(out)
      System.out.println("image added successfully");
      out.close();	
   }
}

Salva il codice Java sopra come AddingImage.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac AddingImage.java $java AddingImage

Verrà compilato ed eseguito per generare il seguente output:

reordering of the slides is done

La presentazione con la diapositiva appena aggiunta con l'immagine appare come segue:

Immagine di lettura

È possibile ottenere i dati di tutte le immagini utilizzando il file getAllPictures() metodo del XMLSlideShowclasse. Il seguente programma legge le immagini da una presentazione:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFPictureData;

public class Readingimage {
  
  public static void main(String args[]) throws IOException {
   
      //open an existing presentation 
      File file = new File("addingimage.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //reading all the pictures in the presentation
      for(XSLFPictureData data : ppt.getAllPictures()){
         
         byte[] bytes = data.getData();
         String fileName = data.getFileName();
         int pictureFormat = data.getPictureType();
         System.out.println("picture name: " + fileName);
         System.out.println("picture format: " + pictureFormat);   
      }	    
      
      //saving the changes to a file
      FileOutputStream out = new FileOutputStream(file);
      ppt.write(out);
      out.close();	
   }
}

Salva il codice Java sopra come Readingimage.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac Readingimage.java $java Readingimage

Verrà compilato ed eseguito per generare il seguente output:

picture name: image1.png
picture format: 6

In questo capitolo imparerai come creare collegamenti ipertestuali in una presentazione.

Creazione di collegamenti ipertestuali

Puoi leggere i collegamenti ipertestuali in una presentazione utilizzando il createHyperlink() metodo del XSLFTextRunclasse. Seguire la procedura indicata di seguito per creare un collegamento ipertestuale in una presentazione.

Crea una presentazione vuota usando il XMLSlideShow classe come mostrato di seguito -

XMLSlideShow ppt = new XMLSlideShow();

Crea una diapositiva vuota e crea una casella di testo e il corpo della diapositiva utilizzando il corpo e il layout del contenuto.

//create an empty presentation
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

//creating a slide with title and content layout
XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
XSLFSlide slide = ppt.createSlide(slidelayout);

//selection of body place holder
XSLFTextShape body = slide.getPlaceholder(1);

//clear the existing text in the slide
body.clearText();

Crea un oggetto di esecuzione di testo e imposta il testo come mostrato di seguito -

XSLFTextRun textRun = body.addNewTextParagraph().addNewTextRun();
textRun.setText("Tutorials point");

Crea un collegamento ipertestuale utilizzando il createHyperlink() metodo del XSLFTextRun classe come mostrato di seguito -

XSLFHyperlink link = textRun.createHyperlink();

Impostare l'indirizzo del collegamento al collegamento ipertestuale utilizzando il setAddress() metodo di XSLFHyperlink classe come mostrato di seguito -

link.setAddress("http://www.tutorialspoint.com/");

Di seguito è riportato il programma completo per creare collegamenti ipertestuali in una presentazione:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.SlideLayout;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFHyperlink;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
import org.apache.poi.xslf.usermodel.XSLFTextRun;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class CreatingHyperlinks {

   public static void main(String args[]) throws IOException {
      
      //create an empty presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //getting the slide master object
      XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
      
      //select a layout from specified list
      XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
     
      //creating a slide with title and content layout
      XSLFSlide slide = ppt.createSlide(slidelayout);
      
      //selection of title place holder
      XSLFTextShape body = slide.getPlaceholder(1);
      
      //clear the existing text in the slid
      body.clearText();
      
      //adding new paragraph
      XSLFTextRun textRun = body.addNewTextParagraph().addNewTextRun();
      
      //setting the text
      textRun.setText("Tutorials point");	
      
      //creating the hyperlink
      XSLFHyperlink link = textRun.createHyperlink();
      
      //setting the link address
      link.setAddress("http://www.tutorialspoint.com/");
      
      //create the file object            
      File file = new File("hyperlink.pptx");
      FileOutputStream out = new FileOutputStream(file);
      
      //save the changes in a file
      ppt.write(out);
      System.out.println("slide cretated successfully");
      out.close();              
   }
}

Salva il codice Java sopra come CreatingHyperlinks.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac CreatingHyperlinks.java $java CreatingHyperlinks

Verrà compilato ed eseguito per generare il seguente output:

slide cretated successfully

La diapositiva appena aggiunta con il collegamento ipertestuale nel corpo ha il seguente aspetto:

Puoi ottenere un conteggio del numero di forme utilizzate in una presentazione utilizzando il metodo getShapeName() del XSLFShapeclasse. Di seguito è riportato il programma per leggere le forme da una presentazione -

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFShape;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class ReadingShapes {
   
   public static void main(String args[]) throws IOException {
      
      //creating a slideshow 
      File file = new File("shapes.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //get slides 
      XSLFSlide[] slide = ppt.getSlides();
      
      //getting the shapes in the presentation
      System.out.println("Shapes in the presentation:");
      for (int i = 0; i < slide.length; i++){
         
         XSLFShape[] sh = slide[i].getShapes();
         for (int j = 0; j < sh.length; j++){
            
            //name of the shape
            System.out.println(sh[j].getShapeName());
         }
      }
      
      FileOutputStream out = new FileOutputStream(file);
      ppt.write(out);
      out.close();	
   }
}

Salva il codice Java sopra come ReadingShapes.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac ReadingShapes.java $java ReadingShapes

Verrà compilato ed eseguito per generare il seguente output.

Shapes in the presentation: 
Rectangle 1
Oval 1
Isosceles Triangle 1

La diapositiva appena aggiunta con le varie forme appare come segue:

Il testo in una presentazione può essere formattato utilizzando i metodi di XSLFTextRunclasse. Per questo, devi creare un fileXSLFTextRun oggetto della classe selezionando uno dei layout diapositiva come mostrato di seguito -

//create the empty presentation 
XMLSlideShow ppt = new XMLSlideShow();

//getting the slide master object
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];

//select a layout from specified list
XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);

//creating a slide with title and content layout
XSLFSlide slide = ppt.createSlide(slidelayout);

//selection of title place holder
XSLFTextShape body = slide.getPlaceholder(1);

//clear the existing text in the slide
body.clearText();

//adding new paragraph
XSLFTextParagraph paragraph = body.addNewTextParagraph();

//creating text run object
XSLFTextRun run = paragraph.addNewTextRun();

È possibile impostare la dimensione del carattere del testo nella presentazione utilizzando setFontSize().

run.setFontColor(java.awt.Color.red);
run.setFontSize(24);

Il seguente frammento di codice mostra come applicare diversi stili di formattazione (grassetto, corsivo, sottolineato, barrato) al testo in una presentazione.

//change the text into bold format
run.setBold(true);

//change the text it to italic format
run.setItalic(true)

// strike through the text
run.setStrikethrough(true);

//underline the text
run.setUnderline(true);

Per avere interruzioni di riga tra i paragrafi, utilizzare addLineBreak() del XSLFTextParagraph classe come mostrato di seguito -

paragraph.addLineBreak();

Di seguito è riportato il programma completo per formattare il testo utilizzando tutti i metodi di cui sopra -

import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.SlideLayout;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
import org.apache.poi.xslf.usermodel.XSLFTextParagraph;
import org.apache.poi.xslf.usermodel.XSLFTextRun;
import org.apache.poi.xslf.usermodel.XSLFTextShape;

public class TextFormating {
   
   public static void main(String args[]) throws IOException {
      
      //creating an empty presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //getting the slide master object
      XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
      
      //select a layout from specified list
      XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
      
      //creating a slide with title and content layout
      XSLFSlide slide = ppt.createSlide(slidelayout);
      
      //selection of title place holder
      XSLFTextShape body = slide.getPlaceholder(1);
      
      //clear the existing text in the slide
      body.clearText();
      
      //adding new paragraph
      XSLFTextParagraph paragraph = body.addNewTextParagraph();
      
      //formatting line 1
      
      XSLFTextRun run1 = paragraph.addNewTextRun();
      run1.setText("This is a colored line");      
      
      //setting color to the text
      run1.setFontColor(java.awt.Color.red);      
      
      //setting font size to the text
      run1.setFontSize(24);      
      
      //moving to the next line
      paragraph.addLineBreak();
     
      //formatting line 2
      
      XSLFTextRun run2 = paragraph.addNewTextRun();
      run2.setText("This is a bold line");
      run2.setFontColor(java.awt.Color.CYAN);
      
      //making the text bold
      run2.setBold(true);
      paragraph.addLineBreak();
      
      //formatting line 3
      
      XSLFTextRun run3 = paragraph.addNewTextRun();
      run3.setText(" This is a striked line");
      run3.setFontSize(12);
      
      //making the text italic
      run3.setItalic(true);
      
      //strike through the text
      run3.setStrikethrough(true);
      paragraph.addLineBreak();
       
      //formatting line 4
      
      XSLFTextRun run4 = paragraph.addNewTextRun();
      run4.setText(" This an underlined line");
      run4.setUnderline(true);
      
      //underlining the text
      paragraph.addLineBreak();
      
      //creating a file object
      File file = new File(“TextFormat.pptx”);
      FileOutputStream out = new FileOutputStream(file);
       
      //saving the changes to a file
      ppt.write(out);
      out.close();	 
   }
}

Salva il codice sopra come TextFormating.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac TextFormating.java $java TextFormating

Verrà compilato ed eseguito per generare il seguente output:

Formatting completed successfully

La diapositiva con testo formattato appare come segue:

Puoi unire più presentazioni utilizzando il file importContent() metodo del XMLSlideShowclasse. Di seguito è riportato il programma completo per unire due presentazioni:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class MergingMultiplePresentations {
   
      public static void main(String args[]) throws IOException {
      
      //creating empty presentation
      XMLSlideShow ppt = new XMLSlideShow();
      
      //taking the two presentations that are to be merged 
      String file1 = "presentation1.pptx";
      String file2 = "presentation2.pptx";
      String[] inputs = {file1, file2};
      
      for(String arg : inputs){
      
         FileInputStream inputstream = new FileInputStream(arg);
         XMLSlideShow src = new XMLSlideShow(inputstream);
         
         for(XSLFSlide srcSlide : src.getSlides()) {
         
            //merging the contents
            ppt.createSlide().importContent(srcSlide);
         }
      }
     
      String file3 = "combinedpresentation.pptx";
      
      //creating the file object
      FileOutputStream out = new FileOutputStream(file3);
      
      // saving the changes to a file
      ppt.write(out);
      System.out.println("Merging done successfully");
      out.close();
   }
}

Salva il codice sopra come MergingMultiplePresentations.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac MergingMultiplePresentations.java $java MergingMultiplePresentations

Verrà compilato ed eseguito per generare il seguente output:

Merging done successfully

La seguente istantanea mostra la prima presentazione:

La seguente istantanea mostra la seconda presentazione:

Di seguito è riportato l'output del programma dopo aver unito le due diapositive. Qui puoi vedere il contenuto delle diapositive precedenti unite insieme.

Puoi convertire una presentazione in un file immagine. Il seguente programma mostra come procedere.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class PptToImage {
   
   public static void main(String args[]) throws IOException {
      
      //creating an empty presentation
      File file=new File("pptToImage.pptx");
      XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
      
      //getting the dimensions and size of the slide 
      Dimension pgsize = ppt.getPageSize();
      XSLFSlide[] slide = ppt.getSlides();
      
      BufferedImage img = null;
      
      for (int i = 0; i < slide.length; i++) {
         img = new BufferedImage(pgsize.width, pgsize.height,BufferedImage.TYPE_INT_RGB);
         Graphics2D graphics = img.createGraphics();

         //clear the drawing area
         graphics.setPaint(Color.white);
         graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));

         //render
         slide[i].draw(graphics);
         
      }
      
      //creating an image file as output
      FileOutputStream out = new FileOutputStream("ppt_image.png");
      javax.imageio.ImageIO.write(img, "png", out);
      ppt.write(out);
      
      System.out.println("Image successfully created");
      out.close();	
   }
}

Salva il codice Java sopra come PpttoPNG.java, quindi compilarlo ed eseguirlo dal prompt dei comandi come segue:

$javac PpttoPNG.java $java PpttoPNG

Verrà compilato ed eseguito per generare il seguente output:

Image created successfully

La seguente istantanea mostra la presentazione fornita come input:

Di seguito è riportata l'istantanea dell'immagine creata nella posizione specificata.