プレゼンテーションの保存
概要
Presentationクラスは、プレゼンテーションのコンテンツを保持します。ゼロからプレゼンテーションを作成する場合でも、既存のものを修正する場合でも、作業が終了したらプレゼンテーションを保存したいと思います。Aspose.Slides for Javaを使用すると、ファイルまたはストリームとして保存できます。この記事では、プレゼンテーションをさまざまな方法で保存する方法を説明します。
プレゼンテーションをファイルに保存
PresentationクラスのSaveメソッドを呼び出して、プレゼンテーションをファイルに保存します。単にファイル名とSaveFormatをSaveメソッドに渡してください。
以下の例は、Aspose.Slides for 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 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形式で保存することができます。その目的のために、プレゼンテーションファイルを保存する際にConformanceプロパティを設定できるPptxOptionsクラスを提供します。その値をConformance.Iso29500_2008_Strictに設定すると、出力されるプレゼンテーションファイルは厳密なOpen XML形式で保存されます。
以下のサンプルコードは、プレゼンテーションを作成し、厳密なOffice Open XML形式で保存します。Saveメソッドを呼び出すときに、ConformanceプロパティをConformance.Iso29500_2008_Strictに設定したPptxOptionsオブジェクトが渡されます。
// 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ファイルは、未圧縮サイズのファイル、圧縮サイズのファイル、アーカイブの合計サイズに対して4GB(2^32バイト)の制限があり、アーカイブ内のファイル数は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 + "% ファイルが変換されました");
}
}