C#でPowerPoint(其の参)スライドのJPEG保存

今回は、PowerPointファイルをスライドごとにJPEGファイルとして保存します。

#region JPEG保存

/// <summary>
/// PPTをページごとにJPEGとして保存する。
/// </summary>
/// <param name="ppt_file">PPTファイル</param>
/// <param name="output_dir">出力ディレクトリ</param>
public void saveAsJPEG( string ppt_file, string output_dir )
{

    // ディレクトリ作成
    Directory.CreateDirectory(output_dir);

    Microsoft.Office.Interop.PowerPoint.Application app = null;
    Microsoft.Office.Interop.PowerPoint.Presentation ppt = null;

    try {
        // PPTのインスタンス作成
        app = new Microsoft.Office.Interop.PowerPoint.Application();

        // オープン
        ppt = app.Presentations.Open(
            ppt_file
            , Microsoft.Office.Core.MsoTriState.msoTrue
            , Microsoft.Office.Core.MsoTriState.msoFalse
            , Microsoft.Office.Core.MsoTriState.msoFalse
        );

        // 一括で保存する場合 ----------------
        ppt.SaveAs(output_dir,
            PpSaveAsFileType.ppSaveAsJPG,
            Microsoft.Office.Core.MsoTriState.msoFalse);

        // 1ページずつ保存する場合 -----------------
        int width = (int)ppt.PageSetup.SlideWidth;
        int height = (int)ppt.PageSetup.SlideHeight;
        string file2;

        for ( int i = 1; i <= ppt.Slides.Count; i++ ) {
            // JPEGとして保存
            file2 = output_dir + String.Format("\slide{0:0000}.jpg", i);
            ppt.Slides[i].Export(file2, "jpg", width, height);
        }

    }
    finally {
        // 終了
        if ( ppt != null ) {
            ppt.Close();
        }

        // PPTを閉じる
        if ( app != null ) {
            app.Quit();
            app = null;
        }
    }
}
#endregion

一括で保存する処理は、元々のPPTファイルの画像サイズに対して
解像度が72dpi→96dpiとして変換された画像サイズで保存されます。

The following two tabs change content below.

taira

Sofrware Engineer.

Comments are closed.