XPSドキュメントをブラウザにストリーミングしてWebページに埋め込むにはどうすればよいですか?
-
03-07-2019 - |
質問
これをどうやって進めるかについての提案を探しています。どんな入力でも大歓迎です!
現在、ASP.NET MVCアプリケーションがあります。クライアントには、XPSドキュメントのIDを持つリンクがあります。ユーザーがリンクをクリックすると、ドキュメントに関する詳細が記載されたページに移動します。この情報に加えて、この情報の横にあるドキュメントを同じページに表示したいと思います。
サーバー側では、IDを取得したら、データベースからバイト配列としてシリアル化されたドキュメントを取得できます。問題は、そのシリアル化されたドキュメントをウェブページに取り込むための最良の方法は何ですか?
そのドキュメントをファイルシステムにドロップしてから、ファイルパスを変更する必要はまったくありません。 「application / vnd.ms-xpsdocument」のコンテンツタイプとしてドキュメントをブラウザにストリーミングできるようにしたいと思います。
これを処理するためにWebコントロールを使用しようとしました(バイナリを書き出すことができません)。ドキュメントストリームをブラウザに取得します。
さらに、Webページにドキュメントを埋め込む方法についての質問もあります。 EMBEDタグを使用しますか?またはオブジェクト?または、iframeを使用して、ドキュメントを配信するものを指すようにソースを設定しますか?
繰り返しますが、私は解決策が弓に包まれることを期待していません。これについてのアドバイスを探しています。また、この質問はxpsドキュメントに関するものですが、ブラウザーでホストされるバイナリファイル(PDFなど)をストリーミングするすべてのアプリケーションに適用されます。
さて、ブラウザでの表示については、1つの単語:Silverlight。解決しました。サーバーからブラウザに送信する最良の方法を見つける問題がまだあります。
それを打て。 Silverlightは、XPSドキュメントを表示するほど高度ではないようです。私は今、HTTPハンドラーを指すiframeについて考えています... iframeは動作します。残念なことに、すべてがパイプに投げ込まれます。いつでも最初のページを取り除き、子犬を送ることができると思います...
すごい。 HTTPハンドラーは不要です。 MVCのカスタムActionResultで十分です。 friggenはどれほど素晴らしいですか?
解決
最も簡単な方法は、詳細ページからリンク(target =" _blank")としてドキュメントを提供することだと思います。これにはいくつかの利点があります:
- ユーザーが要求しない限り、ドキュメント全体を取得してストリーミングする必要はありません。
- 少なくともIEはデフォルトのXPSビューアーとして既に登録されているため、ドキュメントに独自のウィンドウを指定することで、埋め込み方法に関する疑問を回避できます。
- ドキュメントのストリーミングソースを簡単に提供できます。クエリ文字列パラメーターのIDを持つHTTPハンドラーを使用するだけです。
その考えが気に入らなくても、ドキュメントの送信には必ずHTTPハンドラを使用してください。とても簡単です。VisualStudioで新しいHTTPハンドラーを作成すると、忙しい作業がすべて完了した素敵なページが表示されます。
他のヒント
XPSドキュメントを表示できるSilverlightコントロールがあります。 http://firstfloorsoftware.com/blog/announcement-document-toolkit-を参照してください。 for-silverlight / その他