プレゼンテーションを保存
概要
Presentationクラスはプレゼンテーションの内容を保持します。ゼロからプレゼンテーションを作成する場合でも、既存のものを変更する場合でも、完了したらプレゼンテーションを保存したいと思うでしょう。Aspose.Slides for Android via Javaでは、ファイルまたはストリームとして保存できます。この記事では、異なる方法でプレゼンテーションを保存する方法を説明します。
ファイルにプレゼンテーションを保存
PresentationクラスのSaveメソッドを呼び出すことで、プレゼンテーションをファイルに保存します。ファイル名とSaveFormatをSaveメソッドに渡します。
以下の例では、Aspose.Slides for Android via Javaを使用してプレゼンテーションを保存する方法を示します。
// PPTファイルを表すPresentationオブジェクトをインスタンス化
Presentation pres = new Presentation();
try {
// ...ここで作業を行う...
// プレゼンテーションをファイルに保存
pres.save("demoPass.pptx", com.aspose.slides.SaveFormat.Pptx);
} finally {
if(pres != null) pres.dispose();
}
ストリームにプレゼンテーションを保存
出力ストリームをPresentationクラスのSaveメソッドに渡すことで、プレゼンテーションをストリームに保存することができます。プレゼンテーションを保存できるストリームの種類は多数あります。以下の例では、新しいプレゼンテーションファイルを作成し、シェイプにテキストを追加し、プレゼンテーションをストリームに保存しました。
// PPTファイルを表すPresentationオブジェクトをインスタンス化
Presentation pres = new Presentation();
try {
IAutoShape shape = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 200, 200, 200, 200);
// シェイプにテキストを追加
shape.getTextFrame().setText("このデモはPowerPointファイルを作成し、それをストリームに保存する方法を示しています。");
OutputStream os = new FileOutputStream("Save_As_Stream_out.pptx");
pres.save(os, com.aspose.slides.SaveFormat.Pptx);
os.close();
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
定義済みのビュータイプでプレゼンテーションを保存
Aspose.Slides for Android via Javaは、プレゼンテーションがPowerPointで開かれた際にビュータイプを設定する機能をViewPropertiesクラスを通じて提供します。setLastViewプロパティを使用して、ViewType列挙体を使用してビュータイプを設定します。
// プレゼンテーションファイルを開く
Presentation pres = new Presentation();
try {
// ビュータイプを設定
pres.getViewProperties().setLastView((byte) ViewType.SlideMasterView);
// プレゼンテーションを保存
pres.save("newDemo.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
厳密なOffice Open XML形式でプレゼンテーションを保存
Aspose.Slidesでは、プレゼンテーションを厳密なOffice Open XML形式で保存できます。そのために、PptxOptionsクラスを提供しており、プレゼンテーションファイルを保存する際にConformanceプロパティを設定できます。値をConformance.Iso29500_2008_Strictに設定すると、出力されるプレゼンテーションファイルは厳密なOpen XML形式で保存されます。
以下のサンプルコードは、プレゼンテーションを作成し、厳密なOffice Open XML形式で保存します。Saveメソッドを呼び出す際に、PptxOptionsオブジェクトがConformanceプロパティをConformance.Iso29500_2008_Strictに設定して渡されます。
// PPTファイルを表すPresentationオブジェクトをインスタンス化
Presentation pres = new Presentation();
try {
// 最初のスライドを取得
ISlide slide = pres.getSlides().get_Item(0);
// ラインタイプのオートシェイプを追加
slide.getShapes().addAutoShape(ShapeType.Line, 50, 150, 300, 0);
// 厳密なOffice Open XML形式の保存オプションを設定
PptxOptions options = new PptxOptions();
options.setConformance(Conformance.Iso29500_2008_Strict);
// プレゼンテーションをファイルに保存
pres.save("demoPass.pptx", SaveFormat.Pptx, options);
} finally {
if (pres != null) pres.dispose();
}
Zip64モードでOffice Open XML形式でプレゼンテーションを保存
Office Open XMLファイルは、ファイルの未圧縮サイズ、圧縮サイズ、アーカイブの合計サイズについて4 GB(2^32バイト)の制限があるZIPアーカイブであり、アーカイブ内のファイル数については65,535(2^16-1)の制限があります。ZIP64形式の拡張機能は、制限を2^64に引き上げます。
新しいIPptxOptions.Zip64Modeプロパティを使用すると、保存されたOffice Open XMLファイルに対してZIP64形式の拡張機能を使用するかどうかを選択できます。
このプロパティは次のモードを提供します:
- Zip64Mode.IfNecessaryは、プレゼンテーションが上記の制限を超えた場合にのみZIP64形式の拡張機能が使用されることを意味します。これがデフォルトモードです。
- Zip64Mode.Neverは、ZIP64形式の拡張機能が使用されないことを意味します。
- Zip64Mode.Alwaysは、ZIP64形式の拡張機能が常に使用されることを意味します。
以下のコードは、ZIP64形式の拡張を使用してプレゼンテーションをPPTX形式で保存する方法を示しています:
Presentation pres = new Presentation("Sample.pptx");
try {
PptxOptions pptxOptions = new PptxOptions();
pptxOptions.setZip64Mode(Zip64Mode.Always);
pres.save("Sample-zip64.pptx", SaveFormat.Pptx, pptxOptions);
} finally {
if (pres != null) pres.dispose();
}
注意
Zip64Mode.Neverモードでの保存は、プレゼンテーションがZIP32形式で保存できない場合、PptxExceptionをスローします。進捗状況の更新をパーセンテージで保存
新しいIProgressCallbackインターフェースがISaveOptionsインターフェースとSaveOptions 抽象クラスに追加されました。IProgressCallbackインターフェースは、進捗状況の更新をパーセンテージで保存するためのコールバックオブジェクトを表します。
以下のコードスニペットは、IProgressCallbackインターフェースの使い方を示しています:
// プレゼンテーションファイルを開く
Presentation pres = new Presentation("ConvertToPDF.pptx");
try {
ISaveOptions saveOptions = new PdfOptions();
saveOptions.setProgressCallback((IProgressCallback) new ExportProgressHandler());
pres.save("ConvertToPDF.pdf", SaveFormat.Pdf, saveOptions);
} finally {
pres.dispose();
}
class ExportProgressHandler implements IProgressCallback
{
public void reporting(double progressValue)
{
// ここで進捗のパーセンテージ値を使用
int progress = Double.valueOf(progressValue).intValue();
System.out.println(progress + "% ファイル変換済み");
}
}