1

PDF ファイルはサーバー側で生成され、ダウンロードのためにクライアント側にプッシュされます。ダウンロードは Windows のすべてのブラウザーで機能しますが、IPAD では失敗します。お知らせ下さい。

仕様:OS 6、Safari 6.1、Chrome 23.0.1271.100

注意: このアプリケーションでは、pdf は新しい URL にダウンロードされません (リダイレクトなし)。

一般的な動作: iPad ブラウザー (safari / chrome) はダウンロード ウィンドウをサポートしていないため、pdf を開くことが期待され、pdf 互換アプリで表示するオプションが提供されます。これは現在起こっていません。

ダウンロード用に以下のサーブレット アクション コードをデバッグすると、pdf ファイルはサーバー上で正常に生成されますが、Ipad のブラウザーには表示されません :-(

コードサンプル:

/** 設定応答ヘッダー **/

      response.setHeader("Content-Type", "application/pdf");
      response.setHeader("Content-Disposition", "attachment;filename=sample.pdf"); 
      response.setHeader("Connection", "close");
      response.setHeader("Cache-Control","cache");
      response.setHeader("Pragma","cache");
      response.setDateHeader ("Expires", dt.getTime() + 100000);

/** 出力への書き込み **/

      InputStream stream = info.getInputStream(); 
      OutputStream os = response.getOutputStream();
      try {
            response.setContentType(contentType);
            copy(stream, response.getOutputStream());
      }
      finally {
      if (stream != null) {
         stream.close();
      }
 }
4

2 に答える 2

2

テスト後、問題は BROWSER 固有のものであったため、上に貼り付けたダウンロード アクション コードは正常に機能しているように見えました。

Andriod タブレット - Firefox ブラウザーは、pdf をポップアップ ウィンドウにダウンロードします。IPad : Safari - 修正: コンテンツを強制的に新しいタブで開くようにしました。

window.open(print_url);

ここで、print_url は baseurl+action.do+additional_parameter です。

于 2013-01-23T00:47:20.857 に答える
1

ブラウザーに保存を要求する代わりに PDF を表示するには、「添付ファイル」の代わりに「インライン」を使用します。

response.setHeader("Content-Disposition", "inline;filename=sample.pdf"); 

また、コンテンツ タイプを 2 回設定しています。1 回はヘッダーで、もう 1 回はsetContentType(). これらの 2 つのヘッダーが相互作用するのか、それとも相殺されるのかはわかりません。そのため、エラーの原因であるとは断言できませんが、変更を検討する必要があるようです。

于 2013-01-10T20:27:26.293 に答える