9

現在、C# で WPF アプリケーションを使用していますが、PowerPoint プレゼンテーションをウィンドウに埋め込む便利な方法を見つけるのは非常に難しいと感じています。

ここで見つけた 1 つの解決策: Embedding a Powerpoint show into a C# application

このソリューションでは、PowerPoint を別のウィンドウで実行するという問題が発生しましたが、その UI は WPF アプリケーション内に表示されるだけでした。これは、WPF ウィンドウがフォーカスされると、PowerPoint プレゼンテーションがフォーカスされず、再生が停止することを意味していました。ウィンドウを閉じると PowerPoint がクラッシュするという問題もありました。

私が見つけた別の解決策は次のとおりです。http://www.codeproject.com/Articles/118676/Embedding-PowerPoint-presentation-player-into-a-WP

このソリューションは人気がありましたが、私は扱いが難しいと感じました。私は Win32 プログラミングや C++ をまったく知らないので、変更するのが非常に難しいと感じました。PowerPoint の 2 番目のコピー (元のプロジェクトで意図された機能) の表示を停止することはできましたが、PowerPoint プレゼンテーションを自動的に開く方法はまだ見つかりません。

したがって、私が必要としているのは、PowerPoint プレゼンテーションを自動的にバックグラウンドできれいに開き (PowerPoint UI をどの時点でも表示したくない)、自動的に実行できるようにする (入力に応答しない) 方法です。アプリケーションが実行されています。Win32 と C++ を扱う必要がなく、C# と WPF 内に保持できれば素晴らしいと思います。

これは可能ですか?この時点で、私はこのプロジェクトを本当に後悔しています。単に PowerPoint の統合が頭を悩ませているからです。

4

4 に答える 4

11

プレゼンテーションをオンザフライでビデオ形式に変換できます。

// not tested as I don't have the Office 2010, but should work
private string GetVideoFromPpt(string filename)
{
    var app = new PowerPoint.Application();
    var presentation = app.Presentations.Open(filename, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);

    var wmvfile = Guid.NewGuid().ToString() + ".wmv";
    var fullpath = Path.GetTempPath() + filename;

    try
    {
        presentation.CreateVideo(wmvfile);
        presentation.SaveCopyAs(fullpath, PowerPoint.PpSaveAsFileType.ppSaveAsWMV, MsoTriState.msoCTrue);
    }
    catch (COMException ex)
    {
        wmvfile = null;
    }
    finally
    {
        app.Quit();
    }

    return wmvfile;
}

次に、次のように再生しますMediaElement

<MediaElement Name="player" LoadedBehavior="Manual" UnloadedBehavior="Stop" />

public void PlayPresentation(string filename)
{
    var wmvfile = GetVideoFromPpt(filename);
    player.Source = new Uri(wmvfile);
    player.Play();
}

File.Delete(wmvfile)動画の再生が終わったら忘れずに!

于 2013-04-03T22:14:36.737 に答える
3

コマンド ラインで /s フラグを使用してプレゼンテーションを起動すると、スプラッシュ スクリーンを起動せずにスライドショーが再生されます。

powerpnt.exe /s c:\path\to\your\presentation.pptx

あなたが言及したいくつかのWPF埋め込みソリューションと合わせて、またはこのアプローチを見てみましょう。

私はWPFについてほとんど知らないので、誰かがこれらすべての要素を組み込んだより良い答えを提供できることを願っています.

于 2013-04-02T21:25:08.513 に答える
1

という WPF コントロールがありDocumentViewerます。

  1. まず、pptx を .xps ファイル形式に変換する必要があります。
  2. Document次に、DocumentViewerのプロパティにバインドします。

pptxOffice ドキュメント (を含む) を C シャープで XPS に変換するためのリンクは次のとおりです。

XAML

<DocumentViewer Name="myDocumentViewer" Margin="0,0,0,59">

</DocumentViewer>

Documentコントロールのプロパティにバインドします ( ConvertPptxDocToXPSDocpptx を xps に変換するメソッドであることに注意してください)

 myDocumentViewer.Document = this.ConvertPptxDocToXPSDoc(this.FileName, this.newXPSDocumentName).GetFixedDocumentSequence();
于 2013-04-04T04:12:38.953 に答える
1

私はそれがあまり好きではなく、これがあなたの状況に当てはまるかどうかわかりません. プレゼンテーションにアクセスする必要があるため、多くのことは確かです. ただし、かなり簡単で軽量です

私の基本的なアイデアは、パワーポイントのプレゼンテーションを html に埋め込み、webbrowser コントロールを使用して表示することでした。その方法はいくつかあるようです。

プレゼンテーションを html として直接保存しようとしましたが、レイアウトはもっと良くなる可能性がありますが、(少なくとも PP2010 では) 可能であることが判明しました。別のアプローチ (Google ドキュメントなど) を使用すると、より良い結果が得られる可能性があります。このリンクから以下を取得しました。

  • PowerPoint 2010 で、HTML にエクスポートするプレゼンテーションを開きます
  • Alt+F11 を押します。
  • Ctrl+G を押します。
  • [イミディエイト] ウィンドウで次のように入力し、Enter キーを押します。 ActivePresentation.SaveAs "<Drive>:\users\<username>\desktop\<filename>.htm", ppSaveAsHTML, msoFalse

    単一ファイル Web ページ (*.mht; *.mhtml) ファイル形式を使用して保存するには、ファイル名の末尾にある htm をmhtに置き換え、ppSaveAsHTML をppSaveAsWebArchiveに置き換えます。

htm でエクスポートすると、多くの追加ファイルが得られますが、mht では 1 つのファイルにすぎないので、その方が適していました。ソリューションを一般化する必要がある場合は、コードでこのステップを自動化することも可能だと確信しています。

HTML ファイルを Web ブラウザー コントロールに表示するのは簡単です。便宜上、ドロップボックスにアップロードし、ソースを設定するだけです (直接見たい場合は、数日間そこに置いておきます)。 .

スライドショーをすぐに開始することについては、もう少し検討する必要があります。

<WebBrowser x:Name="webbrowser" Source="https://dl.dropbox.com/u/27614341/test.mht"/>

ここに画像の説明を入力

于 2013-04-02T21:33:55.093 に答える