我尝试使用dompdf生成pdf,如何在浏览器的新选项卡中打开pdf?比如,我单击PDF的链接,它应该在新选项卡中打开,而不是自动保存。我想让用户在首先看到文件后选择保存文件。我怎么做?
每当我在文件末尾使用$ pdf->输出时,它不会改变任何东西,文件仍会自动下载。 请帮忙。谢谢。
答案 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>