Apache POI – Đọc ghi file PowerPoint ppt bằng Java với Apache POI
1. Xử lý file PowerPoint với Apache POI
Các thành phần cơ bản của file PowerPoint và các class trong Apache POI dùng để xử lý chúng:
Presentation (1 file trình chiếu PowerPoint)
Để tạo và quản lý presentation ta sử dụng class org.apache.poi.xslf.usermodel.XMLSlideShow.
Class XMLSlideShow này dùng để tạo 1 presentation, thêm ảnh và lấy ảnh từ presentation, tạo mới Slide, chỉnh sửa kích thước trang…
Slide (1 trang trong PowerPoint)
Để tạo và quản lý 1 slide ta sử dụng class org.apache.poi.xslf.usermodel.XSLFSlide
Class XSLFSlide được dùng để lấy background, lấy slide layout, slide master, và theme..
Slide Layout
Slide Layout là khung của 1 slide:
Để quản lý Slide layout ta sử dụng class org.apache.poi.xslf.usermodel.XSLFSlideLayout
Slide Master (dùng để hiển thị các slide layout khác nhau)
Để quản lý Slide Master ta sử dụng class org.apache.poi.xslf.usermodel.XSLFSlideMaster
Class XSLFSlideMaster cho phép lấy backgroud và layout.
Text Paragraph
Text Paragraph dùng để chứa nội dung của slide
Để quản lý Text Paragraph ta dùng class org.apache.poi.xslf.usermodel.XSLFTextParagraph
Class XSLFTextParagraph cho phép tạo dòng mới, tùy chỉnh aligh, margin, thêm text run…
Text Run
Text Run được dùng để quản lý các đoạn text của 1 paragraph như tạo link, tùy chỉnh font, size,…
Để quản lý Text Run ta sử dụng class org.apache.poi.xslf.usermodel.XSLFTextRun
Một số thành phần khác
Hyperlink, comment, picture, table…
(Tham khảo trong package: org.apache.poi.xslf.usermodel)
2. Thư viện sử dụng:
<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> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.17</version> </dependency>
3. Ví dụ ghi/tạo file PowerPoint bằng Java sử dụng Apache POI
Ví dụ 1:
Tạo 1 presentation (file powerpoint) với 2 slide trống
package stackjava.com.apachepoi.ptt.demo; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.xslf.usermodel.XMLSlideShow; public class CreatePresentation { public static void main(String args[]) throws IOException { // Create an empty presentation XMLSlideShow ppt = new XMLSlideShow(); // adding new empty slides ppt.createSlide(); ppt.createSlide(); // creating an FileOutputStream object File file = new File("demo-create-presentation.pptx"); FileOutputStream out = new FileOutputStream(file); // saving the changes to a file ppt.write(out); System.out.println("successfully"); out.close(); ppt.close(); } }
Kết quả:
Ví dụ 2:
Tạo 1 presentation với 1 slide có layout là ‘Title’ và thêm nội dung cho nó:
package stackjava.com.apachepoi.ptt.demo; 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 CreateLayout { public static void main(String args[]) throws IOException { // Create an empty presentation XMLSlideShow ppt = new XMLSlideShow(); // Create Slide with SlideLayout = Title XSLFSlideMaster slideMaster = ppt.getSlideMasters().get(0); XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE); XSLFSlide slide = ppt.createSlide(titleLayout); XSLFTextShape title1 = slide.getPlaceholder(0); // setting the title init title1.setText("stackjava.com"); // creating an FileOutputStream object File file = new File("demo-create-layout.pptx"); FileOutputStream out = new FileOutputStream(file); // saving the changes to a file ppt.write(out); System.out.println("successfully"); out.close(); ppt.close(); } }
Kết quả:
Ví dụ 3:
Chèn text, link vào slide và định dạng text
package stackjava.com.apachepoi.ptt.demo; 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.XSLFTextParagraph; import org.apache.poi.xslf.usermodel.XSLFTextRun; import org.apache.poi.xslf.usermodel.XSLFTextShape; public class InsertTextLink { public static void main(String args[]) throws IOException { // Create an empty presentation XMLSlideShow ppt = new XMLSlideShow(); // Create Slide with SlideLayout = Title XSLFSlideMaster slideMaster = ppt.getSlideMasters().get(0); XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT); XSLFSlide slide = ppt.createSlide(titleLayout); XSLFTextShape title = slide.getPlaceholder(0); // setting the title init title.setText("stackjava.com"); XSLFTextShape body = slide.getPlaceholder(1); // adding new paragraph XSLFTextParagraph paragraph = body.addNewTextParagraph(); // creating text run object XSLFTextRun textRun1 = paragraph.addNewTextRun(); textRun1.setText("Text bold and color RED"); // setting color to the text textRun1.setFontColor(java.awt.Color.RED); textRun1.setBold(true); // setting font size to the text textRun1.setFontSize(20.0); // add new line paragraph.addLineBreak(); XSLFTextRun textRun2 = paragraph.addNewTextRun(); textRun2.setText("Text color blue"); textRun2.setFontColor(java.awt.Color.BLUE); paragraph.addLineBreak(); XSLFTextRun textRun3 = paragraph.addNewTextRun(); textRun3.setText("stackjava.com"); XSLFHyperlink link = textRun3.createHyperlink(); link.setAddress("https://stackjava.com/"); // creating an FileOutputStream object File file = new File("demo-insert-link-text.pptx"); FileOutputStream out = new FileOutputStream(file); // saving the changes to a file ppt.write(out); System.out.println("successfully"); out.close(); ppt.close(); } }
Kết quả:
Okay, Done!
Download code ví dụ trên tại đây
References:
http://poi.apache.org/slideshow/