PDF通过ajax以字节数组的形式返回。根据参数的不同,将显示“获取错误”无效URL或空白pdf
来自spring控制器的代码,它正在将字节数组(pdf)发送回ajax调用PDF通过ajax以字节数组的形式返回。根据参数的不同,将显示“获取错误”无效URL或空白pdf,ajax,spring-mvc,pdf,google-chrome-extension,base64,Ajax,Spring Mvc,Pdf,Google Chrome Extension,Base64,来自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.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);
我从几个不同的代码示例中得到了关于堆栈溢出的提示,但没有一个与我的完全相同。我没有使用任何PHP,没有数据库,也没有将文件保存在服务器上我只是将html属性“data”指向构建pdf响应的http请求,而不是单独进行ajax调用并尝试修补结果,从而解决了这一问题。通用解决方案:这对我有效(pdf模式对话框从字节[]通过MVC ajax调用)
<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">
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