プレゼンテーションの保存

概要

Presentationクラスは、プレゼンテーションのコンテンツを保持します。ゼロからプレゼンテーションを作成する場合でも、既存のものを修正する場合でも、作業が終了したらプレゼンテーションを保存したいと思います。Aspose.Slides for Javaを使用すると、ファイルまたはストリームとして保存できます。この記事では、プレゼンテーションをさまざまな方法で保存する方法を説明します。

プレゼンテーションをファイルに保存

PresentationクラスのSaveメソッドを呼び出して、プレゼンテーションをファイルに保存します。単にファイル名とSaveFormatSaveメソッドに渡してください。

以下の例は、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();
}

進行状況をパーセントで保存

新しい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 + "% ファイルが変換されました");
    }
}