类 dompdf.wrapper 不存在 laravel 4.2.0

问题描述 投票:0回答:3

我尝试在 barryvdh 编写的项目中将 dompdf 包与 Lavarel 4.2.0 一起使用,我尝试安装该包的三个不同版本(0.6*、0.6.1、0.5.2)

"name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.2.*",
        "fzaninotto/faker": "^1.6",
        "barryvdh/laravel-dompdf": "0.5.2"

每次我尝试使用

创建 PDF 文件时,
Route::get('/invoice', function()
{
$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();
});

我收到此错误

Class dompdf.wrapper does not exist (vendor\laravel\framework\src\Illuminate\Container\Container.php)
/ hand back the results of the functions, which allows functions to be
        // used as resolvers for more fine-tuned resolution of these objects.
        if ($concrete instanceof Closure)
        {
            return $concrete($this, $parameters);
        }

        $reflector = new ReflectionClass($concrete);

        // If the type is not instantiable, the developer is attempting to resolve
laravel dompdf
3个回答
0
投票

根据 文档,我们需要安装 Laravel 4 的 0.4.x 版本。您的项目正在使用 Laravel 5 的版本。

composer.json

"require": { 
    ... 
    "barryvdh/laravel-dompdf": "0.4.*"
}

要从容器解析 dompdf 服务,请使用

'dompdf'
,而不是
'dompdf.wrapper'

$pdf = App::make('dompdf');

或者,使用

PDF
外观:

use PDF; 
... 
$pdf = PDF::loadHTML('<h1>Test</h1>');

请务必在config/app.php注册服务提供者和facade


0
投票

我将文件

config/app.php
放入
providers
部分:

Barryvdh\DomPDF\ServiceProvider::class,

进入

aliases
部分:

'PDF'       => Barryvdh\DomPDF\Facade::class,

我在我的控制器中使用它:

use PDF;
...
$pdf = PDF::loadView('panel.cooperation-offers.pdf', $showData);

这是我的composer.json:

...
"require": {
    "php": ">=5.5.9",
    "laravel/framework": "5.2.*",
    "barryvdh/laravel-dompdf": "0.6.*"
}, ...

0
投票

为了解决此问题,请按照以下步骤操作:

步骤#1:使用以下脚本安装 barryvdh 软件包

composer require barryvdh/laravel-dompdf

步骤#2:运行以下脚本以在配置文件夹中创建新文件 [dompdf.php]

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"

第 3 步:在 resources/views 文件夹中创建新文件 [report.blade.php] 并在其中添加内容。

步骤#4:最终使用控制器生成并下载 PDF,如下所示:

    use Barryvdh\DomPDF\Facade\Pdf;

    class BookController extends Controller{
        public function generatePdf(Request $request){
            
            $id= $request->id;

            $fileName = 'Book_'.$id.'Report';

            $book = Book::where('id', $id)
            ->orderBy('created_at', 'desc')
            ->first();

            $data = [
                'book' => $book,
            ];

            $pdf = Pdf::loadView('book.repor', $data, [], 'UTF-8');

            $savePath = public_path('assets/book/report/single/'.$fileName .'.pdf');
        }
    }

第五步:就是这样。现在您已经有了根据您提供的视图生成的 PDF 文件。 [谢谢]

© www.soinside.com 2019 - 2024. All rights reserved.