2010-11-25 3 views
1

Ich habe ein Servlet, das eine PDF zurückgibt. Was ich versuche, ist das Laden der PDF in Ext.Window. Unten ist die BeispielquelleLaden von PDF in Ext.Window

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

Wobei "hisAmpPhyWin" eine Ext.Window-Instanz ist.

Die Sache ist es zeigt den PDF-Inhalt (ich meine ASCII-Zeichen) nicht das eigentliche PDF im Browser.

Bitte helfen Sie, dieses Problem zu beheben.

Antwort

5

Ich glaube, Sie besser dran sein könnte ein IFRAME-Tag für diese Verwendung.

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(); 

Hinweis: Ein Browser nur Ihre Daten als PDF öffnet, wenn er den Inhaltstyp kenntapplication/pdf ist, hier Sie die AJAX .load() Methode verwenden, die des Inhaltstypen von dem Rückweg ignoriert Servlet-Antwort, wenn Sie jedoch direkt mit einem IFRAME darauf verweisen, wendet der Browser die korrekte MIME format an.

Vergessen Sie nicht sicher jede Instanz des Fensters machen zerstört (closeAction = 'close', die standardmäßig eingestellt ist), ansonsten wird es Öffnung hält das gleiche PDF-Dokument immer und immer wieder auf.

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' 
    }); 
});