在浏览器中查看pdf流

时间:2019-06-14 07:45:30

标签: php laravel laravel-5.8

我有一个PDF文件,我想在浏览器选项卡中查看。我知道我可以直接使用文件链接来显示它,但是我想读取变量中文件的内容并使用该变量来显示文件。背后的原因是,我要在读取变量后立即删除文件。

PHP:

$fdata = file_get_contents($tmppdf);
header("Content-type: application/pdf");
header("Content-disposition: inline; filename=".$tmppdf);
return $fdata;

Ajax:

$('body').on('click', '.printInvoice', function () {
     var purchase_id = $(this).data("id");
     // window.location.href = "/purchases/print" + '/' + purchase_id;
     window.open('/purchases/print' + '/' + purchase_id, '_blank');
});

我得到的是二进制内容。有人可以帮忙,我的代码有什么问题。

enter image description here

更新: 将我的Ajax代码更改为下面,现在我得到了一个空白的pdf页面

$('body').on('click', '.printInvoice', function () {
   var purchase_id = $(this).data("id");
   $.ajax({
     type: "GET",
     url: "/purchases/print" + '/' + purchase_id,
     success: function (data) {
        var blob = new Blob([data], {type: 'application/pdf'});
        var blobURL = window.URL.createObjectURL(blob);
        window.open(blobURL,'_blank');
        },
     error: function (data) {
        alert("Unable to Print !!!");
        }
});

2 个答案:

答案 0 :(得分:1)

Laravel实际上具有内置功能来返回file responses。这将自动设置正确的标题,以便在浏览器中显示文件。

return response()->file($tmppdf);

答案 1 :(得分:0)

也许:

LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/xe/lib