การจัดการ slide ใน PowerPoint ด้วย Apache POI

ต่อไปเรามาลองดูครับว่า เราสามารถจัดการอะไรได้บ้าง กับตัว slide ใน PowerPoint ด้วย Apache POI

การเปลี่ยนขนาด Slide
ในการเปลี่ยนขนาดของ slide นั้นเราใช้เมธอด setPageSize() ครับ
ตัวอย่างโคด
package com.java.poi.powerpoint;

import java.io.FileOutputStream;

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 ResizePowerPoint {
    public static void main(String[] args) {
        try {
            // path ของไฟล์
            String fileName = "C:\\poi\\ResizePowerPoint.pptx";
            // บันทึกเอกสารไว้ในระบบตาม path ที่ระบุ
            FileOutputStream out = new FileOutputStream(fileName);
            // สร้างภาพนิ่งเปล่าๆ
            XMLSlideShow ppt = new XMLSlideShow();
            // กำหนดขนาด slide
            ppt.setPageSize(new java.awt.Dimension(2048,1536));
            // ดึงค่า object ของ slide master 
            XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
            // ดึงค่า slide layout 
            XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
            // สร้าง  slide แรก
            XSLFSlide slide = ppt.createSlide(slidelayout);
            // ดึงค่า  place holder คือการดึงค่าตำแหน่งของข้อความที่จะใส่ตาม layout นั้นๆ 
            XSLFTextShape title = slide.getPlaceholder(0);
            // ใส่ เนื้อหาใน title 
            title.setText("Hello PowerPoint");
            
            // ดึงค่า  place holder ตัวที่สอง
            XSLFTextShape body = slide.getPlaceholder(1);
            body.clearText();
            // ใส่ เนื้อหาใน body 
            body.addNewTextParagraph().addNewTextRun().setText("this is  my first slide content.");
            
            ppt.write(out);
            out.close();
            System.out.println("slide created successfully");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ไฟล์ที่ถูกสร้าง

 ผลลัพธ์ที่ได้ 
ก่อน

หลัง


การเรียงลำดับ Slide
ในการเรียงลำดับของ slide นั้นเราใช้เมธอด setSlideOrder() ครับ
ตัวอย่างโคด

  • สร้าง slide ไว้ 4 slide

package com.java.poi.powerpoint;

import java.io.FileOutputStream;

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;

public class ReorderPowerPoint {
    public static void main(String[] args) {
        try {
            // path ของไฟล์
            String fileName = "C:\\poi\\ReorderPowerPoint.pptx";
            // บันทึกเอกสารไว้ในระบบตาม path ที่ระบุ
            FileOutputStream out = new FileOutputStream(fileName);
            // สร้างภาพนิ่งเปล่าๆ
            XMLSlideShow ppt = new XMLSlideShow();
            // ดึงค่า object ของ slide master 
            XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
            // ดึงค่า slide layout 
            XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_ONLY);
            // สร้าง  slide 1
            XSLFSlide slide1 = ppt.createSlide(slidelayout);
            slide1.getPlaceholder(0).setText("Slide Index 1");
            // สร้าง  slide 2
            XSLFSlide slide2 = ppt.createSlide(slidelayout);
            slide2.getPlaceholder(0).setText("Slide Index 2");
            // สร้าง  slide 3
            XSLFSlide slide3 = ppt.createSlide(slidelayout);
            slide3.getPlaceholder(0).setText("Slide Index 3");
            // สร้าง  slide 4
            XSLFSlide slide4 = ppt.createSlide(slidelayout);
            slide4.getPlaceholder(0).setText("Slide Index 4");
            
            ppt.write(out);
            out.close();
            System.out.println("slide created successfully");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  • slide ที่ 4 ย้ายไปไว้บนสุด
package com.java.poi.powerpoint;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;

public class MovePowerPoint {
    public static void main(String[] args) {
        try {
            // path ของไฟล์
            String fileName = "C:\\poi\\MovePowerPoint.pptx";
            // บันทึกเอกสารไว้ในระบบตาม path ที่ระบุ
            FileOutputStream out = new FileOutputStream(fileName);
            // ดึงภาพนิ่งที่สร้างก่อนหน้านั้น
            File file = new File("C:\\poi\\ReorderPowerPoint.pptx");
            XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
            // ดึงค่า slide ทั้งหมด
            XSLFSlide[] slides = ppt.getSlides();
            // เลือก slide ที่ 4 โดยลักษณะของลำดับจะเรียงตั้งแต่ 0,1,2,3...
            XSLFSlide selectesdslide= slides[3];
            // กำหนดให้ slide ที่ 4 ไว้บนสุด
            ppt.setSlideOrder(selectesdslide, 0);
            
            ppt.write(out);
            out.close();
            System.out.println("slide created successfully");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
ไฟล์ที่ถูกสร้าง

 ผลลัพธ์ที่ได้ 
ก่อน

หลัง

การลบ Slide
ในการลบของ slide นั้นเราใช้เมธอด removeSlide() ครับ
ตัวอย่างโคด
package com.java.poi.powerpoint;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.poi.xslf.usermodel.XMLSlideShow;

public class DeletePowerPoint {
    public static void main(String[] args) {
        try {
            // path ของไฟล์
            String fileName = "C:\\poi\\DeletePowerPoint.pptx";
            // บันทึกเอกสารไว้ในระบบตาม path ที่ระบุ
            FileOutputStream out = new FileOutputStream(fileName);
            
            // ดึงภาพนิ่งที่สร้างก่อนหน้านั้น
            File file = new File("C:\\poi\\ReorderPowerPoint.pptx");
            XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
            // ลบ slide ที่ 2 โดยลักษณะของลำดับจะเรียงตั้งแต่ 0,1,2,3...
            ppt.removeSlide(1);
            
            ppt.write(out);
            out.close();
            System.out.println("slide created successfully");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ไฟล์ที่ถูกสร้าง

 ผลลัพธ์ที่ได้ 
ก่อน

หลัง


About Nop

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment

0 comments:

Post a Comment