来自spring控制器的代码,它将字节数组(pdf)发送回ajax调用
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-control", "private");
response.setDateHeader("Expires", 0);
response.setContentType("application/pdf");;
if (pdf != null) {
response.setContentLength(pdf.length);
ServletOutputStream out;
try {
out = response.getOutputStream();
out.write(pdf);
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
此pdf动态添加到稍后可以打开的对话框中。 "数据"包含字节数组
var obj = $('<object width=100% height=100% style="float:left;"'
+ ' type="application/pdf"'
+ ' data="data:application/pdf,'
+ escape(data)
+ '"></object>');
$('#adjDialog'+rapRow).append(obj);
结果是看起来pdf是使用chrome扩展转换的,但数据属性未正确设置。我在PDF查看器中看到一个空PDF,当我用开发人员工具检查它时,我可以找到这个标记(没有写这个,由chrome生成)
<embed id="plugin" type="application/x-google-chrome-pdf" src="data:"
stream-url="blob:chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/E4E5DEA1-
DDF5-4300-9C43-8634ED843E50" headers="" background-color="0xFF525659" top-
toolbar-height="56">
^数据是空的但我希望它应该是我提供的网址。
如果我添加&#34 ;; base64&#34;数据属性没有任何加载,我得到
GET data:application/pdf;base64,%25PDF-1.4%0A%25%uFFFD%uFFFD%uFFFD%uFFFD%0A1%20…431343532353232343430323633%3E%5D%3E%3E%0Astartxref%0A84512%0A%25%25EOF%0A net::ERR_INVALID_URL
我已经从堆栈溢出的几个不同的代码示例中获取提示,但似乎没有什么像我的。我没有使用任何PHP,没有使用数据库,而且我没有在服务器上保存文件
答案 0 :(得分:0)
我通过将html属性“data”指向构建pdf响应的http请求而不是单独执行ajax调用并尝试修补结果来修复此问题。