Een MS PowerPoint-presentatie maken in Java

1. Inleiding

In dit artikel zullen we zien hoe we een presentatie kunnen maken met Apache POI.

Deze bibliotheek geeft ons de mogelijkheid om PowerPoint-presentaties te maken, bestaande presentaties te lezen en de inhoud ervan te wijzigen.

2. Maven afhankelijkheden

Om te beginnen moeten we de volgende afhankelijkheden toevoegen aan onze pom.xml:

 org.apache.poi poi 3.17 org.apache.poi poi-ooxml 3.17 

De nieuwste versie van beide bibliotheken kan worden gedownload vanaf Maven Central.

3. Apache POI

De Apache POI-bibliotheek ondersteunt beide .ppt en .pptx bestanden, en het biedt de HSLF-implementatie voor het Powerpoint '97 (-2007) bestandsformaat en de XSLF voor het PowerPoint 2007 OOXML-bestandsformaat.

Aangezien er geen gemeenschappelijke interface bestaat voor beide implementaties, we moeten niet vergeten om de XMLSlideShow, XSLFSlide en XSLFTextShape klassen bij het werken met de nieuwere .pptx bestandsformaat.

En als het nodig is om met ouderen te werken .ppt formaat, gebruik dan het HSLFSlideShow, HSLFSlide en HSLFTextParagraaf klassen.

We zullen de nieuwe gebruiken .pptx bestandsformaat in onze voorbeelden, en het eerste wat we moeten doen is een nieuwe presentatie maken, er een dia aan toevoegen (misschien met een vooraf gedefinieerde lay-out) en deze opslaan.

Zodra deze bewerkingen duidelijk zijn, kunnen we aan de slag met afbeeldingen, tekst en tabellen.

3.1. Maak een nieuwe presentatie

Laten we eerst de nieuwe presentatie maken:

XMLSlideShow ppt = nieuwe XMLSlideShow (); ppt.createSlide ();

3.2. Voeg een nieuwe dia toe

Bij het toevoegen van een nieuwe dia aan een presentatie kunnen we er ook voor kiezen om deze te maken vanuit een vooraf gedefinieerde lay-out. Om dit te bereiken, moeten we eerst het XSLFSlideMaster die lay-outs bevat (de eerste is de standaard master):

XSLFSlideMaster defaultMaster = ppt.getSlideMasters (). Get (0);

Nu kunnen we het XSLFSlideLayout en gebruik het bij het maken van de nieuwe dia:

XSLFSlideLayout layout = defaultMaster.getLayout (SlideLayout.TITLE_AND_CONTENT); XSLFSlide-dia = ppt.createSlide (layout);

Laten we eens kijken hoe plaatshouders in een sjabloon kunnen worden gevuld:

XSLFTextShape titleShape = slide.getPlaceholder (0); XSLFTextShape contentShape = slide.getPlaceholder (1);

Onthoud dat elke sjabloon zijn tijdelijke aanduidingen heeft, instanties van de XSLFAutoShape subklasse, die in aantal kan verschillen van de ene sjabloon tot de andere.

Laten we eens kijken hoe we snel alle tijdelijke aanduidingen van een dia kunnen ophalen:

