.NET でプレゼンテーションを保存
概要
プレゼンテーションを作成するか、既存のプレゼンテーションを開く ときは、Presentation.Save メソッドを使用して結果を書き込みます。Aspose.Slides for .NET は、PowerPoint、OpenDocument、PDF などの形式で、プレゼンテーションをファイルまたはストリームに保存できます。以下のセクションでは、標準的な保存操作と PPTX 出力に利用できるオプションについて説明します。
プレゼンテーションをファイルに保存
プレゼンテーションをファイルに保存するには、出力パスと SaveFormat の値を Presentation.Save メソッドに渡します。フォーマットの値は、Aspose.Slides が作成するファイルの種類を決定します。
次の例は、プレゼンテーションを作成し、PPTX ファイルとして保存します。
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
// プレゼンテーションのコンテンツを追加または変更します。
presentation.Save("Output.pptx", SaveFormat.Pptx);
元の形式でプレゼンテーションを保存
ファイルおよびストリームの検出例、新規作成プレゼンテーションの動作、ソース形式と出力形式の区別については、Determine the Original Presentation Format を参照してください。
バッチ処理アプリケーションでは、入力形式が事前に判明していない場合があります。ファイルを読み込んだ後、IPresentation.SourceFormat プロパティから元の形式を取得します。取得した SourceFormat の値を SlideUtil.ToSaveFormat に渡して対応する SaveFormat の値を取得し、Presentation.Save で変更後のプレゼンテーションを書き込みます。
次の完全な例は、入力ディレクトリ内のすべてのファイルを処理し、タイトルを更新して、読み込まれた形式のまま出力ディレクトリに保存します。
using System;
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Util;
var inputDirectory = "Input";
var outputDirectory = "Output";
Directory.CreateDirectory(outputDirectory);
foreach (var inputPath in Directory.EnumerateFiles(inputDirectory))
{
try
{
using var presentation = new Presentation(inputPath);
var sourceFormat = presentation.SourceFormat;
var saveFormat = SlideUtil.ToSaveFormat(sourceFormat);
presentation.DocumentProperties.Title = "Processed by the batch application";
var outputPath = Path.Combine(outputDirectory, Path.GetFileName(inputPath));
presentation.Save(outputPath, saveFormat);
}
catch (ArgumentException exception)
{
Console.Error.WriteLine($"Cannot map the source format of '{inputPath}': {exception.Message}");
}
catch (Exception exception)
{
Console.Error.WriteLine($"Cannot process '{inputPath}': {exception.Message}");
}
}
SlideUtil.ToSaveFormat は PPT、PPTX、ODP、PPTM、PPSX、PPSM、POTX、POTM、PPS、POT、OTP、FODP、PowerPoint XML をそれぞれのプレゼンテーション保存形式にマップします。これはプレゼンテーションのソース形式のみを対象としており、PDF、HTML、TIFF、画像などのエクスポート形式を選択する目的では使用しません。SourceFormat にサポートされていないまたは無効な値を渡すと、ArgumentException がスローされます。
レガシーな PPT、PPS、POT ファイルは同じバイナリコンテナを使用します。拡張子なしでストリームからそのようなプレゼンテーションを読み込むと、PPS や POT が PPT として識別されることがあります。これらのレガシーサブタイプを保持する必要がある場合は、元のファイル名または形式メタデータを別途保存し、出力ファイル名と形式を決定する際に使用してください。
プレゼンテーションをストリームに保存
最終的なファイルパスに依存せずにプレゼンテーションを書き込むには、書き込み可能な Stream と SaveFormat の値を Presentation.Save メソッドに渡します。この方法は、出力を Web サービスから返す必要がある場合や、データベースに保存する場合、メモリ内で処理する場合に便利です。
次の例は、新しいプレゼンテーションをファイルストリームに保存します。
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
using var outputStream = new FileStream("Output.pptx", FileMode.Create);
presentation.Save(outputStream, SaveFormat.Pptx);
事前に定義されたビュータイプでプレゼンテーションを保存
PowerPoint が保存されたプレゼンテーションを最初に開くビューを指定できます。ViewProperties.LastView プロパティを ViewType の値に設定してから保存してください。
次の例は、スライドマスター表示を初期ビューとして構成します。
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
presentation.ViewProperties.LastView = ViewType.SlideMasterView;
presentation.Save("SlideMasterView.pptx", SaveFormat.Pptx);
Strict Office Open XML 形式でプレゼンテーションを保存
Office Open XML の Strict プロファイルに準拠した PPTX ファイルを作成するには、PptxOptions のインスタンスを作成し、その Conformance プロパティを Conformance.Iso29500_2008_Strict に設定します。その後、オプションを Presentation.Save メソッドに渡します。
using Aspose.Slides;
using Aspose.Slides.Export;
var options = new PptxOptions
{
Conformance = Conformance.Iso29500_2008_Strict
};
using var presentation = new Presentation();
presentation.Save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);
Office Open XML 形式で Zip64 モードでプレゼンテーションを保存
標準の ZIP アーカイブは、各エントリの圧縮サイズ・非圧縮サイズ、アーカイブ全体のサイズ、エントリ数に制限があります。PPTX ファイルは ZIP アーカイブであるため、非常に大きなプレゼンテーションはこれらの制限を超えることがあります。Zip64 拡張により、これらのサイズおよびエントリ数の上限が拡大されます。
PptxOptions.Zip64Mode プロパティで Aspose.Slides が Zip64 拡張を書き込むかどうかを制御します。
IfNecessaryはプレゼンテーションが標準 ZIP の制限を超える場合にのみ Zip64 を使用します。デフォルトモードです。Neverは Zip64 拡張を書き込みません。Alwaysは常に Zip64 拡張を書き込みます。
次の例は、出力プレゼンテーションに対して常に Zip64 拡張を有効にします。
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
Zip64Mode = Zip64Mode.Always
};
presentation.Save("OutputZip64.pptx", SaveFormat.Pptx, options);
Office Open XML 形式で圧縮レベルを指定してプレゼンテーションを保存
PPTX の出力では、PptxOptions.CompressionLevel プロパティを設定することで、保存速度とファイルサイズのバランスを調整できます。CompressionLevel 列挙体は次の値を提供します。
Noneは圧縮せずにデータを保存します。Level1は最速の圧縮で、圧縮後のサイズが最大になります。Level2からLevel5は、保存速度よりも小さな出力を徐々に優先します。Level6は保存速度とファイルサイズのバランスを取ります。デフォルトレベルです。Level7とLevel8は、保存速度よりもさらに小さな出力を優先します。Level9は最強の圧縮を行い、最も多くの処理時間が必要です。
次の例は、圧縮なしでプレゼンテーションを保存します。
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
CompressionLevel = CompressionLevel.None
};
presentation.Save("OutputNoCompression.pptx", SaveFormat.Pptx, options);
次の例は、最大圧縮レベルで保存します。
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
CompressionLevel = CompressionLevel.Level9
};
presentation.Save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options);
サムネイルを更新せずにプレゼンテーションを保存
プレゼンテーションを PPTX として保存する際、PptxOptions.RefreshThumbnail プロパティでドキュメントサムネイルの挙動を制御します。
trueは保存時にサムネイルを再生成します。既定値です。falseは既存のサムネイルを保持します。プレゼンテーションにサムネイルがない場合、Aspose.Slides は新たに生成しません。
次の例は、サムネイルを更新せずにプレゼンテーションを保存します。
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("Sample.pptx");
var options = new PptxOptions
{
RefreshThumbnail = false
};
presentation.Save("Output.pptx", SaveFormat.Pptx, options);
Note
サムネイルの更新を無効にすると、PPTX ファイルの保存にかかる時間を短縮できます。保存進捗をパーセンテージで更新
保存操作の進捗を監視するには、IProgressCallback インターフェイスを実装し、その実装を ISaveOptions.ProgressCallback プロパティに割り当てます。Aspose.Slides はエクスポート中に IProgressCallback.Reporting メソッドを呼び出し、進捗値を通知します。
次の例は、PDF エクスポートの進捗をコンソールに出力します。
using System;
using Aspose.Slides;
using Aspose.Slides.Export;
var options = new PdfOptions
{
ProgressCallback = new ExportProgressHandler()
};
using var presentation = new Presentation("Sample.pptx");
presentation.Save("Output.pdf", SaveFormat.Pdf, options);
class ExportProgressHandler : IProgressCallback
{
public void Reporting(double progressValue)
{
var progress = Convert.ToInt32(progressValue);
Console.WriteLine($"{progress}% of the file has been converted.");
}
}
Note
Aspose は、Aspose.Slides API を使用して構築された無料の PowerPoint Splitter を提供しています。選択したスライドを個別の PPT または PPTX ファイルとして保存できます。FAQ
Aspose.Slides はインクリメンタル保存または「高速保存」をサポートしていますか?
いいえ。各保存操作は、変更された部分だけを更新するのではなく、完全な出力ファイルを書き込みます。
複数のスレッドで同じ Presentation インスタンスを保存できますか?
いいえ。Presentation インスタンスは スレッド セーフではありません (/slides/ja/net/multithreading/)。各インスタンスは同時に 1 つのスレッドからのみアクセスして保存してください。
プレゼンテーションを保存するときにハイパーリンクや外部リンクファイルはどうなりますか?
ハイパーリンク はプレゼンテーション内に残ります。Aspose.Slides は外部リンクファイルをコピーしないため、保存されたプレゼンテーションはそれらの場所に引き続きアクセスできる必要があります。
作者、タイトル、会社、作成日などのドキュメントメタデータを保存できますか?
はい。保存前に適切な ドキュメント プロパティ を設定すれば、Aspose.Slides はそれらを出力ファイルに書き込みます。