我现在有这种刀片视图来显示客户的发票
我看到他们创建pdf的大部分网站都在浏览器中显示。那么我认为浏览器允许打印和下载以及放大/缩小。完全是这样的
所以任何提示或方法都可以轻松完成。我尝试过DomPDF,但它不会让我做复杂的风格。我想在浏览器中打开pdf并打印和下载
答案 0 :(得分:1)
在32位ubuntu上使用laravel 5.4。
将这三行添加到composer.json
"barryvdh/laravel-snappy": ">=0.4.0",
"h4cc/wkhtmltopdf-i386": "0.12.x",
"h4cc/wkhtmltoimage-i386": "0.12.x"
64位系统
"barryvdh/laravel-snappy": ">=0.4.0",
"h4cc/wkhtmltopdf-amd64": "0.12.x",
"h4cc/wkhtmltoimage-amd64": "0.12.x",
从您的终端导航到您的laravel文件夹并输入
作曲家更新
在config / app中,在“别名”
下添加这两行终端类型中的'PDF'=> Barryvdh \斯纳皮\外墙\ SnappyPdf ::类,
'SnappyImage'=> Barryvdh \斯纳皮\外墙\ SnappyImage ::类,
php artisan vendor:publish --provider =“Barryvdh \ Snappy \ ServiceProvider”
转到config / snappy并将'pdf'数组的二进制路径更改为此
'binary'=> BASE_PATH( '/供应商/ h4cc / wkhtmltopdf-I386 / bin中/ wkhtmltopdf-I386'),
和'image'数组到此:
'binary'=> BASE_PATH( '/供应商/ h4cc / wkhtmltoimage-I386 / bin中/ wkhtmltoimage-I386'),
要尝试一下,在控制器中,您可以执行以下操作:
public function postPDFPrint() {
$pdf = \App::make('snappy.pdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->inline();
}
如果您想从视图中打印,请加载视图并像往常一样传入数据。我建议使用特定于打印的CSS加载特定的“视图”以便打印到pdf。
public function postAdminPrint()
{
$form = Form::find(1);
$pdf = \PDF::loadView('form.admin-print'['form'=>$form]);
return $pdf->inline();
}
调试“退出状态码127:出错了......”错误。首先,我们尝试通过命令行打印。导航到终端内laravel安装的根目录,然后键入:
vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 http://www.google.com test.pdf
如果安装正确并且没有文件夹权限问题,那么您应该会在终端中看到以下行。
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done
google主页的打印应该出现在你的Laravel根目录中。否则,导致错误的是您的文件夹权限。
如果上述工作正在尝试将我上面写的二进制路径更改为:
/var/www/html/new/project/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64
/var/www/html/new/project/vendor/h4cc/hkhtmltoimage-amd64/bin/wkhtmltoimage-amd64
“/ var / www / html” - &gt;我在apache中的web文件夹 “/ new / project” - &gt;我的laravel目录
如何利用立面的选项:
// Within your controller class
use PDF;
public function YourControllerFunction(Model $model) {
$pdf = PDF::loadView('path.to.your.file',['model'=>$model])
->setPaper('a4')
->setOptions([
'header-html'=>"/var/www/html/{your-laravel-install-folder}/resources/views/header.html", // display a image logo on every page header
'footer-font-size'=>'8',
'footer-left'=>'Footer Left Text',
'footer-center'=>'Footer Center Text',
'footer-right'=>'Footer Right Text']);
return $pdf->inline();
}
您的“header.html”文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<img style="display:block;" height="100" src="https://dl.dropbox.com/{your-dropbox-image-id}?raw=1">
</body>
</html>
答案 1 :(得分:0)
DomPDF仍然不支持许多新的CSS功能。所以我使用的是laravel-snappy。您只需使用任何css框架或根据您的愿望创建一个html页面。然后使用snappy加载它,它将创建该页面的pdf。它基本上是url
或html
页面的快照,并创建PDF。所以你的pdf和html页面看起来完全一样。
现在,要下载PDF,您可以使用
return Response::download($filepath);
您可以在另一个标签页中打开该PDF文件,以便根据浏览器显示更多选项。