for (XSLFShape-vorm: slide.getShapes ()) {if (vorminstantie van XSLFAutoShape) {// dit is een tijdelijke aanduiding voor een sjabloon}}

3.3. Een presentatie opslaan

Nadat we de diavoorstelling hebben gemaakt, is de volgende stap om deze op te slaan:

FileOutputStream out = nieuwe FileOutputStream ("powerpoint.pptx"); ppt.write (uit); out.close ();

4. Werken met objecten

Nu we hebben gezien hoe we een nieuwe presentatie kunnen maken, er een dia aan kunnen toevoegen (al dan niet met een vooraf gedefinieerde sjabloon) en deze kunnen opslaan, kunnen we beginnen met het toevoegen van tekst, afbeeldingen, links en tabellen.

Laten we beginnen met de tekst.

4.1. Tekst

Bij het werken met tekst in een presentatie, zoals in MS PowerPoint, moeten we het tekstvak in een dia maken, een alinea toevoegen en vervolgens de tekst aan de alinea toevoegen:

XSLFTextBox-vorm = slide.createTextBox (); XSLFTextParagraph p = shape.addNewTextParagraph (); XSLFTextRun r = p.addNewTextRun (); r.setText ("Baeldung"); r.setFontColor (Color.green); r.setFontSize (24.);

Bij het configureren van het XSLFTextRun, is het mogelijk om de stijl aan te passen door de lettertypefamilie te kiezen en of de tekst vet, cursief of onderstreept moet zijn.

4.2. Hyperlinks

Bij het toevoegen van tekst aan een presentatie kan het soms handig zijn om hyperlinks toe te voegen.

Zodra we het XSLFTextRun object, kunnen we nu een link toevoegen:

XSLFHyperlink-link = r.createHyperlink (); link.setAddress ("// www.baeldung.com");

4.3. Afbeeldingen

We kunnen ook afbeeldingen toevoegen:

byte [] pictureData = IOUtils.toByteArray (nieuwe FileInputStream ("logo-leaf.png")); XSLFPictureData pd = ppt.addPicture (pictureData, PictureData.PictureType.PNG); XSLFPictureShape afbeelding = slide.createPicture (pd);

Echter, zonder de juiste configuratie wordt de afbeelding in de linkerbovenhoek van de dia geplaatst. Om het correct te plaatsen, moeten we het ankerpunt configureren:

picture.setAnchor (nieuwe rechthoek (320, 230, 100, 92));

De XSLFPictureShape accepteert een Rechthoek als ankerpunt, waarmee we de x / y-coördinaten met de eerste twee parameters en de breedte / hoogte van de afbeelding met de laatste twee kunnen configureren.

4.4. Lijsten

Tekst in een presentatie wordt vaak weergegeven in de vorm van een lijst, al dan niet genummerd.

Laten we nu een lijst met opsommingstekens definiëren:

XSLFTextShape-inhoud = slide.getPlaceholder (1); XSLFTextParagraph p1 = content.addNewTextParagraph (); p1.setIndentLevel (0); p1.setBullet (true); r1 = p1.addNewTextRun (); r1.setText ("Bullet");

Evenzo kunnen we een genummerde lijst definiëren:

XSLFTextParagraph p2 = content.addNewTextParagraph (); p2.setBulletAutoNumber (AutoNumberingScheme.alphaLcParenRight, 1); p2.setIndentLevel (1); XSLFTextRun r2 = p2.addNewTextRun (); r2.setText ("Genummerd lijstitem - 1");

Als we met meerdere lijsten werken, is het altijd belangrijk om de indentLevel om items goed te laten inspringen.

4.5. Tabellen

Tabellen zijn een ander belangrijk object in een presentatie en zijn handig als we gegevens willen weergeven.

Laten we beginnen met het maken van een tabel:

XSLFTable tbl = slide.createTable (); tbl.setAnchor (nieuwe rechthoek (50, 50, 450, 300));

Nu kunnen we een koptekst toevoegen:

int aantalColumns = 3; XSLFTableRow headerRow = tbl.addRow (); headerRow.setHeight (50); voor (int i = 0; i <numColumns; i ++) {XSLFTableCell th = headerRow.addCell (); XSLFTextParagraph p = th.addNewTextParagraph (); p.setTextAlign (TextParagraph.TextAlign.CENTER); XSLFTextRun r = p.addNewTextRun (); r.setText ("Header" + (i + 1)); tbl.setColumnWidth (i, 150); }

Zodra de koptekst is voltooid, kunnen we rijen en cellen aan onze tabel toevoegen om gegevens weer te geven:

for (int rownum = 1; rownum <numRows; rownum ++) {XSLFTableRow tr = tbl.addRow (); tr.setHeight (50); voor (int i = 0; i <numColumns; i ++) {XSLFTableCell cell = tr.addCell (); XSLFTextParagraph p = cell.addNewTextParagraph (); XSLFTextRun r = p.addNewTextRun (); r.setText ("Cell" + (i * rownum + 1)); }}

Wanneer u met tabellen werkt, is het belangrijk eraan te herinneren dat het mogelijk is om de rand en de achtergrond van elke afzonderlijke cel aan te passen.

5. Een presentatie wijzigen

Niet altijd wanneer we aan een diavoorstelling werken, moeten we een nieuwe maken, maar we moeten een reeds bestaande wijzigen.

Laten we eens kijken naar degene die we in de vorige sectie hebben gemaakt en dan kunnen we beginnen met het wijzigen ervan:

5.1. Een presentatie lezen

Het lezen van een presentatie is vrij eenvoudig en kan worden gedaan met de XMLSlideShow overbelaste constructor die een FileInputStream:

XMLSlideShow ppt = nieuwe XMLSlideShow (nieuwe FileInputStream ("slideshow.pptx"));

5.2. De volgorde van dia's wijzigen

Wanneer u dia's aan onze presentatie toevoegt, is het een goed idee om ze in de juiste volgorde te plaatsen voor een goede stroom dia's.

Als dit niet gebeurt, is het mogelijk om de volgorde van de dia's te wijzigen. Laten we eens kijken hoe we de vierde dia kunnen verplaatsen naar de tweede:

Lijst dia's = ppt.getSlides (); XSLFSlide-dia = slides.get (3); ppt.setSlideOrder (dia, 1);

5.3. Een dia verwijderen

Het is ook mogelijk om een ​​dia uit een presentatie te verwijderen.

Laten we eens kijken hoe we de 4e dia kunnen verwijderen:

ppt.removeSlide (3);

6. Conclusie

Deze korte handleiding heeft geïllustreerd hoe u de Apache POI API om PowerPoint-bestanden te lezen en te schrijven vanuit een Java-perspectief.

De volledige broncode voor dit artikel is, zoals altijd, te vinden op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found