Apache-poi-ppt-quick-guide
Apache POI PPT-概要
多くの場合、Microsoft Officeファイル形式でレポートを生成するにはソフトウェアアプリケーションが必要です。 場合によっては、アプリケーションがMS-Officeファイルを入力データとして受け取ることさえ期待されます。
出力としてMS Officeファイルを作成したいJavaプログラマーは、事前定義された読み取り専用APIを使用して作成する必要があります。
Apache POIとは何ですか?
Apache POIは、プログラマーがJavaプログラムを使用してMS-Officeファイルを作成、変更、表示できる一般的なAPIです。 これは、Apache Software Foundationによって開発および配布されたオープンソースライブラリです。 ユーザー入力データまたはファイルをMS Officeドキュメントにデコードするクラスとメソッドが含まれています。
Apache POIのコンポーネント
Apache POIには、MS-OfficeのすべてのOLE2複合ドキュメントで動作するクラスとメソッドが含まれています。 このAPIのコンポーネントのリストは以下のとおりです-
- * POIFS(難読化実装ファイルシステム)*-このコンポーネントは、他のすべてのPOI要素の基本的な要素です。 異なるファイルを明示的に読み取るために使用されます。
- * HSSF(恐ろしいスプレッドシート形式)*-MS-Excelファイルの.xls形式の読み取りおよび書き込みに使用されます。
- * XSSF(XML SpreadSheet Format)*-MS-Excelの.xlsxファイル形式に使用されます。
- * HPSF(恐ろしいプロパティセット形式)*-MS-Officeファイルのプロパティセットを抽出するために使用されます。
- * HWPF(Horrible Word Processor Format)-MS-Wordの *.doc 拡張ファイルの読み取りおよび書き込みに使用されます。
- * XWPF(XMLワープロ形式)*-MS-Wordの.docx拡張子ファイルを読み書きするために使用されます。
- * HSLF(恐ろしいスライドレイアウト形式)*-PowerPointプレゼンテーションの読み取り、作成、および編集に使用されます。
- * HDGF(Horrible DiaGram Format)*-MS-Visioバイナリファイルのクラスとメソッドが含まれています。
- * HPBF(Horrible PuBlisher Format)*-MS-Publisherファイルの読み取りと書き込みに使用されます。
このチュートリアルでは、Javaを使用してMicrosoft PowerPointプレゼンテーションで作業するプロセスをガイドします。 したがって、説明は* XSLFコンポーネント*に限定されます。
注意-POIの古いバージョンは、doc、xls、pptなどのバイナリファイル形式をサポートしています。 バージョン3.5以降、POIはdocx、xlsx、pptxなどのMS-OfficeのOOXMLファイル形式をサポートします。
Java PPT APIのフレーバー
この章では、Java PowerPoint APIのフレーバーとその機能について説明します。 Java PPT関連のAPIを提供するベンダーは多数あります。それらのいくつかはこの章で検討されます。
Aspose Slides for Java
Aspose slides for Javaは純粋にライセンスされたJava PPT APIであり、ベンダー Aspose によって開発および配布されています。 このAPIの最新バージョンは8.1.2で、2014年7月にリリースされました。 これは、スライドの読み取り、書き込み、および管理が可能なPPTコンポーネントを設計するための、リッチで重いAPI(プレーンなJavaクラスとAWTクラスの組み合わせ)です。
このAPIの一般的な使用法は次のとおりです-
- 動的なプレゼンテーションを作成する
- 忠実度の高いプレゼンテーションのレンダリングと印刷
- プレゼンテーションの生成、編集、変換、印刷
アパッチPOI
Apache POIは、Apache Software Foundationが提供する100%オープンソースライブラリです。 中小規模のアプリケーション開発者のほとんどは、Apache POI(HSLF + XSLF)に大きく依存しています。 PPTライブラリのすべての基本機能をサポートしています。ただし、レンダリングとテキスト抽出が主な機能です。 以下に、PPT用のApache POIのアーキテクチャを示します。
Apache POI PPT-インストール
この章では、WindowsおよびLinuxベースのシステムでApache POIを設定するプロセスについて説明します。 Apache POIは簡単にインストールして現在のJava環境に統合でき、複雑なセットアップ手順なしでいくつかの簡単な手順を実行できます。 インストールにはユーザー管理が必要です。
システム要求
JDK | Java SE 2 JDK 1.5 or above |
Memory | 1 GB RAM (recommended) |
Disk Space | No minimum requirement |
Operating System Version | Windows XP or above, Linux |
Apache POIをインストールする手順に進みましょう。
ステップ1:Javaインストールを確認する
まず、システムにJava Software Development Kit(SDK)をインストールする必要があります。 これを確認するには、作業しているプラットフォームに応じて、次の2つのコマンドのいずれかを実行します。
Javaインストールが適切に行われている場合、Javaインストールの現在のバージョンと仕様が表示されます。 サンプル出力を次の表に示します。
Platform | Command | Sample Output |
---|---|---|
Windows |
Open Command Console and type −
a |
Javaバージョン「1.7.0_60」 Java(TM)SEランタイム 環境(ビルド1.7.0_60-b19) Java Hotspot(TM)64ビットサーバー VM(ビルド24.60-b09、混合モード) |
Linux |
Open Command terminal and type −
a |
Javaバージョン "1.7.0_25" JDKランタイム環境を開く(rhel-2.3.10.4.el6_4-x86_64) JDK 64ビットサーバーVMを開く(ビルド23.7-b01、混合モード) |
- このチュートリアルの読者は、システムにJava SDKバージョン1.7.0_60がインストールされていることを前提としています。
- Java SDKがない場合は、https://www.oracle.com/technetwork/java/javase/downloads/indexlから現在のバージョンをダウンロードしてインストールしてください。
ステップ2:Java環境を設定する
Javaがマシンにインストールされているベースディレクトリの場所を指すように、環境変数JAVA_HOMEを設定します。 例えば、
Platform | Description |
---|---|
Windows | Set JAVA_HOME to C:\ProgramFiles\java\jdk1.7.0_60 |
Linux | Export JAVA_HOME =/usr/local/java-current |
Javaコンパイラの場所の完全パスをシステムパスに追加します。
Platform | Description |
---|---|
Windows | Append the String "C:\Program Files\Java\jdk1.7.0_60\bin" to the end of the system variable PATH. |
Linux | Export PATH = $PATH:$JAVA_HOME/bin/ |
上記で説明したように、コマンドプロンプトからコマンド java -version を実行します。
ステップ3:Apache POIライブラリをインストールする
[[1]] POIをダウンロードし、必要なライブラリをJavaプログラムにリンクできるフォルダにそのコンテンツを解凍します。 ファイルがCドライブのフォルダーに収集されると仮定します。
次の画像は、ダウンロードしたフォルダ内のディレクトリとファイル構造を示しています-
上記の画像で強調表示されている5つの jars の完全なパスをCLASSPATHに追加します。
Platform | Description |
---|---|
Windows |
Append the following strings to the end of the user variable CLASSPATH − 「C:\ poi-3.9 \ poi-3.9-20121203.jar;」 「C:\ poi-3.9 \ poi-ooxml-3.9-20121203.jar;」 「C:\ poi-3.9 \ poi-ooxml-schemas-3.9-20121203.jar;」 「C:\ poi-3.9 \ ooxml-lib \ dom4j-1.6.1.jar;」 「C:\ poi-3.9 \ ooxml-lib \ xmlbeans-2.3.0.jar;。;」 |
Linux |
Export CLASSPATH = $CLASSPATH: /usr/share/poi-3.9/poi-3.9-20121203.tar: /usr/share/poi-3.9/poi-ooxml-schemas-3.9-20121203.tar: /usr/share/poi-3.9/poi-ooxml-3.9-20121203.tar: /usr/share/poi-3.9/ooxml-lib/dom4j-1.6.1.tar: /usr/share/poi-3.9/ooxml-lib/xmlbeans-2.3.0.tar |
pom.xml
以下は、このチュートリアルのプログラムを実行するためのpom.xmlファイルです。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ApachePoiPPT</groupId>
<artifactId>ApachePoiPPT</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
</dependencies>
</project>
Apache POI PPT-クラスとメソッド
この章では、Javaプログラムを使用してPPTファイルを操作するために重要なApache POI APIのいくつかのクラスとメソッドについて学習します。
プレゼンテーション
プレゼンテーションを作成および管理するには、パッケージ_org.apache.poi.xslf.usermodel_にXMLSlideShowというクラスがあります。 以下に、このクラスの重要なメソッドとコンストラクターを示します。
クラス-XMLSlideShow
パッケージ-org.apache.poi.xslf.usermodel
S.No | Constructor & Description |
---|---|
1 |
XMLSlideShow(java.io.InputStream inputStream) inputstreamクラスオブジェクトを渡すことで、このクラスをインスタンス化できます。 |
S.No | Methods & Description |
---|---|
1 |
int addPicture (byte[] pictureData, int format) この方法を使用すると、プレゼンテーションに画像を追加できます。 |
2 |
XSLFSlide createSlide() プレゼンテーションに空白のスライドを作成します。 |
3 |
XSLFSlide createSlide(XSLFSlideLayout layout) 指定されたスライドレイアウトでスライドを作成します。 |
4 |
java.util.List <XSLFPictureData> getAllPictures() プレゼンテーション内のすべての画像の配列を返します。 |
5 |
java.awt.Dimension getPageSize() この方法を使用すると、現在のページサイズを知ることができます。 |
6 |
XSLFSlideMaster[] getSlideMasters() プレゼンテーション内のすべてのスライドの配列を返します。 |
7 |
XSLFSlide[] getSlides() プレゼンテーション内のすべてのスライドを返します。 |
8 |
XSLFSlide removeSlide(int index) この方法を使用すると、プレゼンテーションからスライドを削除できます。 |
9 |
void setPageSize(java.awt.Dimension pgSize) この方法を使用すると、ページサイズをリセットできます。 |
10 |
void setSlideOrder(XSLFSlide slide, int newIndex) この方法を使用すると、スライドを並べ替えることができます。 |
滑り台
プレゼンテーションでスライドを作成および管理するには、 XSLFSlide クラスのメソッドが使用されます。 このクラスのいくつかの重要なメソッドを以下に示します。
クラス-XSLFSlide
パッケージ-org.apache.poi.xslf.usermodel
S.No | Method & Description |
---|---|
1 |
XSLFBackground getBackground() スライドの背景の色やアンカーなどの詳細を取得するために使用できる XSLFBackground オブジェクトを返します。 このオブジェクトを使用して、スライドに図形を描くこともできます。 |
2 |
XSLFSlideLayout getSlideLayout() 現在のスライドの XSLFSlideLayout オブジェクトへのアクセスを提供します。 |
3 |
XSLFSlideMaster getSlideMaster() 現在のスライドのスライドマスターへのアクセスを提供します。 |
4 |
XSLFTheme getTheme() 現在のスライドの XSLFTheme オブジェクトを返します。 |
5 |
java.lang.String getTitle() 現在のスライドのタイトルを返します。 |
6 |
XSLFSlide importContent(XSLFSheet src) 別のスライドの内容をこのスライドにコピーします。 |
スライドマスター
これは、異なるスライドレイアウトを持つプレゼンテーションのコンポーネントです。 XSLFSlideMaster クラスからアクセスできます。 以下に、このクラスの重要なメソッドをいくつか示します。
クラス-XSLFSlideMaster
パッケージ-org.apache.poi.xslf.usermodel
S.No | Method & Description |
---|---|
1 |
XSLFBackground getBackground() スライドマスターの共通の背景を返します。 |
2 |
XSLFSlideLayout getLayout(SlideLayout type) XSLFSlideLayoutオブジェクトを返します。 |
3 |
XSLFSlideLayout[] getSlideLayouts() このスライドマスターのすべてのスライドレイアウトを返します。 |
スライドレイアウト
POIライブラリには XSLFSlideLayout というクラスがあり、これを使用してスライドのレイアウトを管理できます。
クラス-XSLFSlideLayout
パッケージ-org.apache.poi.xslf.usermodel
S.No | Method & Description |
---|---|
1 |
void copyLayout(XSLFSlide slide) このメソッドは、このレイアウトからプレースホルダーを指定されたスライドにコピーします。 |
テキスト段落
*XSLFTextParagraph* クラスを使用して、スライドにコンテンツを書き込むことができます。 以下に、このクラスのいくつかの重要なメソッドを示します。
クラス-XSLFTextParagraph
パッケージ-org.apache.poi.xslf.usermodel
S.No | Method & Description |
---|---|
1 |
XSLFTextRun addLineBreak() 段落に改行を挿入します。 |
2 |
XSLFTextRun addNewTextRun() 段落にテキストの新しい実行を追加します。 |
3 |
void setBulletAutoNumber(ListAutoNumber scheme, int startAt) 段落に自動番号付き箇条書きを適用します。 |
4 |
void setIndent(double value) 段落内のテキストにインデントを設定します。 |
5 |
void setLeftMargin(double value) このメソッドは、段落の左マージンを追加するために使用されます。 |
6 |
void setLineSpacing(double linespacing) このメソッドは、段落内の行間隔を設定するために使用されます。 |
7 |
void setTextAlign(TextAlign align) このメソッドは、段落に設定される配置を設定するために使用されます。 |
テキストラン
これは、テキスト本文内のテキスト分離の最低レベルです。 段落のテキストランを管理する XSLFTextRun クラスがあります。 以下に、このクラスのいくつかの重要なメソッドを示します。
クラス-XSLFTextParagraph
パッケージ-org.apache.poi.xslf.usermodel
S.No | Method & Description |
---|---|
1 |
XSLFHyperlink createHyperlink() プレゼンテーションにハイパーリンクを作成します。 |
2 |
XSLFHyperlink getHyperlink() このメソッドは、ハイパーリンクを取得するために使用されます。 |
3 |
java.lang.String getText() このTextノードの値をJava文字列として返します。 |
4 |
void setBold(boolean bold) このメソッドは、太字でテキストを設定するために使用されます。 |
5 |
void setCharacterSpacing(double spc) テキストラン内の文字間の間隔を設定します。 |
6 |
void setFontColor(java.awt.Color color) テキストのフォントの色を設定します。 |
7 |
void setFontSize(double fontSize) テキストのフォントサイズを設定します。 |
8 |
void setItalic(boolean italic) このメソッドは、段落を斜体にするために使用されます。 |
9 |
void setStrikethrough(boolean strike) このメソッドは、一連のテキストを取り消し線テキストとしてフォーマットするために使用されます。 |
10 |
void setSubscript(boolean flag) このメソッドは、テキストを下付き文字としてフォーマットするために使用されます。 |
11 |
void setSuperscript(boolean flag) このメソッドは、この実行のテキストを上付き文字としてフォーマットするために使用されます。 |
12 |
void setText(java.lang.String text) このメソッドは、実行時にテキストを設定するために使用されます。 |
13 |
void setUnderline(boolean underline) このメソッドは、テキストランでテキストに下線を引くために使用されます。 |
テキスト形状
PPTには、テキストを保持できる図形があります。 XSLFTextShape クラスを使用してこれらを管理できます。 以下に、このクラスの重要なメソッドをいくつか示します。
クラス-XSLFTextShape
パッケージ-org.apache.poi.xslf.usermodel
S.No | Method & Description |
---|---|
1 |
void setPlaceholder(Placeholder placeholder) この方法を使用すると、プレースホルダーを選択できます。 |
2 |
Placeholder getTextType() 現在のプレースホルダーのタイプを返します。 |
3 |
void clearText() 現在のテキストシェイプのテキスト領域をクリアします。 |
4 |
XSLFTextParagraph addNewTextParagraph() 図形に新しい段落の実行を追加します。 |
5 |
void drawContent(java.awt.Graphics2D graphics) このメソッドを使用すると、スライドにコンテンツを描画できます。 |
ハイパーリンク
POIライブラリには XSLFHyperlink というクラスがあり、これを使用してプレゼンテーションにハイパーリンクを作成できます。 以下に、このクラスの重要なメソッドをいくつか示します。
クラス-XSLFHyperlink
パッケージ-org.apache.poi.xslf.usermodel
S.No | Method & Description |
---|---|
1 |
java.net.URI getTargetURL() プレゼンテーションのスライドに存在するURLを返します。 |
2 |
void setAddress(java.lang.String address) このメソッドは、アドレスをURLに設定するために使用されます。 |
3 |
void setAddress(XSLFSlide slide) プレゼンテーションのスライドにあるURLにアドレスを設定します。 |
Apache POI PPT-プレゼンテーション
通常、プレゼンテーションの作成にはMS-PowerPointを使用します。 ここで、Javaを使用してプレゼンテーションを作成する方法を見てみましょう。 この章を完了すると、新しいMS-PowerPointプレゼンテーションを作成し、Javaプログラムで既存のPPTを開くことができます。
空のプレゼンテーションを作成する
空のプレゼンテーションを作成するには、_org.poi.xslf.usermodel_パッケージの XMLSlideShow クラスをインスタンス化する必要があります-
XMLSlideShow ppt = new XMLSlideShow();
*FileOutputStream* クラスを使用して、PPTドキュメントへの変更を保存します-
File file = new File("C://POIPPT//Examples//example1.pptx");
FileOutputStream out = new FileOutputStream(file);
ppt.write(out);
以下は、空のMS-PowerPointプレゼンテーションを作成するための完全なプログラムです。
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
public class CreatePresentation {
public static void main(String args[]) throws IOException {
//creating a new empty slide show
XMLSlideShow ppt = new XMLSlideShow();
//creating an FileOutputStream object
File file = new File("example1.pptx");
FileOutputStream out = new FileOutputStream(file);
//saving the changes to a file
ppt.write(out);
System.out.println("Presentation created successfully");
out.close()
}
}
上記のJavaコードを CreatePresentation.java として保存し、コマンドプロンプトから次のようにコンパイルして実行します-
$javac CreatePresentation.java
$java CreatePresentation
システム環境がPOIライブラリで構成されている場合、現在のディレクトリに example1.pptx という名前の空のPPTファイルを生成するためにコンパイルおよび実行され、コマンドプロンプトに次の出力が表示されます-
Presentation created successfully
空白のPowerPointドキュメントは次のように表示されます-
既存のプレゼンテーションの編集
既存のプレゼンテーションを開くには、 XMLSlideShow クラスをインスタンス化し、編集するファイルの FileInputStream オブジェクトを引数として XMLSlideShow コンストラクターに渡します。
File file = new File(“C://POIPPT//Examples//example1.pptx”);
FileInputstream inputstream = new FileInputStream(file);
XMLSlideShow ppt = new XMLSlideShow(inputstream);
_org.poi.xslf.usermodel_パッケージにあるXMLSlideShowクラスの* createSlide()*メソッドを使用して、プレゼンテーションにスライドを追加できます。
XSLFSlide slide1 = ppt.createSlide();
以下は、既存のPPTにスライドを開いて追加するための完全なプログラムです-
import java.io.File;
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 EditPresentation {
public static void main(String ar[]) throws IOException {
//opening an existing slide show
File file = new File("example1.pptx");
FileInputStream inputstream = new FileInputStream(file);
XMLSlideShow ppt = new XMLSlideShow(inputstream);
//adding slides to the slodeshow
XSLFSlide slide1 = ppt.createSlide();
XSLFSlide slide2 = ppt.createSlide();
//saving the changes
FileOutputStream out = new FileOutputStream(file);
ppt.write(out);
System.out.println("Presentation edited successfully");
out.close();
}
}
上記のJavaコードを EditPresentation.java として保存し、次のようにコマンドプロンプトからコンパイルして実行します-
$javac EditPresentation.java
$java EditPresentation
次の出力を生成するためにコンパイルおよび実行されます-
slides successfully added
スライドが新しく追加された出力PPTドキュメントは次のようになります-
PPTにスライドを追加した後、スライドで操作を追加、実行、読み取り、および書き込みできます。
Apache POI PPT-スライドレイアウト
前の章では、空のスライドを作成する方法と、スライドを追加する方法を見てきました。 この章では、利用可能なスライドのリストを取得する方法と、さまざまなレイアウトでスライドを作成する方法を学びます。
利用可能なスライドレイアウト
PowerPointプレゼンテーションにはスライドレイアウトがあり、目的のレイアウトを選択してスライドを編集できます。 まず、利用可能なすべてのスライドレイアウトのリストを調べてみましょう。
- さまざまなスライドマスターがあり、各スライドマスターにはいくつかのスライドレイアウトがあります。
- XMLSlideShow クラスの* getSlideMasters()*メソッドを使用して、スライドマスターのリストを取得できます。
- XSLFSlideMaster クラスの* getSlideLayouts()*メソッドを使用して、各スライドマスターからスライドレイアウトのリストを取得できます。
- XSLFSlideLayout クラスの* getType()*メソッドを使用して、レイアウトオブジェクトからスライドレイアウトの名前を取得できます。
注意-これらのクラスはすべて_org.poi.xslf.usermodel_パッケージに属します。
PPTで利用可能なスライドレイアウトのリストを取得するための完全なプログラムを以下に示します-
import java.io.FileInputStream;
import java.io.FileNotFoundException;
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 {
//create an empty presentation
XMLSlideShow ppt = new XMLSlideShow();
System.out.println("Available slide layouts:")
//getting the list of all slide masters
for(XSLFSlideMaster master : ppt.getSlideMasters()) {
//getting the list of the layouts in each slide master
for(XSLFSlideLayout layout : master.getSlideLayouts()) {
//getting the list of available slides
System.out.println(layout.getType());
}
}
}
}
上記のJavaコードを SlideLayouts.java として保存し、コマンドプロンプトから次のようにコンパイルして実行します-
$javac SlideLayouts.java
$java SlideLayouts
次の出力を生成するためにコンパイルおよび実行されます-
Available slide layouts:
TITLE
PIC_TX
VERT_TX
TWO_TX_TWO_OBJ
BLANK
VERT_TITLE_AND_TX
TITLE_AND_CONTENT
TITLE_ONLY
SECTION_HEADER
TWO_OBJ
OBJ_TX
以下に、MS-Office 360、2013エディションで使用可能なサンプルスライドレイアウトの一部を示します。
タイトルレイアウト
タイトルレイアウトを使用してPPTでスライドを作成します。 以下の手順に従ってください-
ステップ1 *-以下に示すように *XMLSlideShow クラスをインスタンス化して、空のプレゼンテーションを作成します。
XMLSlideShow ppt = new XMLSlideShow();
ステップ2 *- getSlideMasters()*メソッドを使用して、スライドマスターのリストを取得します。 その後、下に示すようにインデックスを使用して目的のスライドマスターを選択します。
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
ここでは、スライドマスターアレイの0 ^ th ^位置にあるデフォルトのスライドマスターを取得しています。
ステップ3 *- *XSLFSlideMaster クラスの* getLayout()メソッドを使用して、目的のレイアウトを取得します。 このメソッドは、目的のレイアウトを表す *SlideLayoutclass の静的変数のいずれかを渡す必要があるパラメーターを受け入れます。 このクラスにはいくつかの変数があり、各変数はスライドレイアウトを表します。
以下に示すコードスニペットは、タイトルレイアウトを作成する方法を示しています-
XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
- ステップ4 *-パラメーターとしてスライドレイアウトオブジェクトを渡すことにより、新しいスライドを作成します。
XSLFSlide slide = ppt.createSlide(titleLayout);
ステップ5 *- *XSLFSlide クラスの* getPlaceholder()メソッドを使用してプレースホルダーを選択します。 このメソッドは整数パラメーターを受け入れます。 *0 を渡すと、 XSLFTextShape オブジェクトが取得されます。これを使用して、スライドのタイトルテキスト領域にアクセスできます。 以下に示すようにsetText()メソッドを使用してタイトルを設定します。
XSLFTextShape title1 = slide.getPlaceholder(0);
//setting the title init
title1.setText("Tutorials point");
以下は、プレゼンテーションのタイトルレイアウトでスライドを作成するための完全なプログラムです。
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 {
//creating presentation
XMLSlideShow ppt = new XMLSlideShow();
//getting the slide master object
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
//get the desired slide layout
XSLFSlideLayout titleLayout = slideMaster.getLayout(SlideLayout.TITLE);
//creating a slide with title layout
XSLFSlide slide1 = ppt.createSlide(titleLayout);
//selecting the place holder in it
XSLFTextShape title1 = slide1.getPlaceholder(0);
//setting the title init
title1.setText("Tutorials point");
//create a file object
File file = new File("C://POIPPT//Examples//Titlelayout.pptx");
FileOutputStream out = new FileOutputStream(file);
//save the changes in a PPt document
ppt.write(out);
System.out.println("slide cretated successfully");
out.close();
}
}
上記のJavaコードをTitleLayout.javaとして保存し、次のようにコマンドプロンプトからコンパイルして実行します-
$javac TitleLayout.java
$java TitleLayout
コンパイルして実行し、次の出力を生成します。
slide created successfully
新しく追加されたタイトルレイアウトスライドを含むPPTドキュメントは、次のように表示されます-
タイトルとコンテンツのレイアウト
タイトルとコンテンツレイアウトを使用して、PPTでスライドを作成します。 以下の手順に従ってください。
ステップ1 *-以下に示すように *XMLSlideShow クラスをインスタンス化して、空のプレゼンテーションを作成します。
XMLSlideShow ppt = new XMLSlideShow();
ステップ2 *- getSlideMasters()*メソッドを使用して、スライドマスターのリストを取得します。 以下に示すインデックスを使用して、目的のスライドマスターを選択します。
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
ここでは、スライドマスターアレイの0番目の場所にあるデフォルトのスライドマスターを取得しています。
ステップ3 *- *XSLFSlideMaster クラスの* getLayout()メソッドを使用して、目的のレイアウトを取得します。 このメソッドは、目的のレイアウトを表す *SlideLayout クラスの静的変数の1つを渡す必要があるパラメーターを受け入れます。 このクラスには、スライドレイアウトを表すいくつかの変数があります。
次のコードスニペットは、タイトルとコンテンツのレイアウトを作成する方法を示しています-
XSLFSlideLayout contentlayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
- ステップ4 *-スライドレイアウトオブジェクトをパラメーターとして渡すことにより、新しいスライドを作成します。
XSLFSlide slide = ppt.createSlide(SlideLayout.TITLE_AND_CONTENT);
ステップ5 *- *XSLFSlide クラスの* getPlaceholder()メソッドを使用してプレースホルダーを選択します。 このメソッドは整数パラメーターを受け入れます。 *1 を渡すと、 XSLFTextShape オブジェクトが取得され、これを使用してスライドのコンテンツ領域にアクセスできます。 以下に示すようにsetText()メソッドを使用してタイトルを設定します。
XSLFTextShape title1 = slide1.getPlaceholder(1);
//setting the title init
title1.setText("Introduction");
ステップ6 *- *XSLFTextShape クラスの* clearText()*メソッドを使用して、スライド内の既存のテキストをクリアします。
body.clearText();
ステップ7 *- addNewTextParagraph()メソッドを使用して新しい段落を追加します。 * addNewTextRun()*メソッドを使用して、新しいテキストランを段落に追加します。 次に、テキストランに、以下に示すように setText()*メソッドを使用してテキストを追加します。
body.addNewTextParagraph().addNewTextRun().setText("this is my first slide body");
以下は、プレゼンテーションのタイトルレイアウトでスライドを作成するための完全なプログラムです。
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 {
//creating presentation
XMLSlideShow ppt = new XMLSlideShow();
//getting the slide master object
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
//select a layout from specified list
XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
//creating a slide with title and content layout
XSLFSlide slide = ppt.createSlide(slidelayout);
//selection of title place holder
XSLFTextShape title = slide.getPlaceholder(0);
//setting the title in it
title.setText("introduction");
//selection of body placeholder
XSLFTextShape body = slide.getPlaceholder(1);
//clear the existing text in the slide
body.clearText();
//adding new paragraph
body.addNewTextParagraph().addNewTextRun().setText("this is my first slide body");
//create a file object
File file = new File("contentlayout.pptx");
FileOutputStream out = new FileOutputStream(file);
//save the changes in a file
ppt.write(out);
System.out.println("slide cretated successfully");
out.close();
}
}
上記のJavaコードを TitleLayout.java として保存し、次のようにコマンドプロンプトからコンパイルして実行します-
$javac TitleLayout.java
$java TitleLayout
次の出力を生成するためにコンパイルおよび実行されます-
slide created successfully
新しく追加されたタイトルレイアウトスライドを含むPPTドキュメントは、次のように表示されます-
同様に、異なるレイアウトのスライドを作成することもできます。
Apache POI PPT-スライド管理
この章を完了すると、スライドの削除、並べ替え、読み取りおよび書き込み操作を実行できるようになります。
スライドを変更する
*XMLSlideShow* クラスの* setPageSize()*メソッドを使用して、スライドのページサイズを変更できます。
以下に示すように、最初にプレゼンテーションを作成します-
File file = new File("C://POIPPT//Examples//TitleAndContentLayout.pptx");
//create presentation
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
*XMLSlideShow* クラスの* getPageSize()*メソッドを使用して、現在のスライドのサイズを取得します。
java.awt.Dimension pgsize = ppt.getPageSize();
- setPageSize()*メソッドを使用してページのサイズを設定します。
ppt.setPageSize(new java.awt.Dimension(1024, 768));
スライドのサイズを変更するための完全なプログラムは以下のとおりです-
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 {
//create file object
File file = new File("TitleAndContentLayout.pptx");
//create presentation
XMLSlideShow ppt = new XMLSlideShow();
//getting the current page size
java.awt.Dimension pgsize = ppt.getPageSize();
int pgw = pgsize.width;//slide width in points
int pgh = pgsize.height;//slide height in points
System.out.println("current page size of the PPT is:");
System.out.println("width :" + pgw);
System.out.println("height :" + pgh);
//set new page size
ppt.setPageSize(new java.awt.Dimension(2048,1536));
//creating file object
FileOutputStream out = new FileOutputStream(file);
//saving the changes to a file
ppt.write(out);
System.out.println("slide size changed to given dimentions ");
out.close();
}
}
上記のJavaコードを ChangingSlide.java として保存し、次のようにコマンドプロンプトからコンパイルして実行します-
$javac ChangingSlide.java
$java ChangingSlide
コンパイルして実行し、次の出力を生成します。
current page size of the presentation is :
width :720
height :540
slide size changed to given dimensions
以下は、スライドサイズを変更する前のプレゼンテーションのスナップショットです-
サイズを変更した後、スライドは次のように表示されます-
スライドの並べ替え
- setSlideOrder()*メソッドを使用してスライドの順序を設定できます。 以下に、スライドの順序を設定する手順を示します。
以下に示すように、既存のPPTドキュメントを開きます-
File file = new File("C://POIPPT//Examples//example1.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
以下に示すように* getSlides()*メソッドを使用してスライドを取得します-
XSLFSlide[] slides = ppt.getSlides();
スライドの配列からスライドを選択し、以下に示すように* setSlideOrder()*メソッドを使用して順序を変更します-
//selecting the fourth slide
XSLFSlide selectesdslide = slides[4];
//bringing it to the top
ppt.setSlideOrder(selectesdslide, 1);
プレゼンテーション内のスライドを並べ替える完全なプログラムを以下に示します-
import java.io.File;
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 {
//opening an existing presentation
File file = new File("example1.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
//get the slides
XSLFSlide[] slides = ppt.getSlides();
//selecting the fourth slide
XSLFSlide selectesdslide = slides[13];
//bringing it to the top
ppt.setSlideOrder(selectesdslide, 0);
//creating an file object
FileOutputStream out = new FileOutputStream(file);
//saving the changes to a file
ppt.write(out);
out.close();
}
}
上記のJavaコードを ReorderSlide.java として保存し、コマンドプロンプトから次のようにコンパイルして実行します-
$javac ReorderSlide.java
$java ReorderSlide
コンパイルして実行し、次の出力を生成します。
Reordering of the slides is done
以下は、スライドを並べ替える前のプレゼンテーションのスナップショットです-
スライドを並べ替えると、次のようにプレゼンテーションが表示されます。 ここで、画像付きのスライドを選択し、上部に移動しました。
スライドを削除する
- removeSlide()*メソッドを使用してスライドを削除できます。 以下の手順に従って、スライドを削除します。
以下に示すように、 XMLSlideShow クラスを使用して既存のプレゼンテーションを開きます-
File file = new File("C://POIPPT//Examples//image.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
- removeSlide()*メソッドを使用して、必要なスライドを削除します。 このメソッドは整数パラメーターを受け入れます。 削除するスライドのインデックスをこのメソッドに渡します。
ppt.removeSlide(1);
以下は、プレゼンテーションからスライドを削除するプログラムです-
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
public class Deleteslide {
public static void main(String args[]) throws IOException {
//Opening an existing slide
File file = new File("image.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
//deleting a slide
ppt.removeSlide(1);
//creating a file object
FileOutputStream out = new FileOutputStream(file);
//Saving the changes to the presentation
ppt.write(out);
out.close();
}
}
上記のJavaコードを Deleteslide.java として保存し、コマンドプロンプトから次のようにコンパイルして実行します-
$javac Deleteslide.java
$java Deleteslide
次の出力を生成するためにコンパイルおよび実行されます-
reordering of the slides is done
以下のスナップショットは、スライドを削除する前のプレゼンテーションのものです-
スライドを削除した後、プレゼンテーションは次のように表示されます-
Apache POI PPT-画像
この章では、PPTに画像を追加する方法と、PPTから画像を読み取る方法を学習します。
画像を追加する
*XSLFSlide* の* createPicture()*メソッドを使用して、プレゼンテーションに画像を追加できます。 このメソッドは、バイト配列形式の画像を受け入れます。 したがって、プレゼンテーションに追加する画像のバイト配列を作成する必要があります。
指定された手順に従って、プレゼンテーションに画像を追加します。 以下に示すように、 XMLSlideShow を使用して空のスライドショーを作成します-
XMLSlideShow ppt = new XMLSlideShow();
- createSlide()*を使用して、空のプレゼンテーションを作成します。
XSLFSlide slide = ppt.createSlide();
追加する画像ファイルを読み取り、以下に示すように IOUtils クラスの* IOUtils.toByteArray()*を使用してバイト配列に変換します-
//reading an image
File image = new File("C://POIPPT//boy.jpg");
//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
- addPicture()*を使用して、プレゼンテーションに画像を追加します。 このメソッドは、追加されるイメージのバイト配列形式と、イメージのファイル形式を表す静的変数の2つの変数を受け入れます。 * addPicture()*メソッドの使用法を以下に示します-
int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);
以下に示すように、* createPicture()*を使用してスライドに画像を埋め込みます-
XSLFPictureShape pic = slide.createPicture(idx);
以下は、プレゼンテーションのスライドに画像を追加するための完全なプログラムです-
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFPictureData;
import org.apache.poi.xslf.usermodel.XSLFPictureShape;
import org.apache.poi.xslf.usermodel.XSLFSlide;
public class AddingImage {
public static void main(String args[]) throws IOException {
//creating a presentation
XMLSlideShow ppt = new XMLSlideShow();
//creating a slide in it
XSLFSlide slide = ppt.createSlide();
//reading an image
File image = new File("C://POIPPT//boy.jpg");
//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
//adding the image to the presentation
int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);
//creating a slide with given picture on it
XSLFPictureShape pic = slide.createPicture(idx);
//creating a file object
File file = new File("addingimage.pptx");
FileOutputStream out = new FileOutputStream(file);
//saving the changes to a file
ppt.write(out)
System.out.println("image added successfully");
out.close();
}
}
上記のJavaコードを AddingImage.java として保存し、コマンドプロンプトから次のようにコンパイルして実行します-
$javac AddingImage.java
$java AddingImage
次の出力を生成するためにコンパイルおよび実行されます-
reordering of the slides is done
新しく追加された画像付きスライド付きのプレゼンテーションは次のように表示されます-
画像を読む
*XMLSlideShow* クラスの* getAllPictures()*メソッドを使用して、すべての写真のデータを取得できます。 次のプログラムは、プレゼンテーションから画像を読み取ります-
import java.io.File;
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.XSLFPictureData;
public class Readingimage {
public static void main(String args[]) throws IOException {
//open an existing presentation
File file = new File("addingimage.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
//reading all the pictures in the presentation
for(XSLFPictureData data : ppt.getAllPictures()){
byte[] bytes = data.getData();
String fileName = data.getFileName();
int pictureFormat = data.getPictureType();
System.out.println("picture name: " + fileName);
System.out.println("picture format: " + pictureFormat);
}
//saving the changes to a file
FileOutputStream out = new FileOutputStream(file);
ppt.write(out);
out.close();
}
}
上記のJavaコードを Readingimage.java として保存し、次のようにコマンドプロンプトからコンパイルして実行します-
$javac Readingimage.java
$java Readingimage
次の出力を生成するためにコンパイルおよび実行されます-
picture name: image1.png
picture format: 6
Apache POI PPT-ハイパーリンクの作成
この章では、プレゼンテーションでハイパーリンクを作成する方法を学びます。
ハイパーリンクを作成する
*XSLFTextRun* クラスの* createHyperlink()*メソッドを使用して、プレゼンテーションのハイパーリンクを読み取ることができます。 以下の手順に従って、プレゼンテーションにハイパーリンクを作成します。
以下に示すように、 XMLSlideShow クラスを使用して空のプレゼンテーションを作成します-
XMLSlideShow ppt = new XMLSlideShow();
空のスライドを作成し、本文とコンテンツのレイアウトを使用してテキストボックスとスライドの本文を作成します。
//create an empty presentation
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
//creating a slide with title and content layout
XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
XSLFSlide slide = ppt.createSlide(slidelayout);
//selection of body place holder
XSLFTextShape body = slide.getPlaceholder(1);
//clear the existing text in the slide
body.clearText();
テキスト実行オブジェクトを作成し、以下に示すようにテキストを設定します-
XSLFTextRun textRun = body.addNewTextParagraph().addNewTextRun();
textRun.setText("Tutorials point");
以下に示すように、 XSLFTextRun クラスの* createHyperlink()*メソッドを使用してハイパーリンクを作成します-
XSLFHyperlink link = textRun.createHyperlink();
以下に示すように、 XSLFHyperlink クラスの* setAddress()*メソッドを使用して、ハイパーリンクへのリンクアドレスを設定します-
link.setAddress("http://www.finddevguides.com/");
以下は、プレゼンテーションにハイパーリンクを作成するための完全なプログラムです-
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.XSLFTextRun;
import org.apache.poi.xslf.usermodel.XSLFTextShape;
public class CreatingHyperlinks {
public static void main(String args[]) throws IOException {
//create an empty presentation
XMLSlideShow ppt = new XMLSlideShow();
//getting the slide master object
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
//select a layout from specified list
XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
//creating a slide with title and content layout
XSLFSlide slide = ppt.createSlide(slidelayout);
//selection of title place holder
XSLFTextShape body = slide.getPlaceholder(1);
//clear the existing text in the slid
body.clearText();
//adding new paragraph
XSLFTextRun textRun = body.addNewTextParagraph().addNewTextRun();
//setting the text
textRun.setText("Tutorials point");
//creating the hyperlink
XSLFHyperlink link = textRun.createHyperlink();
//setting the link address
link.setAddress("http://www.finddevguides.com/");
//create the file object
File file = new File("hyperlink.pptx");
FileOutputStream out = new FileOutputStream(file);
//save the changes in a file
ppt.write(out);
System.out.println("slide cretated successfully");
out.close();
}
}
上記のJavaコードを CreatingHyperlinks.java として保存し、次のようにコマンドプロンプトからコンパイルして実行します-
$javac CreatingHyperlinks.java
$java CreatingHyperlinks
次の出力を生成するためにコンパイルおよび実行されます-
slide cretated successfully
本体にハイパーリンクを持つ新しく追加されたスライドは次のようになります-
Apache POI PPT-図形の読み取り
*XSLFShape* クラスのメソッド* getShapeName()*を使用して、プレゼンテーションで使用されている図形の数のカウントを取得できます。 以下は、プレゼンテーションから形状を読み取るためのプログラムです-
import java.io.File;
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.XSLFShape;
import org.apache.poi.xslf.usermodel.XSLFSlide;
public class ReadingShapes {
public static void main(String args[]) throws IOException {
//creating a slideshow
File file = new File("shapes.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
//get slides
XSLFSlide[] slide = ppt.getSlides();
//getting the shapes in the presentation
System.out.println("Shapes in the presentation:");
for (int i = 0; i < slide.length; i++){
XSLFShape[] sh = slide[i].getShapes();
for (int j = 0; j < sh.length; j++){
//name of the shape
System.out.println(sh[j].getShapeName());
}
}
FileOutputStream out = new FileOutputStream(file);
ppt.write(out);
out.close();
}
}
上記のJavaコードを ReadingShapes.java として保存し、次のようにコマンドプロンプトからコンパイルして実行します-
$javac ReadingShapes.java
$java ReadingShapes
コンパイルして実行し、次の出力を生成します。
Shapes in the presentation:
Rectangle 1
Oval 1
Isosceles Triangle 1
さまざまな形状で新しく追加されたスライドは次のように表示されます-
Apache POI PPT-テキストのフォーマット
プレゼンテーションのテキストは、 XSLFTextRun クラスのメソッドを使用してフォーマットできます。 そのためには、以下に示すようにスライドレイアウトのいずれかを選択して XSLFTextRun クラスオブジェクトを作成する必要があります-
//create the empty presentation
XMLSlideShow ppt = new XMLSlideShow();
//getting the slide master object
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
//select a layout from specified list
XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
//creating a slide with title and content layout
XSLFSlide slide = ppt.createSlide(slidelayout);
//selection of title place holder
XSLFTextShape body = slide.getPlaceholder(1);
//clear the existing text in the slide
body.clearText();
//adding new paragraph
XSLFTextParagraph paragraph = body.addNewTextParagraph();
//creating text run object
XSLFTextRun run = paragraph.addNewTextRun();
- setFontSize()*を使用して、プレゼンテーション内のテキストのフォントサイズを設定できます。
run.setFontColor(java.awt.Color.red);
run.setFontSize(24);
次のコードスニペットは、さまざまな書式設定スタイル(太字、斜体、下線、取り消し線)をプレゼンテーションのテキストに適用する方法を示しています。
//change the text into bold format
run.setBold(true);
//change the text it to italic format
run.setItalic(true)
//strike through the text
run.setStrikethrough(true);
//underline the text
run.setUnderline(true);
段落間で改行するには、以下に示すように XSLFTextParagraph クラスの* addLineBreak()*を使用します-
paragraph.addLineBreak();
上記のすべての方法を使用してテキストをフォーマットする完全なプログラムを以下に示します-
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.XSLFTextParagraph;
import org.apache.poi.xslf.usermodel.XSLFTextRun;
import org.apache.poi.xslf.usermodel.XSLFTextShape;
public class TextFormating {
public static void main(String args[]) throws IOException {
//creating an empty presentation
XMLSlideShow ppt = new XMLSlideShow();
//getting the slide master object
XSLFSlideMaster slideMaster = ppt.getSlideMasters()[0];
//select a layout from specified list
XSLFSlideLayout slidelayout = slideMaster.getLayout(SlideLayout.TITLE_AND_CONTENT);
//creating a slide with title and content layout
XSLFSlide slide = ppt.createSlide(slidelayout);
//selection of title place holder
XSLFTextShape body = slide.getPlaceholder(1);
//clear the existing text in the slide
body.clearText();
//adding new paragraph
XSLFTextParagraph paragraph = body.addNewTextParagraph();
//formatting line 1
XSLFTextRun run1 = paragraph.addNewTextRun();
run1.setText("This is a colored line");
//setting color to the text
run1.setFontColor(java.awt.Color.red);
//setting font size to the text
run1.setFontSize(24);
//moving to the next line
paragraph.addLineBreak();
//formatting line 2
XSLFTextRun run2 = paragraph.addNewTextRun();
run2.setText("This is a bold line");
run2.setFontColor(java.awt.Color.CYAN);
//making the text bold
run2.setBold(true);
paragraph.addLineBreak();
//formatting line 3
XSLFTextRun run3 = paragraph.addNewTextRun();
run3.setText(" This is a striked line");
run3.setFontSize(12);
//making the text italic
run3.setItalic(true);
//strike through the text
run3.setStrikethrough(true);
paragraph.addLineBreak();
//formatting line 4
XSLFTextRun run4 = paragraph.addNewTextRun();
run4.setText(" This an underlined line");
run4.setUnderline(true);
//underlining the text
paragraph.addLineBreak();
//creating a file object
File file = new File(“TextFormat.pptx”);
FileOutputStream out = new FileOutputStream(file);
//saving the changes to a file
ppt.write(out);
out.close();
}
}
上記のコードを TextFormating.java として保存し、コマンドプロンプトから次のようにコンパイルして実行します-
$javac TextFormating.java
$java TextFormating
次の出力を生成するためにコンパイルおよび実行されます-
Formatting completed successfully
フォーマットされたテキストを含むスライドは次のように表示されます-
Apache POI PPT-マージ
*XMLSlideShow* クラスの* importContent()*メソッドを使用して、複数のプレゼンテーションをマージできます。 以下は、2つのプレゼンテーションをマージするための完全なプログラムです-
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 MergingMultiplePresentations {
public static void main(String args[]) throws IOException {
//creating empty presentation
XMLSlideShow ppt = new XMLSlideShow();
//taking the two presentations that are to be merged
String file1 = "presentation1.pptx";
String file2 = "presentation2.pptx";
String[] inputs = {file1, file2};
for(String arg : inputs){
FileInputStream inputstream = new FileInputStream(arg);
XMLSlideShow src = new XMLSlideShow(inputstream);
for(XSLFSlide srcSlide : src.getSlides()) {
//merging the contents
ppt.createSlide().importContent(srcSlide);
}
}
String file3 = "combinedpresentation.pptx";
//creating the file object
FileOutputStream out = new FileOutputStream(file3);
//saving the changes to a file
ppt.write(out);
System.out.println("Merging done successfully");
out.close();
}
}
上記のコードを MergingMultiplePresentations.java として保存し、次のようにコマンドプロンプトからコンパイルして実行します-
$javac MergingMultiplePresentations.java
$java MergingMultiplePresentations
次の出力を生成するためにコンパイルおよび実行されます-
Merging done successfully
次のスナップショットは、最初のプレゼンテーションを示しています-
次のスナップショットは、2番目のプレゼンテーションを示しています-
以下は、2つのスライドを結合した後のプログラムの出力です。 ここでは、以前のスライドのコンテンツがマージされたことがわかります。
Apache POI PPT-PPT to Image
プレゼンテーションを画像ファイルに変換できます。 次のプログラムは、その方法を示しています。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
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 PptToImage {
public static void main(String args[]) throws IOException {
//creating an empty presentation
File file=new File("pptToImage.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file));
//getting the dimensions and size of the slide
Dimension pgsize = ppt.getPageSize();
XSLFSlide[] slide = ppt.getSlides();
BufferedImage img = null;
for (int i = 0; i < slide.length; i++) {
img = new BufferedImage(pgsize.width, pgsize.height,BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
//clear the drawing area
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
//render
slide[i].draw(graphics);
}
//creating an image file as output
FileOutputStream out = new FileOutputStream("ppt_image.png");
javax.imageio.ImageIO.write(img, "png", out);
ppt.write(out);
System.out.println("Image successfully created");
out.close();
}
}
上記のJavaコードを PpttoPNG.java として保存し、次のようにコマンドプロンプトからコンパイルして実行します-
$javac PpttoPNG.java
$java PpttoPNG
次の出力を生成するためにコンパイルおよび実行されます-
Image created successfully
次のスナップショットは、入力として与えられるプレゼンテーションを示しています-
以下は、指定された場所で作成されたイメージのスナップショットです。