3

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

如果有人有解决方案、解决方法或其他有用的信息,我将很高兴听到。

4

2 回答 2

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

于 2014-02-07T13:50:29.880 回答
1

你试过使用doc.output('dataurlnewwindow')吗?

如果这不起作用,您可以创建一个新的路由,并使用并基于给定的参数数据/pdf/download?data=base64data...响应 pdf 。Content-Type: application/pdf一定要避免可能出现的安全问题,这样就没有其他人可以为您的 url 提供 pdf 文件。

于 2014-02-04T14:19:37.680 回答