私が知っている奇妙な質問ですが、IFrame もあるページの非表示フィールド内に PDF バイトデータが含まれていると言います。
IFrame が Adobe プラグインにロードされてデータが表示されるように、JavaScript を使用して PDF データを IFrame に書き込む方法はありますか?
これを行う理由は、非表示フィールドに PDF データが必要なためです。ユーザーがボタンをクリックすると、データを使用して JS を介して Java アプレットを呼び出し、PDF バイト データを独自のシステムに書き込むことができます。 . PDFも表示したいと思います。
そう:
- 非表示フィールドにチャッキングされた PDF バイト データ (サーバー上で生成)。
- 隠しフィールドからの PDF バイト データは、間もなく発見される StackOverflow JS マジックによってクライアント側で IFrame に書き込まれ 、表示されます。
- ボタンがクリックされたとき Java アプレットがクライアント側で呼び出され、非表示フィールドに格納された PDF バイト データを渡します。
サウスパークのアンダーパンツ ノームのように、フェーズ 1 と 3 がありますが、フェーズ 2 はありません!
どんなアイデアもありがたく受け取った!
詳細情報:
JS 呼び出しを介して Java アプレットに渡されるように、クライアント側でバイト データを使用できるようにする必要があります。現在、これは非表示フィールドを介して行われています。それは大丈夫です、それはうまく動作します。
問題は、ajax モーダル ダイアログの OK ボタンがクリックされた場合にのみアプレットの呼び出しが行われることです (「このドキュメントを UglyProprietorySystem に送信しますか?」)。
ご存じのとおり、Adobe プラグイン ディスプレイの上には何も配置できません。明らかに、ページ全体が PDF タイプの場合、JS がダイアログを表示する場所がないため、それは機能しません。また、IFrame を使用する場合、プラグインが表示するものの上に何も置くことはできません (それは事実上、別のアプリの領空と違反することは、まったく失礼です!)。
私たちはこれを次の方法で回避しました。
- 一般的な PDF ドキュメントのぼやけた画像を最初に表示し、その上にモーダル ダイアログをポップします。
- ユーザーがダイアログに応答したとき、hiden フィールドからの pdf バイト データを使用して Java アプリを呼び出しました (または呼び出しませんでした)。
- 次に、非表示フィールドをクリアした後にポストバックしました (Woo! PDF バイナリ データを含むフォームをポストバックすると、サーバーは認識しません!)
- コード ビハインドの page_load では、ポストバック時に、応答ストリームに PDF バイト データを書き込み、contenttype を appplication/pdf に設定して、pdf を表示します。
素晴らしい。それはすべて機能し、私たちが望むものを手に入れます。
唯一の問題は、次のいずれかを行う必要があることです。
* generate the PDF data twice (once on initital page_load for the clientside call to our applet and then again on postback to display).
また
* We store the PDF byte data in the session after the first response so as to be able to, after the postback, still have the pdf data to be able to display it.
どちらも素晴らしいものではありませんが、私たちは後者を採用しましたが、今はできればそれを避けたいと考えています.
したがって、PDF を生成し、非表示フィールドに配置し、アプレット呼び出しを介して PDF を独自のシステムに保存するボタンをページに配置し、クライアントの非表示フィールドに既にそのデータを使用して IFrame に書き込むというアイデアしたがって、それを表示します。
ふぅ!
そのため、JS を使用するクライアントで、pdf バイナリ データを IFrame に書き込み、そのコンテンツ タイプを application/pdf に設定して、ブラウザが adobe プラグインをロードして表示するようにしたいと考えました。