我尝试使用chrome-php/chrome加载刀片视图,然后将其输出到浏览器,而不是保存它。
然而,使用他们的GitHub中的文档,我无法构建一个这样做的工作代码。
我试过:
public function createPdf(Request $request)
{
$page = $browser->createPage();
$page->navigate('http://example.com/path-to-blade-file')->waitForNavigation();
$html = $page->getHtml(10000);
header('Content-Description: File Transfer');
header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename=filename.pdf');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
// How to then use the HTML from the Blade to display the PDF?
}
但是我不能使用他们的方法直接用echo base64_decode($pdf->getBase64())
输出到浏览器,因为我有一个HTML字符串而不是$pdf
对象,我找不到从HTML创建PDF的方法
另外,是否有更好的方法来加载刀片视图,而不是使用完整的URL?
2条答案
按热度按时间eoigrqb61#
我设法让它工作,我首先需要将刀片视图转换为原始HTML字符串,然后使用
setHtml()
设置无头chrome示例的页面内容,然后在页面上调用pdf()
方法并在解码其base64
值后输出:4nkexdtk2#
我曾经将PDF文件保存在存储路径中,用
Storage::download('path.pdf')
下载。