JavaScript でプレゼンテーションを保存

概要

Open Presentations in JavaScript では、プレゼンテーションを開くために Presentation クラスを使用する方法が説明されています。本稿では、プレゼンテーションの作成と保存方法を解説します。Presentation クラスはプレゼンテーションの内容を保持します。ゼロからプレゼンテーションを作成する場合でも、既存のものを変更する場合でも、作業が完了したら保存したくなります。Aspose.Slides for Node.js を使用すると、ファイル または ストリーム に保存できます。本稿では、プレゼンテーションを保存するさまざまな方法を説明します。

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

プレゼンテーションは、Presentation クラスの save メソッドを呼び出すことでファイルに保存できます。メソッドにファイル名と保存形式を渡します。以下の例は、Aspose.Slides を使用してプレゼンテーションを保存する方法を示しています。

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

// プレゼンテーション ファイルを表す Presentation クラスのインスタンスを作成します。
let presentation = new aspose.slides.Presentation();
try {
    // ここで何らかの処理を行います...

    // プレゼンテーションをファイルに保存します。
    presentation.save("Output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

ストリームにプレゼンテーションを保存

出力ストリームを Presentation クラスの save メソッドに渡すことで、プレゼンテーションをストリームに保存できます。プレゼンテーションはさまざまなストリームタイプに書き込むことができます。以下の例では、新しいプレゼンテーションを作成し、ファイルストリームに保存します。

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

// プレゼンテーション ファイルを表す Presentation クラスのインスタンスを作成します。
let presentation = new aspose.slides.Presentation();
try {
    let fileStream = java.newInstanceSync("java.io.FileOutputStream", "Output.pptx");
    try {
        // プレゼンテーションをストリームに保存します。
        presentation.save(fileStream, aspose.slides.SaveFormat.Pptx);
    } finally {
        fileStream.close();
    }
} finally {
    presentation.dispose();
}

事前定義されたビュータイプでプレゼンテーションを保存

Aspose.Slides を使用すると、生成されたプレゼンテーションが開かれたときに PowerPoint が使用する初期ビューを ViewProperties クラスで設定できます。setLastView メソッドに ViewType 列挙体の値を渡して使用します。

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

let presentation = new aspose.slides.Presentation();
try {
    presentation.getViewProperties().setLastView(aspose.slides.ViewType.SlideMasterView);
    presentation.save("SlideMasterView.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Strict Office Open XML 形式でプレゼンテーションを保存

Aspose.Slides では、プレゼンテーションを Strict Office Open XML 形式で保存できます。保存時に PptxOptions クラスを使用し、その conformance プロパティを設定します。Conformance.Iso29500_2008_Strict を設定すると、出力ファイルは Strict Office Open XML 形式で保存されます。

以下の例は、プレゼンテーションを作成し、Strict Office Open XML 形式で保存するものです。

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

let options = new aspose.slides.PptxOptions();
options.setConformance(aspose.slides.Conformance.Iso29500_2008_Strict);

// プレゼンテーション ファイルを表す Presentation クラスのインスタンスを作成します。
let presentation = new aspose.slides.Presentation();
try {
    // プレゼンテーションを Strict Office Open XML 形式で保存します。
    presentation.save("StrictOfficeOpenXml.pptx", aspose.slides.SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Office Open XML 形式で Zip64 モードでプレゼンテーションを保存

Office Open XML ファイルは ZIP アーカイブで、圧縮されていない任意のファイルのサイズ、圧縮後のサイズ、アーカイブ全体のサイズに 4 GB (2^32 バイト) の制限があり、ファイル数は 65 535 (2^16‑1) に制限されます。ZIP64 形式拡張により、これらの制限が 2^64 まで緩和されます。

PptxOptions.setZip64Mode メソッドを使用すると、Office Open XML ファイルを保存する際に ZIP64 形式拡張を使用するタイミングを選択できます。

このメソッドは以下のモードで使用できます:

  • IfNecessary は、プレゼンテーションが上記の制限を超える場合にのみ ZIP64 形式拡張を使用します。これはデフォルトモードです。
  • Never は、ZIP64 形式拡張を使用しません。
  • Always は、常に ZIP64 形式拡張を使用します。

以下のコードは、ZIP64 形式拡張を有効にして PPTX ファイルとしてプレゼンテーションを保存する方法を示しています:

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

let pptxOptions = new aspose.slides.PptxOptions();
pptxOptions.setZip64Mode(aspose.slides.Zip64Mode.Always);

let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    presentation.save("OutputZip64.pptx", aspose.slides.SaveFormat.Pptx, pptxOptions);
} finally {
    presentation.dispose();
}

Office Open XML 形式で圧縮レベルを指定してプレゼンテーションを保存

大きなプレゼンテーションを扱う場合、圧縮レベルを調整してファイルサイズと処理時間のバランスを取ることができます。要件に応じて、処理速度を優先したり、出力ファイルを小さくしたりできます。

Aspose.Slides は、PptxOptions.setCompressionLevel メソッドを提供しており、Office Open XML 形式で保存する際に使用する圧縮レベルを指定できます。

利用可能な圧縮レベルは以下のとおりです:

  • None: 圧縮は行われません。ファイルはそのまま保存されます。
  • Level1: 圧縮率が最も低く、最速の圧縮です。
  • Level2: Level1 より若干高い圧縮率で、比較的高速に圧縮します。
  • Level3: Level2 より高い圧縮率で、処理時間への影響は中程度です。
  • Level4: Level3 より高い圧縮率です。
  • Level5: Level4 より高い圧縮率で、追加の処理時間がかかります。
  • Level6: 標準的な圧縮で、処理速度とファイルサイズのバランスが良好です。デフォルトの圧縮レベル です。
  • Level7: Level6 より高い圧縮率ですが、処理は遅くなります。
  • Level8: Level7 より高い圧縮率です。
  • Level9: 最高の圧縮率で、最も小さいファイルサイズになりますが、処理時間が最も長くなります。

以下の例は、圧縮なしで PPTX ファイルとしてプレゼンテーションを保存する方法を示しています:

const aspose = { slides: require("aspose.slides.via.java") };

const pptxOptions = new aspose.slides.PptxOptions();
pptxOptions.setCompressionLevel(aspose.slides.CompressionLevel.None);

const presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    presentation.save("Sample-out.pptx", aspose.slides.SaveFormat.Pptx, pptxOptions);
} finally {
    presentation.dispose();
}

この例は、最大圧縮で PPTX ファイルとしてプレゼンテーションを保存する方法を示しています:

const aspose = { slides: require("aspose.slides.via.java") };

const pptxOptions = new aspose.slides.PptxOptions();
pptxOptions.setCompressionLevel(aspose.slides.CompressionLevel.Level9);

const presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    presentation.save("Sample-level9.pptx", aspose.slides.SaveFormat.Pptx, pptxOptions);
} finally {
    presentation.dispose();
}

サムネイルを更新せずにプレゼンテーションを保存

PptxOptions.setRefreshThumbnail メソッドは、プレゼンテーションを PPTX に保存する際のサムネイル生成を制御します。

  • true に設定すると、保存時にサムネイルが更新されます。これはデフォルトです。
  • false に設定すると、現在のサムネイルが保持されます。プレゼンテーションにサムネイルがない場合は生成されません。

以下のコードでは、サムネイルを更新せずに PPTX としてプレゼンテーションを保存しています。

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

let pptxOptions = new aspose.slides.PptxOptions();
pptxOptions.setRefreshThumbnail(false);

let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    presentation.save("Output.pptx", aspose.slides.SaveFormat.Pptx, pptxOptions);
}
finally {
    presentation.dispose();
}

保存進行状況をパーセンテージで更新

保存進捗のレポートは、SaveOptions およびそのサブクラスの setProgressCallback メソッドで構成します。IProgressCallback インターフェイスを実装した Java プロキシを提供します。エクスポート中にコールバックは定期的にパーセンテージの更新を受け取ります。

以下のコードスニペットは IProgressCallback の使用方法を示しています。

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

const ExportProgressHandler = java.newProxy("com.aspose.slides.IProgressCallback", {
    reporting: function(progressValue) {
        // ここで進捗のパーセンテージ値を使用します。
        const progress = Math.floor(progressValue);
        console.log(`${progress}% of the file has been converted.`);
    }
});

let saveOptions = new aspose.slides.PdfOptions();
saveOptions.setProgressCallback(ExportProgressHandler);

let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
    presentation.save("Output.pdf", aspose.slides.SaveFormat.Pdf, saveOptions);
} finally {
    presentation.dispose();
}

FAQ

“高速保存”(インクリメンタル保存)は、変更部分だけが書き込まれるようにサポートされていますか?

いいえ。保存は毎回完全なターゲット ファイルを作成します。インクリメンタルな「高速保存」はサポートされていません。

複数スレッドから同じ Presentation インスタンスを保存することはスレッドセーフですか?

いいえ。 Presentation インスタンスはスレッドセーフではありません。単一のスレッドから保存してください。

保存時にハイパーリンクや外部リンクされたファイルはどうなりますか?

ハイパーリンク は保持されます。外部リンクされたファイル(例: 相対パスで参照される動画など)は自動的にコピーされません。参照パスが引き続きアクセス可能であることを確認してください。

ドキュメントメタデータ(作者、タイトル、会社、日付)を設定/保存できますか?

はい。標準の document properties がサポートされており、保存時にファイルに書き込まれます。