使用dompdf在新选项卡中打开PDF

时间:2012-06-20 05:53:25

标签: dompdf

我尝试使用dompdf生成pdf,如何在浏览器的新选项卡中打开pdf?比如,我单击PDF的链接,它应该在新选项卡中打开,而不是自动保存。我想让用户在首先看到文件后选择保存文件。我怎么做?

每当我在文件末尾使用$ pdf->输出时,它不会改变任何东西,文件仍会自动下载。 请帮忙。谢谢。

5 个答案:

答案 0 :(得分:43)

是否在浏览器中下载或查看PDF取决于几个因素。一个是您的浏览器设置,但我们无法控制。第二个是dompdf如何将PDF呈现给浏览器。您可以告诉dompdf使用$dompdf->stream('my.pdf',array('Attachment'=>0));提供PDF以供直接查看。

至于在新标签页中打开。这取决于您如何生成PDF。但是提供带有目标属性的链接的最简单方法。

答案 1 :(得分:2)

我的网站(http://www.pdfwebcreator.com

存在同样的问题

我的解决方案是:

    $myfile = fopen($strFileName, "r") or die("Unable to open file!");
    $fileSize = filesize($strFileName);
    header("HTTP/1.1 200 OK");
    header("Pragma: public");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

    header("Cache-Control: private", false);

    header("Content-type: application/pdf");
    header("Content-Disposition: attachment; filename=\"temporaryPdf.pdf\""); 

    header("Content-Transfer-Encoding: binary");
    header("Content-Length: " . $fileSize);

    echo fread($myfile, $fileSize);
}

答案 2 :(得分:1)

我还在尝试,但这样的事情也很好

$pdf->loadView('file/path', compact('values'));
return $pdf->stream();

通过此操作,您可以在浏览器中的pdf文件页面中添加动态值。

答案 3 :(得分:0)

我不知道你是否有,但如果你在这一行中使用false:

$dompdf-> stream("pasta/doc/relatorio.pdf", array("Attachment" => false));

您可以在浏览器中看到pdf。

答案 4 :(得分:0)

您可以使用-> stream();在链的末端。

示例

//Routes  (web.php in case laravel version >= 5.4)
Route::get('/pdf', 'PdfController@pdfStream')->name('pdfStream');

//PdfController.php
public function pdfStream(Request $request) {
   $data["info"] = "I is usefull!";
   $pdf = PDF::loadView('whateveryourviewname', $data);
   return $pdf->stream('whateveryourviewname.pdf');
}

//yourViewPage.blade.php
<a href="{{route("pdfStream")}}" target="_blank" > click me to pdf </a>

Here more information