プレゼンテーションを保存
概要
Presentationクラスは、プレゼンテーションの内容を保持します。ゼロからプレゼンテーションを作成する場合でも、既存のプレゼンテーションを変更する場合でも、作業が完了したらプレゼンテーションを保存したいと思うでしょう。Aspose.Slides for PHP via Javaを使用すると、プレゼンテーションはファイルまたはストリームとして保存できます。この記事では、プレゼンテーションを異なる方法で保存する方法を説明します。
ファイルにプレゼンテーションを保存
PresentationクラスのSaveメソッドを呼び出して、プレゼンテーションをファイルに保存します。ファイル名とSaveFormatをSaveメソッドに渡してください。
次に示す例では、Aspose.Slides for PHP via Javaを使用してプレゼンテーションを保存する方法を示します。
# PPTファイルを表すPresentationオブジェクトをインスタンス化
$pres = new Presentation();
try {
# ...ここで作業を行う...
# プレゼンテーションをファイルに保存
$pres->save("demoPass.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
ストリームにプレゼンテーションを保存
PresentationクラスのSaveメソッドに出力ストリームを渡すことで、プレゼンテーションをストリームに保存できます。プレゼンテーションを保存できるストリームの種類は多数あります。以下の例では、新しいプレゼンテーションファイルを作成し、図形にテキストを追加して、プレゼンテーションをストリームに保存しています。
# PPTファイルを表すPresentationオブジェクトをインスタンス化
$pres = new Presentation();
try {
$shape = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 200, 200, 200);
# 図形にテキストを追加
$shape->getTextFrame()->setText("このデモでは、PowerPointファイルを作成し、それをストリームに保存する方法を示します。");
$os = new Java("java.io.FileOutputStream", "Save_As_Stream_out.pptx");
$pres->save($os, SaveFormat::Pptx);
$os->close();
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
既定のビュータイプでプレゼンテーションを保存
Aspose.Slides for PHP via Javaは、ViewPropertiesクラスを通じて、生成されたプレゼンテーションがPowerPointで開かれる際のビュータイプを設定する機能を提供します。setLastViewプロパティを使用して、ViewType列挙体を使用してビュータイプを設定します。
# プレゼンテーションファイルを開く
$pres = new Presentation();
try {
# ビュータイプを設定
$pres->getViewProperties()->setLastView(ViewType::SlideMasterView);
# プレゼンテーションを保存
$pres->save("newDemo.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
厳格なOffice Open XML形式でプレゼンテーションを保存
Aspose.Slidesは、プレゼンテーションを厳格なOffice Open XML形式で保存することを許可します。その目的のために、プレゼンテーションファイルを保存する際にConformanceプロパティを設定できるPptxOptionsクラスを提供します。その値をConformance.Iso29500_2008_Strictに設定すると、出力プレゼンテーションファイルは厳格なOpen XML形式で保存されます。
以下のサンプルコードでは、プレゼンテーションを作成し、厳格なOffice Open XML形式で保存します。Saveメソッドを呼び出す際に、PptxOptionsオブジェクトを渡し、ConformanceプロパティをConformance.Iso29500_2008_Strictに設定します。
# PPTファイルを表すPresentationオブジェクトをインスタンス化
$pres = new Presentation();
try {
# 最初のスライドを取得
$slide = $pres->getSlides()->get_Item(0);
# タイプラインの自動図形を追加
$slide->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
# 厳格なOffice Open XML形式の保存オプションを設定
$options = new PptxOptions();
$options->setConformance(Conformance->Iso29500_2008_Strict);
# プレゼンテーションをファイルに保存
$pres->save("demoPass.pptx", SaveFormat::Pptx, $options);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Zip64モードでOffice Open XML形式にプレゼンテーションを保存
Office Open XMLファイルは、圧縮サイズとファイルの合計サイズ、アーカイブ内のファイル数の最大限度がそれぞれ4GB(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形式でプレゼンテーションを保存する方法を示しています。
$pres = new Presentation("Sample.pptx");
try {
$pptxOptions = new PptxOptions();
$pptxOptions->setZip64Mode(Zip64Mode::Always);
$pres->save("Sample-zip64.pptx", SaveFormat::Pptx, $pptxOptions);
} finally {
$pres->dispose();
}
注意
Zip64Mode.Neverモードで保存した場合、プレゼンテーションがZIP32形式で保存できない場合は、PptxExceptionがスローされます。パーセントでの進行状況更新を保存
新しいIProgressCallbackインターフェースがISaveOptionsインターフェースおよびSaveOptions抽象クラスに追加されました。IProgressCallbackインターフェースは、進行状況の更新をパーセントで保存するためのコールバックオブジェクトを表します。
以下のコードスニペットは、IProgressCallbackインターフェースの使用方法を示しています。
class ExportProgressHandler {
function reporting($progressValue) {
# ここで進行状況のパーセント値を使用
$progress = java("java.lang.Double")->valueOf($progressValue)->intValue();
echo($progress . "% ファイルが変換されました");
}
}
# プレゼンテーションファイルを開く
$pres = new Presentation("ConvertToPDF.pptx");
try {
$saveOptions = new PdfOptions();
$progressHandler = java_closure(new ExportProgressHandler(), null, java("com.aspose.slides.IProgressCallback"));
$saveOptions->setProgressCallback($progressHandler);
$pres->save("ConvertToPDF.pdf", SaveFormat::Pdf, $saveOptions);
} finally {
$pres->dispose();
}