【问题标题】:How to generate PDF in laravel using laravel-dompdf library如何使用 laravel-dompdf 库在 laravel 中生成 PDF
【发布时间】:2018-08-20 11:59:56
【问题描述】:

我正在尝试使用 laravel-dompdf 库生成 pdf。我已经通过composer下载了这个包。

composer require barryvdh/laravel-dompdf

我已经更新了我的配置 >> app.php

'providers' => [
    ....
    Barryvdh\DomPDF\ServiceProvider::class,
],
'aliases' => [
    ....
    'PDF' => Barryvdh\DomPDF\Facade::class,
],

我在控制器中包含了 PDF 类

use PDF;

我的控制器HomeController.php

<?php

namespace App\Http\Controllers;
use PDF;
use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function index(){
        $pdf = PDF::loadView('welcome');
        return $pdf->download('invoice.pdf');
    }
}

但是当我调用这个方法时,它会显示以下错误

"fopen(C:\Users\asus\Desktop\Laravel\PDFGenerator\storage\fonts/\b4947bfc07f9f11b363f4d7446cd3e99.ufm): 无法打开流:没有这样的文件或目录”

我还在我的 bootstrap/app.php 中添加了以下内容

$app->register(\Barryvdh\DomPDF\ServiceProvider::class);
$app->configure('dompdf');

在我的配置目录中没有生成 dompdf.php。我试过了

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

但它显示以下错误

PHP 致命错误:未捕获的 ReflectionException:类配置在

中不存在

C:\Users\asus\Desktop\Laravel\PDFGenerator\vendor\laravel\framework\src\Illuminate\Container\Container.php:767 堆栈跟踪: C:\Users\asus\Desktop\Laravel\PDFGenerator\vendor\laravel\framework\src\Illuminate\Container\Container.php(767): ReflectionClass->__construct('config') C:\Users\asus\Desktop\Laravel\PDFGenerator\vendor\laravel\framework\src\Illuminate\Container\Container.php(646): 照亮\容器\容器->构建('配置') C:\Users\asus\Desktop\Laravel\PDFGenerator\vendor\laravel\framework\src\Illuminate\Container\Container.php(601): Illuminate\Container\Container->resolve('config', Array) C:\Users\asus\Desktop\Laravel\PDFGenerator\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(740): Illuminate\Container\Container->make('config', Array) C:\Users\asus\Desktop\Laravel\PDFGenerator\vendor\laravel\framework\src\Illuminate\Container\Container.php(1210): Illuminate\Foundation\Application->make('config') C:\U in C:\Users\asus\Desktop\Laravel\PDFGenerator\vendor\laravel\framework\src\Illuminate\Container\Container.php 在第 767 行

【问题讨论】:

标签: php laravel pdf dompdf


【解决方案1】:

默认配置设置在 config/dompdf.php 中设置。将此文件复制到您自己的配置目录以修改值。您可以使用以下命令发布配置:

php artisan vendor:publish

您仍然可以在使用此命令生成 pdf 之前更改代码中的 dompdf 选项:

PDF::setOptions(['dpi' => 150, 'defaultFont' => 'sans-serif']);

可用选项及其默认值:

rootDir: "{app_directory}/vendor/dompdf/dompdf"
tempDir: "/tmp" (available in config/dompdf.php)
fontDir: "{app_directory}/storage/fonts/" (available in config/dompdf.php)
fontCache: "{app_directory}/storage/fonts/" (available in config/dompdf.php)
chroot: "{app_directory}" (available in config/dompdf.php)
logOutputFile: "/tmp/log.htm"
defaultMediaType: "screen" (available in config/dompdf.php)
defaultPaperSize: "a4" (available in config/dompdf.php)
defaultFont: "serif" (available in config/dompdf.php)
dpi: 96 (available in config/dompdf.php)
fontHeightRatio: 1.1 (available in config/dompdf.php)
isPhpEnabled: false (available in config/dompdf.php)
isRemoteEnabled: true (available in config/dompdf.php)
isJavascriptEnabled: true (available in config/dompdf.php)
isHtml5ParserEnabled: false (available in config/dompdf.php)
isFontSubsettingEnabled: false (available in config/dompdf.php)
debugPng: false
debugKeepTemp: false
debugCss: false
debugLayout: false
debugLayoutLines: true
debugLayoutBlocks: true
debugLayoutInline: true
debugLayoutPaddingBox: true
pdfBackend: "CPDF" (available in config/dompdf.php)
pdflibLicense: ""
adminUsername: "user"
adminPassword: "password"

【讨论】:

  • 我无法使用 >> php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider" 发布
  • 你的 laravel 版本是什么?
  • 致命错误:未捕获的 ReflectionException:C:\Users\asus\Desktop\Laravel\PDFGenerator\vendor\laravel\framework\src\Illuminate\Container\Container.php:767 中不存在类配置
【解决方案2】:

删除

$app->register(\Barryvdh\DomPDF\ServiceProvider::class);
$app->configure('dompdf');

它适用于 Lumen 而不是 Laravel。 您仍然需要指定字体。 这是我的方式:

$pdf = PDF::setOptions(['defaultFont' => 'dejavu serif'])->loadView('some_view', $data);
return $pdf->stream('filename.pdf');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多