2010-11-25 17 views
1

私はPDFを返すサーブレットを持っています。私がしようとしているのは、PDFをExt.Windowに読み込むことです。以下はサンプルソースですPDFをExt.Windowに読み込む

  Ext.getCmp('hisAmpPhyWin').load(
        { 
         url:'servlet/Servlet/', 
         params: {xhtml:xhtmlData}, 
         text: 'Loading PDF...', 
         scripts: false 
        }); 

ここで 'hisAmpPhyWin'はExt.Windowインスタンスです。

これは、ブラウザの実際のPDFではなく、PDFコンテンツ(つまりASCII文字)を表示していることです。

この問題を解決するのを手伝ってください。

答えて

5

私はあなたがこのためにIFRAMEタグを使用したほうが良いかもしれないと思います。

var win = new Ext.Window({ 
    title: 'PDF Content', 
    width: 420, 
    height: 320, 
    plain:true, 
    html: String.format(
     '<iframe src="servlet/Servlet?p1={0}&p2={1}" width="400" height="300" />', 
     xhtmlData.p1, xhtmlData.p2) 
}) 
win.show(); 

注:それはがapplication/pdfあるコンテンツタイプを知っている場合のみがPDFとしてデータを開くブラウザは、ここであなたは無視AJAX​​方法を使用しているから戻ってくるコンテンツタイプサーブレットの応答がありますが、IFRAMEを使用して直接参照すると、ブラウザは正しいMIME formatを適用します。

いけない、あなたのウィンドウのすべてのインスタンスが(デフォルトで設定されcloseAction = 'close'を)破壊されることを確認を作ることを忘れて、それ以外の場合は何度も何度も同じPDFドキュメントを開くアップしておこう。

0
Ext.onReady(function() { 
    Ext.create({ 
     title: 'My PDF', 
     xtype: 'panel', 
     width: 600, 
     height: 400, 
     items: { 
      xtype: 'box', 
      autoEl: { 
       tag: 'iframe', 
       style: 'height: 100%; width: 100%', 
       src: '/files/pdf-sample.pdf' 
      } 
     }, 
     renderTo: 'output' 
    }); 
}); 
関連する問題