STACKJAVA

Apache POI – Đọc ghi file PowerPoint ppt bằng Java với Apache POI

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/

Apache POI – Đọc ghi file PowerPoint ppt bằng Java với Apache POI