MS PowerPoint prezentáció készítése Java-ban
1. Bemutatkozás
Ebben a cikkben megnézzük, hogyan készíthetünk prezentációt az Apache POI használatával.
Ez a könyvtár lehetőséget nyújt számunkra PowerPoint prezentációk készítésére, a meglévők elolvasására és azok tartalmának megváltoztatására.
2. Maven-függőségek
A kezdéshez hozzá kell adnunk a következő függőségeket a sajátunkhoz pom.xml:
org.apache.poi poi 3.17 org.apache.poi poi-ooxml 3.17
Mindkét könyvtár legújabb verziója letölthető a Maven Central oldalról.
3. Apache POI
A Az Apache POI könyvtár mindkettőt támogatja .ppt és .pptx fájlokat, és biztosítja a HSLF megvalósítást a Powerpoint '97 (-2007) és az XSLF a PowerPoint 2007 OOXML fájlformátumhoz.
Mivel nem létezik közös interfész mindkét megvalósításhoz, emlékeznünk kell a XMLSlideShow, XSLFSlide és XSLFTextShape osztályok, amikor az újabbal dolgoznak .pptx fájlformátum.
És amikor az idősebbekkel együtt kell dolgozni .ppt formátumban használja a HSLFSlideShow, HSLFSlide és HSLFTextParagraph osztályok.
Használjuk az újat .pptx fájlformátum a példáinkban, és az első dolog, amit meg kell tennünk, létrehozni egy új prezentációt, hozzáadni hozzá egy diát (esetleg előre definiált elrendezést használva) és menteni.
Miután ezek a műveletek egyértelműek, akkor elkezdhetjük a munkát képekkel, szöveggel és táblázatokkal.
3.1. Hozzon létre egy új prezentációt
Először hozzuk létre az új prezentációt:
XMLSlideShow ppt = új XMLSlideShow (); ppt.createSlide ();
3.2. Új dia hozzáadása
Ha egy új diát hozzáad egy prezentációhoz, akkor azt is választhatjuk, hogy előre meghatározott elrendezésből hozzuk létre. Ennek eléréséhez először le kell töltenünk a XSLFSlideMaster amely elrendezéseket tartalmaz (az első az alapértelmezett mester):
XSLFSlideMaster defaultMaster = ppt.getSlideMasters (). Get (0);
Most lekérhetjük a XSLFSlideLayout és használja az új dia létrehozásakor:
XSLFSlideLayout layout = defaultMaster.getLayout (SlideLayout.TITLE_AND_CONTENT); XSLFSlide slide = ppt.createSlide (elrendezés);
Nézzük meg, hogyan kell kitölteni a helyőrzőket egy sablon belsejében:
XSLFTextShape titleShape = slide.getPlaceholder (0); XSLFTextShape contentShape = slide.getPlaceholder (1);
Ne feledje, hogy minden sablonnak vannak helyőrzői, a XSLFAutoShape alosztály, amely sablononként szám szerint eltérhet.
Nézzük meg, hogyan tudjuk gyorsan lekérni az összes helyőrzőt egy diáról:
for (XSLFShape shape: slide.getShapes ()) {if (alakzat XSLFAutoShape alakja) {// ez egy sablon helyőrző}}
3.3. Prezentáció mentése
Miután elkészítettük a diavetítést, a következő lépés a mentés:
FileOutputStream out = új FileOutputStream ("powerpoint.pptx"); ppt.write (out); out.close ();
4. Munka tárgyakkal
Most, hogy láttuk, hogyan lehet új prezentációt létrehozni, hozzáadni egy diát (előre definiált sablon használatával vagy nem), és elmenteni, elkezdhetjük a szöveg, képek, linkek és táblázatok hozzáadását.
Kezdjük a szöveggel.
4.1. Szöveg
Amikor a bemutatón belüli szöveggel dolgozunk, hasonlóan az MS PowerPoint-hoz, létre kell hoznunk a szövegdobozt egy dián belül, hozzáadunk egy bekezdést, majd hozzáadjuk a szöveget a bekezdéshez:
XSLFTextBox shape = slide.createTextBox (); XSLFTextParagraph p = shape.addNewTextParagraph (); XSLFTextRun r = p.addNewTextRun (); r.setText ("Baeldung"); r.setFontColor (Color.green); r.setFontSize (24.);
A. Konfigurálásakor XSLFTextRun, a stílust testreszabhatja a betűtípuscsalád kiválasztásával, és ha a szöveg félkövér, dőlt vagy aláhúzott legyen.
4.2. Hiperhivatkozások
Szöveg hozzáadásakor egy prezentációhoz néha hasznos lehet hiperhivatkozások hozzáadása.
Miután létrehoztuk a XSLFTextRun objektumot, most hozzáadhatunk egy linket:
XSLFHyperlink link = r.createHyperlink (); link.setAddress ("// www.baeldung.com");
4.3. Képek
Képeket is felvehetünk:
bájt [] pictureData = IOUtils.toByteArray (új FileInputStream ("logo-leaf.png")); XSLFPictureData pd = ppt.addPicture (pictureData, PictureData.PictureType.PNG); XSLFPictureShape picture = slide.createPicture (pd);
Azonban, Megfelelő konfiguráció nélkül a kép a dia bal felső sarkába kerül. A megfelelő elhelyezéshez konfigurálnunk kell a rögzítési pontot:
picture.setAnchor (új téglalap (320, 230, 100, 92));
A XSLFPictureShape elfogadja a Téglalap rögzítési pontként, amely lehetővé teszi az x / y koordináták konfigurálását az első két paraméterrel, a kép szélességét / magasságát pedig az utolsó kettővel.
4.4. Listák
A prezentáció belsejében lévő szöveget gyakran lista formájában ábrázolják, számozva vagy sem.
Most adjuk meg a felsorolás pontok listáját:
XSLFTextShape content = slide.getPlaceholder (1); XSLFTextParagraph p1 = content.addNewTextParagraph (); p1.setIndentLevel (0); p1.setBullet (true); r1 = p1.addNewTextRun (); r1.setText ("Bullet");
Hasonlóképpen meghatározhatunk számozott listát is:
XSLFTextParagraph p2 = content.addNewTextParagraph (); p2.setBulletAutoNumber (AutoNumberingScheme.alphaLcParenRight, 1); p2.setIndentLevel (1); XSLFTextRun r2 = p2.addNewTextRun (); r2.setText ("Számozott listaelem - 1");
Ha több listával dolgozunk, mindig fontos meghatározni a indentLevel az elemek megfelelő behúzásának elérése érdekében.
4.5. Táblázatok
A táblázatok egy másik kulcsobjektum egy prezentációban, és hasznosak, ha adatokat akarunk megjeleníteni.
Kezdjük egy táblázat létrehozásával:
XSLFTable tbl = slide.createTable (); tbl.setAnchor (új téglalap (50, 50, 450, 300));
Most hozzáadhatunk egy fejlécet:
int numColumns = 3; XSLFTableRow headerRow = tbl.addRow (); headerRow.setHeight (50); for (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 ("Fejléc" + (i + 1)); tbl.setColumnWidth (i, 150); }
Miután a fejléc elkészült, sorokat és cellákat adhatunk a táblázatunkhoz az adatok megjelenítéséhez:
for (int rownum = 1; rownum <numRows; rownum ++) {XSLFTableRow tr = tbl.addRow (); tr.setHeight (50); for (int i = 0; i <numColumns; i ++) {XSLFTableCell cella = tr.addCell (); XSLFTextParagraph p = cell.addNewTextParagraph (); XSLFTextRun r = p.addNewTextRun (); r.setText ("Cell" + (i * rownum + 1)); }}
A táblázatokkal való foglalkozás során fontos emlékeztetni arra, hogy testre szabható az egyes cellák szegélye és háttere.
5. A prezentáció módosítása
Nem mindig, amikor diavetítésen dolgozunk, újat kell létrehoznunk, de módosítanunk kell egy már meglévőt.
Vessünk egy pillantást az előző szakaszban létrehozottra, majd elkezdhetjük módosítani:
5.1. Prezentáció olvasása
A prezentáció elolvasása elég egyszerű, és a XMLSlideShow túlterhelt kivitelező, amely elfogadja a FileInputStream:
XMLSlideShow ppt = új XMLSlideShow (új FileInputStream ("slideshow.pptx"));
5.2. Diasorrend megváltoztatása
Diák hozzáadásakor a bemutatónkhoz célszerű a megfelelő sorrendbe állítani őket, hogy megfelelő legyen a diák.
Ha ez nem történik meg, lehetséges a diák sorrendjének újrarendezése. Lássuk, hogyan mozgathatjuk a negyedik diát a másodiká:
Diák listája = ppt.getSlides (); XSLFSlide slide = slide.get (3); ppt.setSlideOrder (dia, 1);
5.3. Diák törlése
Dia is törölhető egy prezentációból.
Nézzük meg, hogyan törölhetjük a 4. diát:
ppt.removeSlide (3);
6. Következtetés
Ez a gyors bemutató bemutatta a Apache POI API PowerPoint fájlok Java perspektívából történő olvasásához és írásához.
A cikk teljes forráskódja, mint mindig, a GitHubon található.