我有一个返回PDF的servlet。我尝试做的是将PDF加载到Ext.Window。以下是样本来源
Ext.getCmp('hisAmpPhyWin').load(
{
url:'servlet/Servlet/',
params: {xhtml:xhtmlData},
text: 'Loading PDF...',
scripts: false
});
'hisAmpPhyWin'是Ext.Window实例。
事情是它显示PDF内容(我的意思是ascii字符)而不是浏览器中的实际PDF。
请帮助解决此问题。
答案 0 :(得分: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 {{1 忽略从servlet响应返回的内容类型的方法,但是如果您使用IFRAME直接引用它,则浏览器将应用正确的MIME format。
别忘了确保窗口的每个实例都被销毁(.load()
,默认设置),否则它会一遍又一遍地打开相同的PDF文档试。
答案 1 :(得分:0)
我认为你不能本地做,但有一个非常好的用户体验应该做到。
答案 2 :(得分: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'
});
});