显示嵌入浏览器的pdf的最佳方式(chrome,IE11 / Edge,Safari)

时间:2016-09-08 20:17:45

标签: angularjs pdf cross-browser mobile-safari microsoft-edge

我正在尝试显示由RESTful服务的GET调用创建的pdf。在HTML中我使用的对象标签如下

<object data={{$ctrl.miEstimatePdfData}} type="application/pdf" 
    width="100%" height="100%" alt="pdf" class="view-pdf_document"> 
    <p>Estimate Preview Cannot be displayed.</p>    
</object>

在js文件中

miEstimateService.getMitchellEstimate(response.estimate.id)
    .then(function (response) {
    var blob = new Blob([(response.data)], { type: 'application/pdf' });
    if (window.navigator.msSaveOrOpenBlob) {
        $window.navigator.msSaveOrOpenBlob(blob, "estimatePreview.pdf");
    } else {
        var fileUrl = URL.createObjectURL(blob);
        $scope.miEstimatePdfData = $sce.trustAsResourceUrl(fileUrl);
    }
});

这在chrome中完美无缺 由于IE11 / Edge不允许显示blob URL,我使用.msSaveOrOpenBlob,但这不会在浏览器窗口中打开pdf。它承诺用户保存或打开pdf并在Acrobat Reader(IE11)或新的浏览器窗口(Edge)中打开它。 在Safari中,PDF在浏览器中正确呈现,但不是自由流动或可滚动的,因此大部分第二页都不可见。

我已经研究了很多并且看了很多SO问题。是否有适用于所有浏览器的解决方案 - chrome,IE11 / Edge和Safari?

谢谢, SDD

0 个答案:

没有答案