在Ext.Window中加载PDF

Sof*_*oft 1 servlets extjs

我有一个返回PDF的servlet.我尝试做的是将PDF加载到Ext.Window.以下是示例源

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

其中'hisAmpPhyWin'是一个Ext.Window实例.

事情是它显示PDF内容(我的意思是ascii字符)而不是浏览器中的实际PDF.

请帮助解决此问题.

Ste*_*las 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();
Run Code Online (Sandbox Code Playgroud)

注意:如果浏览器知道内容类型,则浏览器仅以 PDF格式打开数据,在这里您使用AJAX 方法忽略从servlet响应返回的内容类型,但是如果您使用IFRAME直接引用它,则浏览器将应用正确的MIME格式.application/pdf.load()

不要忘记确保窗口的每个实例都被销毁(closeAction = 'close'默认设置),否则它会一遍又一遍地打开相同的PDF文档.