Apache-poi-ppt-quick-guide

提供:Dev Guides
移動先:案内検索

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のアーキテクチャを示します。

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 −

  • \> java –version*

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 −

  • $ java –version*

a

Javaバージョン "1.7.0_25"

JDKランタイム環境を開く(rhel-2.3.10.4.el6_4-x86_64)

JDK 64ビットサーバーVMを開く(ビルド23.7-b01、混合モード)

ステップ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ドライブのフォルダーに収集されると仮定します。

次の画像は、ダウンロードしたフォルダ内のディレクトリとファイル構造を示しています-

Jar Hierarchy1

Jar Hierarchy2

上記の画像で強調表示されている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ドキュメントは次のように表示されます-

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ドキュメントは、次のように表示されます-

TitleLayOut

タイトルとコンテンツのレイアウト

タイトルとコンテンツレイアウトを使用して、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ドキュメントは、次のように表示されます-

image

同様に、異なるレイアウトのスライドを作成することもできます。

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

以下は、スライドサイズを変更する前のプレゼンテーションのスナップショットです-

TitleAndContentLayout

サイズを変更した後、スライドは次のように表示されます-

SlideAfterChange

スライドの並べ替え

  • 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

次のスナップショットは、最初のプレゼンテーションを示しています-

Presentation1

次のスナップショットは、2番目のプレゼンテーションを示しています-

Presentation2

以下は、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

次のスナップショットは、入力として与えられるプレゼンテーションを示しています-

presentation1

以下は、指定された場所で作成されたイメージのスナップショットです。

PPT画像