Izrada MS PowerPoint prezentacije na Javi

1. Uvod

U ovom ćemo članku vidjeti kako možemo stvoriti prezentaciju pomoću Apache POI.

Ova nam knjižnica daje mogućnost izrade PowerPoint prezentacija, čitanja postojećih i izmjene njihovog sadržaja.

2. Ovisnosti Mavena

Za početak trebamo dodati sljedeće ovisnosti u našu pom.xml:

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

Najnoviju verziju obje knjižnice možete preuzeti s Maven Central.

3. Apache POI

The Apache POI knjižnica podržava oboje .ppt i .pptx datoteke, a pruža HSLF implementaciju za format datoteke Powerpoint '97 (-2007) i XSLF za format datoteke PowerPoint 2007 OOXML.

Budući da zajedničko sučelje ne postoji za obje implementacije, moramo se sjetiti koristiti XMLSlideShow, XSLFSlide i XSLFTextShape satova pri radu s novijim .pptx format datoteke.

I, kada je potrebno raditi sa starijima .ppt formatu, koristite HSLFSlideShow, HSLFSlide i HSLFTextParagraph razreda.

Koristit ćemo novo .pptx format datoteke u našim primjerima, a prvo što moramo učiniti je stvoriti novu prezentaciju, dodati joj slajd (možda pomoću unaprijed definiranog izgleda) i spremiti ga.

Nakon što se ove operacije razjasne, možemo početi raditi sa slikama, tekstom i tablicama.

3.1. Stvorite novu prezentaciju

Stvorimo prvo novu prezentaciju:

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

3.2. Dodajte novi dijapozitiv

Kada dodajemo novi slajd prezentaciji, također možemo odabrati da je stvorimo iz unaprijed definiranog izgleda. Da bismo to postigli, prvo moramo dohvatiti XSLFSlideMaster koji sadrži izglede (prvi je zadani master):

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

Sada možemo dohvatiti XSLFSlideLayout i upotrijebite ga pri izradi novog slajda:

XSLFSlideLayout layout = defaultMaster.getLayout (SlideLayout.TITLE_AND_CONTENT); XSLFSlide slide = ppt.createSlide (izgled);

Pogledajmo kako popuniti rezervirana mjesta unutar predloška:

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

Imajte na umu da svaki predložak ima svoja rezervirana mjesta, primjerke XSLFAutoShape podrazred, koji se može razlikovati u broju od jednog do drugog predloška.

Pogledajmo kako možemo brzo doći do svih rezerviranih mjesta sa slajda:

za (XSLFShape shape: slide.getShapes ()) {if (instance instance of XSLFAutoShape) {// ovo je rezervirano mjesto}}

3.3. Spremanje prezentacije

Nakon što izradimo prezentaciju, sljedeći korak je spremanje:

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

4. Rad s objektima

Sad kad smo vidjeli kako stvoriti novu prezentaciju, dodati joj slajd (koristeći ili ne unaprijed definirani predložak) i spremiti ga, možemo početi dodavati tekst, slike, veze i tablice.

Krenimo od teksta.

4.1. Tekst

Kada radimo s tekstom u prezentaciji, kao u MS PowerPointu, moramo stvoriti okvir za tekst unutar slajda, dodati odlomak, a zatim dodati tekst u odlomak:

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

Prilikom konfiguriranja XSLFTextRun, moguće je prilagoditi njegov stil odabirom porodice fontova i ako bi tekst trebao biti podebljan, kurziv ili podvučen.

4.2. Hiperveze

Kada dodajete tekst prezentaciji, ponekad može biti korisno dodati hiperveze.

Jednom kada smo kreirali XSLFTextRun objekt, sada možemo dodati vezu:

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

4.3. Slike

Možemo dodati i slike:

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

Međutim, bez odgovarajuće konfiguracije, slika će se postaviti u gornji lijevi kut slajda. Da bismo je pravilno postavili, moramo konfigurirati točku sidrišta:

picture.setAnchor (novi Pravokutnik (320, 230, 100, 92));

The XSLFPictureShape prihvaća a Pravokutnik kao sidrište, što nam omogućuje podešavanje x / y koordinata s prva dva parametra, a širina / visina slike s zadnja dva.

4.4. Popisi

Tekst u prezentaciji često je predstavljen u obliku popisa, numeriran ili ne.

Definirajmo sada popis meta:

XSLFTextShape content = slide.getPlaceholder (1); XSLFTextParagraph p1 = content.addNewTextParagraph (); p1.setIndentLevel (0); p1.setBullet (istina); r1 = p1.addNewTextRun (); r1.setText ("Metak");

Slično tome, možemo definirati numerirani popis:

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

U slučaju da radimo s više popisa, uvijek je važno definirati indentLevel kako bi se postiglo pravilno uvlačenje predmeta.

4.5. Stolovi

Tablice su još jedan ključni objekt u prezentaciji i korisne su kada želimo prikazati podatke.

Počnimo s izradom tablice:

XSLFTable tbl = slide.createTable (); tbl.setAnchor (novi pravokutnik (50, 50, 450, 300));

Sada možemo dodati zaglavlje:

int numColumns = 3; XSLFTableRow headerRow = tbl.addRow (); headerRow.setHeight (50); za (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 ("Zaglavlje" + (i + 1)); tbl.setColumnWidth (i, 150); }

Kada je zaglavlje dovršeno, u našu tablicu možemo dodati retke i ćelije za prikaz podataka:

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

Kada radite s tablicama, važno je podsjetiti da je moguće prilagoditi obrub i pozadinu svake pojedine ćelije.

5. Izmjena prezentacije

Ne uvijek kada radimo na prezentaciji, moramo stvoriti novu, ali moramo izmijeniti već postojeću.

Pogledajmo onaj koji smo stvorili u prethodnom odjeljku, a zatim ga možemo početi mijenjati:

5.1. Čitanje prezentacije

Čitanje prezentacije prilično je jednostavno i može se izvršiti pomoću XMLSlideShow preopterećeni konstruktor koji prihvaća a FileInputStream:

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

5.2. Promjena redoslijeda slajdova

Kada dodajete slajdove u našu prezentaciju, bilo bi dobro postaviti ih ispravnim redoslijedom kako biste imali pravilan protok slajdova.

Kada se to ne dogodi, moguće je preurediti redoslijed slajdova. Pogledajmo kako četvrti slajd možemo premjestiti u drugi:

Navedi dijapozitive = ppt.getSlides (); XSLFSlide slide = slides.get (3); ppt.setSlideOrder (slajd, 1);

5.3. Brisanje dijapozitiva

Također je moguće iz prezentacije izbrisati dijapozitiv.

Pogledajmo kako možemo izbrisati 4. slajd:

ppt.removeSlide (3);

6. Zaključak

Ovaj je brzi vodič ilustrirao kako se koristi Apache POI API za čitanje i pisanje PowerPoint datoteke iz Java perspektive.

Kompletni izvorni kod za ovaj članak, kao i uvijek, možete pronaći na GitHubu.