我的Angular 1.5应用程序通过REST连接到Java / Tomcat / Spring后端服务器。
一种REST服务会生成PDF并将其发送给客户端。它在DEsktop浏览器(至少是FF,Chrome)上运行良好,但是
无论我使用的浏览器是什么(Chrome,Safari ), 我都无法在iOS(例如ipad)上看到PDF内容。
这是角度代码:
$http.get("/displayPdf", {responseType: 'arraybuffer', params: {id: 1}}).
success(function(data) {
var blob = new Blob([data], {type 'application/pdf'});
var objectUrl = window.URL.createObjectURL(blob);
window.open(objectUrl);
}
);
Spring / Jax-RS代码是:
@GET
@Path("displayPdf")
@Produces("application/pdf")
Response displayPdf(@QueryParam("id") Long id) {
byte[] bytes = service.generatePdf();
return javax.ws.rs.core.Response.ok().
entity(bytes).
header("Content-Type", "pdf").
header("Content-Disposition", "attachment; filename='test.pdf'").
build();
}
例如,我在这里做了研究(AngularJS:在angular应用程序中显示blob(.pdf)),但找不到合适的解决方案。
所以,请问您知道如何将生成的PDF显示给iPad / iPhone最终用户吗?
非常感谢
上面提出的解决方案都没有对我有用。
主要问题来自URL
iOS中没有正确检索到的问题。以下代码可以正常工作:
window.URL = window.URL || window.webkitURL;
即使这样,它也无法在Chrome iOS,Opera iOS上运行…因此,在深入研究互联网并受到以下问题启发之后:
…我最终得到以下代码(可在除iOS上的FF以外的所有iOS浏览器上使用):
if (window.navigator.msSaveOrOpenBlob) { //IE 11+
window.navigator.msSaveOrOpenBlob(blob, "my.pdf");
} else if (userAgent.match('FxiOS')) { //FF iOS
alert("Cannot display on FF iOS");
}
} else if (userAgent.match('CriOS')) { //Chrome iOS
var reader = new FileReader();
reader.onloadend = function () { $window.open(reader.result);};
reader.readAsDataURL(blob);
} else if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) { //Safari & Opera iOS
var url = $window.URL.createObjectURL(blob);
window.location.href = url;
}
问题内容: 我一直在尝试显示我从响应中获取的pdf文件。pdf必须使用例如在应用程序内显示。 我遇到了几个堆栈帖子,但是以某种方式我的示例似乎不起作用。 JS: 根据这份文件,我继续尝试… 现在,据我所知,将创建一个临时URL,该博客可以用作参考。 HTML: 我不确定如何在Angular中处理此问题,理想情况是 (1) 将其分配给作用域, (2) 将blob“准备/重建”到pdf (3) 使用,
我一直试图显示pdf文件,我从一个响应中得到一个blob。pdf必须使用
我正在尝试使用Swift在我的iOS应用程序中显示pdf。我从服务器得到的响应是pdf数据,它看起来如下所示: %PDF-1.4%ôiá1 0 obj 我检查了iOS PDF阅读器和PDFKit,但主要问题是我不明白如何处理应用程序中的响应。 有什么想法吗?谢谢!
有人能告诉我如何从Java中的HTTP触发器Azure函数发送pdf响应吗。 一旦该功能被触发,我需要从Azure存储中读取pdf,并将pdf作为响应返回到浏览器。
我正在用Android开发一个应用程序。我不知道如何从应用程序发送电子邮件?
问题内容: 我从这段代码中从laravel dompdf返回流数据 这是我的JS ajax代码 这是在ajax之后显示pdf的HTML 我低于错误 无法加载PDF文档 请帮助解决此问题。如何显示PDF文件。 问题答案: 默认情况下没有设置。您可以使用polyfill,例如实现二进制数据传输的jquery- ajax-blob-arraybuffer.js ,也可以利用。 。用element代替el