iOS 7(及更新版本)无法在新的浏览器窗口中打开PDF

时间:2014-01-07 17:53:37

标签: web-applications ios7 jspdf

由于iOS7存在,我遇到了jsPDF的大麻烦。我们开发了一个Web应用程序,并使用jsPDF即时创建PDF。我们在新的Safari窗口中打开PDF,以便用户可以访问Adobe Reader以通过Mail发送PDF或执行其他操作。在iOS6中这没有问题,但在iOS7中,您无法在新窗口中打开data:application/pdf;base64链接!请注意,只有将Web App添加到主屏幕时才会发生这种情况。

如果有人有解决方案,解决方法或其他有用的信息,我很乐意听到。

2 个答案:

答案 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文件。