16

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

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

4

5 回答 5

48

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

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

于 2012-07-03T17:13:17.637 回答
3

我的网站也有同样的问题(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);
}
于 2014-09-27T18:52:14.580 回答
3

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

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

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

于 2017-12-06T10:33:19.243 回答
2

好吧,您可以使用 ->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>

这里有更多信息

于 2020-09-07T02:38:19.933 回答
1

我仍在尝试,但这样的东西也可以正常工作

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

有了这个,您可以在浏览器中将动态值添加到您的 pdf 文件页面。

于 2017-01-23T08:44:18.887 回答