2010-11-25 26 views
1

J'ai une servlet qui retourne un PDF. Qu'est-ce que j'essaie de faire est de charger le fichier PDF à Ext.Window. Ci-dessous est la source d'échantillonChargement de PDF dans la fenêtre Ext.Window

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

Où 'hisAmpPhyWin' est une instance Ext.Window.

La chose est son indiquant la teneur en PDF (je veux dire des caractères ascii) pas le PDF réelle dans le navigateur.

S'il vous plaît aidez à résoudre ce problème.

Répondre

5

Je pense que vous pourriez être mieux d'utiliser une balise IFRAME pour cela.

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

Note: Un navigateur ne ouvre vos données au format PDF si elle connaît le type de contenu est application/pdf, ici vous utilisez la méthode AJAX .load() qui ne tient pas compte le type de contenu en revenant de la réponse de servlet, cependant si vous vous référez directement à l'aide d'un IFRAME le navigateur appliquera le MIME format correct.

Ne pas oublier de se assurer chaque instance de votre fenêtre est détruite (closeAction = 'close', qui est défini par défaut), sinon il va garder ouvrir le même document PDF, encore et encore.

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