我尝试从视图生成PDF,但样式就是不出来。我尝试使用3个不同的库,但结果没有太大不同。我错过了什么吗?
第一个月
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test View</title>
<link rel="stylesheet" type="text/css" media="screen" href="{{ asset('css/app.css') }}">
<script src="{{ asset('js/app.js') }}" defer></script>
</head>
<body class="font-sans antialiased">
<div class="grid grid-cols-3">
<div class="bg-red-200 col-span-2 h-screen"></div>
<div class="bg-blue-200 h-screen">
<div class="grid grid-cols-8">
<div class="col-span-7">
<div class="rounded-t-full w-full h-screen flex items-center justify-center bg-green-600">
<div class="h-60 w-60 rounded-full bg-blue-500">TEST</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
字符串appearance
个
的数据dompdf export method
个
protected function dompdfImplementation()
{
$dompdf = new Dompdf;
$dompdf->getOptions()->setChroot(public_path());
$dompdf->loadHtml(view('view')->render());
$dompdf->stream('view.pdf', ['Attachment' => false]);
}
型dompdf export result
个
的mpdf export method
个
protected function mpdfImplementation()
{
$mpdf = new Mpdf;
$mpdf->WriteHTML(view('view')->render());
$mpdf->output();
}
型mpdf export result
个
的tcpdf export method
个
protected function tcpdfImplementation()
{
$tcpdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
$tcpdf->AddPage();
$tcpdf->writeHTML(view('view')->render());
$tcpdf->Output('view.pdf', 'I');
}
型tcpdf export result
个
的
不使用css inliner就不能将视图导出到pdf吗?
我是不是最好手动截取一个完整的页面截图,粘贴到文本文档中,然后保存为pdf文件?
4条答案
按热度按时间zkure5ic1#
这个软件包工作起来就像一个护身符(和spatie一样):https://github.com/spatie/browsershot
根据医生的说法:
该软件包可以将网页转换为图像或PDF格式。转换是在幕后由 puppet 师完成的, puppet 师控制着无头版本的谷歌Chrome。
xmq68pz92#
如果您需要支持现代CSS功能,如flexbox,我想您的Tailwind示例使用了它,那么最好使用无头Chrome(或稍旧的wkhtmltopdf)来生成PDF。
使用
chrome-php/chrome
的示例:字符串
使用PHP PDF库来利用它们在浏览器方法上的一些好处-颜色处理,预打印,条形码支持,页眉和页脚,页码,TOC等,但考虑到它们对HTML和CSS的支持,预计最有可能需要定制的模板和样式表。
当然,前一段也适用于当你无法运行PHP以外的其他软件与您的托管服务提供商。
8nuwlpux3#
这个答案可以解决问题:https://stackoverflow.com/a/36695827/5540654
基本上,您需要在文档的
head
中添加base
标记。字符串
我用wkhtmltopdf工作过,可能也是类似的问题。
4nkexdtk4#
后
barryvdh/laravel-dompdf
而不是dompdf/dompdf
media="print"
print:*
类chrome-php
工作,但无济于事barryvdh/excel
的pdf导出。没有什么工作,所以我得到的解决方案是一个坏的。
1.在Firefox中打开视图。
1.截图整个页面(不只是可见内容)。
1.使用我找到的第一个在线PNG到PDF转换器。
我希望有一个不那么痛苦的方法来做这件事,但它看起来不像。这个糟糕的解决方案实际上有效。