【问题标题】:How do I link to a pdf in AngularJS?如何在 AngularJS 中链接到 pdf?
【发布时间】:2015-12-18 19:32:03
【问题描述】:

下面的代码包含一个超链接,当用户单击该链接时,该超链接会导致服务器上的 spring 生成的 pdf 加载到新的浏览器窗口中。问题是一些用户在他们的浏览器中阻止了弹出窗口。 当用户单击链接时,需要对以下代码进行哪些特定更改才能在同一浏览器窗口中打开 pdf? 请注意,此 pdf 是由 spring 控制器生成的。

这里是html:

    <p><a ng-click="getPdf()">Show PDF</a></p>  

这里是 Angular 控制器代码:

angular.module('message', ['auth']).controller('message', function($scope, $http, $sce, auth) {

    $scope.authenticated = function() {
        return auth.authenticated;
    }

    $scope.getPdf = function(){
          $http.get('/api/some-pdfr', {responseType: 'arraybuffer'})
          .success(function (data) {
            var file = new Blob([data], {type: 'application/pdf'});
            var fileURL = URL.createObjectURL(file);
            window.open(fileURL);
          });
    }
});

【问题讨论】:

    标签: javascript angularjs spring pdf


    【解决方案1】:

    window.open 支持第二个参数 windowName。您可以将其设置为 "_self" 以在同一窗口中打开 URL。

    window.open(fileURL, "_self");
    

    更多信息请参见here

    更好的方法可能是让指令在导航之前将链接 href 更新为正确的 url。这将允许您使用 _blank 作为目标并在新选项卡/窗口中打开它。

    【讨论】:

    • 有效的语法是window.open(fileURL, _self);。感谢您和 +1 的快速回复。
    • 没问题,很高兴为您提供帮助:)
    【解决方案2】:

    而不是调用window.open,您需要向用户提供一个链接以单击其href 为fileUrl。您可以通过在用户单击链接之前生成 PDF 来执行此操作,或者在生成 PDF 之后为他们提供单独的链接。

    【讨论】:

      猜你喜欢
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      • 2017-03-17
      • 2017-11-10
      • 2017-02-18
      • 1970-01-01
      • 2017-11-15
      相关资源
      最近更新 更多