Apache POI PPT - 파워포인트에서 Java로
응용 프로그램이 Power Point 파일을 편집하고 읽어야 하는 것처럼 Microsoft Office ppt 또는 pptx 형식으로 보고서를 생성해야 하는 경우가 종종 있습니다. MS Office 파일을 생성하려는 Java 프로그래머는 Java 라이브러리를 사용해야 하며 그 중에는 효율성으로 유명한 Apache 라이브러리가 있습니다.
Apache POI는 MS Office 파일을 생성, 수정 및 표시할 수 있는 API입니다. 이 오픈 소스 서점은 Apache Software Foundation에서 개발 및 배포합니다.
이 튜토리얼은 Java를 사용하여 Power Point 파일을 읽고, 만들고, 편집해야 하는 사람들을 대상으로 합니다. Apache POI 라이브러리의 필수 기능과 Power Point 파일에서 작업을 수행할 수 있는 기본 기능에 대해 설명합니다.
Apache POI는 MS Office 파일을 생성, 수정 및 표시할 수 있는 API입니다. 이 오픈 소스 서점은 Apache Software Foundation에서 개발 및 배포합니다.
이 튜토리얼은 Java를 사용하여 Power Point 파일을 읽고, 만들고, 편집해야 하는 사람들을 대상으로 합니다. Apache POI 라이브러리의 필수 기능과 Power Point 파일에서 작업을 수행할 수 있는 기본 기능에 대해 설명합니다.
Apache POI PPT
공식 웹 사이트에서 최신 버전의 Apache POI를 다운로드하여 다운로드하고(Apache POI PPT 다운로드) 프로젝트 폴더에 압축을 푼 다음 필요한 라이브러리를 애플리케이션에 연결할 수 있습니다. 다음 .jar 파일이 필요합니다.
- poi.jar
- poi-oxml.jar
- poi-oxml-schema.jar
- log4j.jar
- xmlbeans.jar
Classes and Methods
Apache POI에는 Excel, Word 및 Power Point 파일 작업을 위한 클래스와 메서드가 포함되어 있습니다. 이전 기사에서 Excel 및 Word에 대한 이러한 클래스에 대해 이미 설명했습니다. 파워포인트와 관련된 클래스를 보여드리겠습니다.
- XMLSlideShow: 프레젠테이션을 만들고 관리하려면 org.apache.poi.xslf.usermoder.
- XSLFSlide: 프레젠테이션에서 슬라이드를 만들고 관리합니다.
- XSLFSlideMaster: 다른 슬라이드 레이아웃이 포함된 프레젠테이션에 사용됩니다. XSLFSlideMaster 클래스는 이러한 레이아웃에 대한 액세스를 제공합니다.
- XSLFSlideLayout: 슬라이드의 레이아웃을 관리할 수 있습니다.
- XSLFTextParagraph: XSLFTextParagraph.
- XSLFTextRun 클래스: 이 클래스는 텍스트의 서식(하이퍼링크, colors, fonts, etc.).
- XSLFTextShape: 이 클래스는 텍스트가 포함된 도형을 처리합니다.
- XSLFHyperlink: 프레젠테이션에서 하이퍼링크를 만들 수 있습니다.
빈 Power Point 프레젠테이션 만들기
이제 Java를 사용하여 프레젠테이션을 만드는 방법을 살펴보겠습니다. 빈 프리젠테이션을 만들려면 XMLSlideShow 클래스를 인스턴스화해야 합니다.
XMLSlideShow ppt = new XMLSlideShow();
FileOutputStream을 사용하여 PPT 문서에 변경 사항을 저장합니다.
File file=new File("C://POIPPT//Examples//example1.pptx");아래 코드는 빈 PowerPoint 문서를 만드는 완전한 프로그램입니다.
FileOutputStream out = 새 FileOutputStream(파일);
ppt.write(출력);
import java.io.File;이 코드를 컴파일하고 실행하면 프로젝트 디렉토리에 다음과 같은 빈 exemple.pptx 파일이 생성됩니다.
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide를 사용합니다.
public class PowerPoint {
public static void main(String args[]) throws IOException{
//비어 있는 새 슬라이드 쇼 만들기
XMLSlideShow ppt = new XMLSlideShow();
//PPT
File file =new File("exemple.pptx");
FileOutputStream fis = 새 FileOutputStream(파일);
//파일 저장
ppt.write(fis);
System.out.println("파일이 성공적으로 생성되었습니다.");
fis.close();
}
}
PowerPoint 프레젠테이션에는 선택할 수 있는 각 슬라이드의 레이아웃이 있습니다. 먼저 사용 가능한 모든 레이아웃 목록을 찾아보겠습니다.
마스터 슬라이드라고 하는 다양한 슬라이드가 있으며 각 슬라이드 마스터에는 여러 슬라이드 레이아웃이 있습니다.
- 메서드를 사용하여 슬라이드 목록을 가져올 수 있습니다. getSlideMasters() 클래스의 XMLSlideShow.
- 각 슬라이드 마스터에서 슬라이드 레이아웃 목록을 가져올 수 있습니다. getSlideLayouts() 클래스의 XSLFSlideMaster.
- 객체에서 레이아웃 이름을 가져올 수 있습니다 레이아웃 사용 getType() 클래스의 XSLFSlideLayout.
아래 프로그램은 사용 가능한 모든 레이아웃을 PPT로 표시합니다.
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
import org.apache.poi.xslf.usermodel.XSLFSlideMaster를 사용합니다.
public class SlideLayouts {
public static void main(String args[]) throws IOException{
XMLSlideShow ppt = new XMLSlideShow();
System.out.println("사용 가능한 레이아웃");
//모든 슬라이드 목록 가져오기 masters
for(XSLFSlideMaster master: ppt.getSlideMasters()){
//각 슬라이드의 모든 슬라이드 레이아웃 목록 가져오기 master
for(XSLFSlideLayout layout : master.getSlideLayouts()){
//이름 가져오기 layout
System.out.println(layout.getType());
}
}
}
}
출력:
< / a>< / div>
< / div>
사용 가능한 레이아웃아래 그림은 MS Office 2007에서 사용할 수 있는 몇 가지 레이아웃을 보여줍니다.
BLANK
TITLE_ONLY
SECTION_HEADER
PIC_TX
TITLE_AND_CONTENT
TITLE
VERT_TX< br />VERT_TITLE_AND_TX
TWO_TX_TWO_OBJ
TWO_OBJ
OBJ_TX
< / div>
제목 레이아웃을 사용하는 슬라이드 만들기
레이아웃을 사용하는 슬라이드를 만들어 봅시다 Title:
1- 클래스를 인스턴스화하여 빈 프레젠테이션을 만듭니다 XMLSlideShow:
XMLSlideShow ppt=new XMLSlideShow();
2- 메서드를 사용하여 슬라이드 마스터 목록 가져오기 getSlideMasters()입니다. 그런 다음 인덱스가 있는 원하는 슬라이드 마스터를 선택합니다.
XSLFSlideMaster slideMaster = ppt.getSlideMasters().get(0);
여기서 배열의 위치 0에 있는 기본 슬라이드 마스터를 가져옵니다.
3- 메서드를 사용하여 레이아웃을 선택합니다. getLayout() XSLFSlideMaster 클래스의. 이 메서드는 원하는 레이아웃을 나타내는 정적 변수인 매개 변수를 허용합니다. 이 클래스에는 여러 변수가 있으며 각 변수는 슬라이드 레이아웃을 나타냅니다.
다음 코드에서는 제목 레이아웃을 만드는 방법을 보여 줍니다.
XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
4- 슬라이드 레이아웃 개체를 매개 변수로 전달하여 새 슬라이드를 만듭니다.
5- XSLFSlide 클래스의 getPlaceholder() 메서드를 사용하여 자리 표시자를 선택합니다. 이 메서드는 정수 매개 변수를 허용합니다. 값 0을 전달하면 슬라이드의 제목 텍스트 영역에 액세스하는 데 사용되는 XSLFTextSlide 객체가 제공됩니다. setText()로 제목 변경:
XSLFSlide slide = ppt.createSlide(titleLayout);
5- XSLFSlide 클래스의 getPlaceholder() 메서드를 사용하여 자리 표시자를 선택합니다. 이 메서드는 정수 매개 변수를 허용합니다. 값 0을 전달하면 슬라이드의 제목 텍스트 영역에 액세스하는 데 사용되는 XSLFTextSlide 객체가 제공됩니다. setText()로 제목 변경:
XSLFTextShape title = slide.getPlaceholder(0);
title.setText("자바코더");
전체 프로그램은 다음과 같습니다.
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 TitleLayout {
public static void main(String args[]) throws IOException{
XMLSlideShow ppt = new XMLSlideShow();
//slidemaster
XSLFSlideMaster slideMaster = ppt.getSlideMasters().get(0);
//원하는 슬라이드 레이아웃을 가져옵니다
XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
//선택한 slidelayout으로 슬라이드 만들기layout
XSLFSlide slide = ppt.createSlide(titleLayout);
//제목인 자리 표시자 0 수정
XSLFTextShape title = slide.getPlaceholder(0);
//제목 편집
title.setText("JavaCoder");
//새 pptx
파일 file=new File("Exemple.pptx");
FileOutputStream fos = 새로운 FileOutputStream(파일);
//변경사항 저장
ppt.write(fos);
System.out.println("슬라이드가 성공적으로 생성되었습니다.");
fos.close();
}
}
slide가 성공적으로 생성되었습니다
다음 단계에 따라 제목과 레이아웃을 사용하여 슬라이드를 만들어 보겠습니다.
1- 클래스를 인스턴스화하여 빈 프레젠테이션을 만듭니다 XMLSlideShow.
2- 메서드로 모든 슬라이드마스터 목록을 가져옵니다 getSlideMasters()
3- 메서드를 사용하여 원하는 레이아웃을 가져옵니다. getLayout() 클래스의 XSLFSlideMaster:
4- 레이아웃 개체를 매개변수로 전달하여 새 슬라이드를 만듭니다.
XSLFSlide slide = ppt.createSlide(SlideLayout.TITLE_AND_CONTENT);
5- getPlaceholder()를 사용하여 자리 표시자를 선택합니다.
XSLFTextShape title = slide.getPlaceholder(1);
title1.setText("소개");
6 - XSLFTextShape 클래스의 clearText() 메서드를 호출하여 슬라이드 텍스트를 지웁니다.
body.clearText();7- addNewTextParagraph() 메서드를 사용하여 새 단락을 추가합니다. 이제 addNewTextRun() 메서드를 사용하여 텍스트를 추가한 다음 setText().
body.addNewTextParagraph().addNewTextRun().setText("이것은 내 첫 번째 슬라이드 본문입니다.");전체 코드는 다음과 같습니다.
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 TitleAndBodyLayout {
public static void main(String args[]) throws IOException{
XMLSlideShow ppt = new XMLSlideShow();
//slidemaster
XSLFSlideMaster slideMaster = ppt.getSlideMasters().get(0);
//원하는 슬라이드 레이아웃을 가져옵니다
XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
//선택한 slidelayout으로 슬라이드 만들기layout
XSLFSlide slide = ppt.createSlide(titleLayout);
//제목인 자리 표시자 0 수정
XSLFTextShape title = slide.getPlaceholder(0);
//제목 편집
title.setText("소개");
//텍스트인 자리 표시자 1을 선택합니다
XSLFTextShape body = slide.getPlaceholder(1);
//오래된 내용 삭제
body.clearText();
//단락 추가
body.addNewTextParagraph().addNewTextRun().setText("첫 번째 슬라이드");
//새 pptx
파일 file=new File("Exemple.pptx");
FileOutputStream fos = 새로운 FileOutputStream(파일);
//변경사항 저장
ppt.write(fos);
System.out.println("슬라이드가 성공적으로 생성되었습니다.");
fos.close();
}
}
slide가 성공적으로 생성되었습니다
슬라이드 크기 가져오기 및 변경
슬라이드 크기는 XMLSlideShow.
java.awt.Dimension pgsize = ppt.getPageSize();
java에서 슬라이드 크기를 변경하려면 XMLSlideShow.
ppt.setPageSize(new java.awt.Dimension(1024, 768));
전체 프로그램은 다음과 같습니다.
import java.awt.Dimension;출력:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
public class ChangingSlide {
public static void main(String args[]) throws IOException{
File file = new File("Exemple.pptx");
XMLSlideShow ppt = 새 XMLSlideShow();
//현재 차원 가져오기
차원 pptsize = ppt.getPageSize();
System.out.println("현재 슬라이드 크기:");
System.out.println("너비:" + pptsize.width);
System.out.println("높이:" + pptsize.height);
//차원 변경
ppt.setPageSize(new java.awt.Dimension(1024,400));
FileOutputStream out = 새 FileOutputStream(파일);
ppt.write(출력);
System.out.println("슬라이드 크기가 변경되었습니다.");
out.close();
}
}
현재 슬라이드 크기:크기를 변경한 후 슬라이드는 다음과 같이 나타납니다.
width:720
height:540
슬라이드 크기가 변경되었습니다
setSlideOrder() 메서드를 사용하여 순서를 변경할 수 있습니다. getSlides() 메서드로 모든 슬라이드를 검색한 다음 슬라이드 표에서 선택하고 setSlideOrder() 메서드를 사용하여 순서를 변경합니다.
//세 번째 슬라이드 선택
XSLFSlide slide = slides.get(2);
//먼저 넣기
ppt.setSlideOrder(slide, 1);
다음 코드는 예를 보여줍니다.
import java.io.File;슬라이드 1과 3 사이의 스왑 전후의 표시:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide를 사용합니다.
public class ReorderSlide {
public static void main(String args[]) throws IOException{
File file=new File("exemple.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
//슬라이드 목록 검색
java.util.Listslides = ppt.getSlides();
//세 번째 슬라이드 선택
XSLFSlide selectesdslide = slides.get(2);
//첫 번째 위치에 놓습니다
ppt.setSlideOrder(selectesdslide, 0);
FileOutputStream fos = 새로운 FileOutputStream(파일);
ppt.쓰기(fos);
fos.close();
}
}