由于iOS7存在,我遇到了jsPDF的大麻烦。我们开发了一个Web应用程序,并使用jsPDF即时创建PDF。我们在新的Safari窗口中打开PDF,以便用户可以访问Adobe Reader以通过Mail发送PDF或执行其他操作。在iOS6中这没有问题,但在iOS7中,您无法在新窗口中打开data:application/pdf;base64
链接!请注意,只有将Web App添加到主屏幕时才会发生这种情况。
如果有人有解决方案,解决方法或其他有用的信息,我很乐意听到。
答案 0 :(得分:5)
有一个解决方案! 创建一个html文件(例如pdf.html)并添加
<!DOCTYPE html><html>
<head>
<title></title>
</head>
<body>
<script>
document.location.href = document.location.hash.substr(1);
</script>
</body>
</html>
创建链接
<a class="btn btn-default" id="pdfData" ng-show="isMobile && pdfReady" ref="app/views/pdf.html" target="xxx">
Download PDF
</a>
在“渲染”pdf后,获取datauristring
并将其作为哈希添加到您的链接中。
var pdfData = doc.output('datauristring');
var element = document.getElementById('pdfData');
element.href = "app/views/pdf.html#" + pdfData;
element.target = "xxx";
$scope.pdfReady = true; // show download link
现在,如果用户点击下载链接,则会在safari中打开一个新窗口并显示pdf
答案 1 :(得分:0)
您是否尝试过使用doc.output('dataurlnewwindow')
?
如果这不起作用,您可以创建一个新的路由,如/pdf/download?data=base64data...
,并使用Content-Type: application/pdf
并根据给定的参数数据响应pdf。请务必避免可能出现的安全问题,以免其他任何人提供pdf文件。