如何创建Laravel PDF文件并下载?
#php #laravel #pdf #mpdf

Laravel PDF:PDF发电机,用于Laravel 5.x | 6.x | 7.x | 8.x | 9.x

使用此PDF包装器轻松地从HTML生成PDF文档。

内容

安装指南

在您的composer.json中需要此软件包或通过运行:

composer require zanysoft/laravel-pdf

要开始使用Laravel,请将服务提供商和立面添加到您的config/app.php

'providers' => [
    // ...
    ZanySoft\LaravelPDF\PdfServiceProvider::class
]
'aliases' => [
    // ...
    'PDF' => ZanySoft\LaravelPDF\Facades\PDF::class
]

配置

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

php artisan vendor:publish --provider="ZanySoft\LaravelPDF\PdfServiceProvider"

基本用法

使用Laravel PDF将类似的内容添加到您的一个控制器中。您可以将数据传递到/resources/views中的视图。

use PDF;

function generate_pdf() {
    $data = [
        'foo' => 'bar'
    ];
    $pdf = PDF::::Make();
    $pdf->loadView('pdf.document', $data);
    return $pdf->stream('document.pdf');
}


use ZanySoft\LaravelPDF\PDF;

function generate_pdf() {
    $data = [
        'foo' => 'bar'
    ];
    $pdf = new PDF();
    $pdf->loadView('pdf.document', $data);
    return $pdf->stream('document.pdf');
}

如果您想从HTML内容生成:

    $content = "Hello this is first pdf file."
    $pdf->loadHTML($content);
    return $pdf->stream('document.pdf');

如果要从文件生成:

    $file = "file.txt"
    $pdf->loadFile($file);
    return $pdf->stream('document.pdf');

如果要下载PDF文件:

    return $pdf->embed('document.pdf');

如果要将PDF保存到服务器:

    return $pdf->save('with-complete-path/document.pdf');

如果要添加PDF文件作为电子邮件的附件:

    return $pdf->embed('document.pdf');

标题和页脚

如果您想在每个页面上出现标题和页脚,请将它们添加到您的<body>标签中:

<htmlpageheader name="page-header">
    Your Header Content
</htmlpageheader>

<htmlpagefooter name="page-footer">
    Your Footer Content
</htmlpagefooter>

现在,您只需要在CSS中使用名称属性来定义它们:

@page {
    header: page-header;
    footer: page-footer;
}

可以使用标题和页脚内部的{PAGENO}显示页码。

包括字体

默认情况下您可以使用所有字体shipped with mPDF

自定义字体

您可以在生成的PDF中使用自己的字体。 TTF文件必须位于一个文件夹中,例如/resources/fonts/。将其添加到您的配置文件(/config/pdf.php):

    return [
        'custom_font_path' => base_path('/resources/fonts/'), // don't forget the trailing slash!
    ];

,然后:

    $font_data = array(
        'examplefont' => [
            'R' => 'ExampleFont-Regular.ttf',      // regular font
            'B' => 'ExampleFont-Bold.ttf',         // optional: bold font
            'I' => 'ExampleFont-Italic.ttf',       // optional: italic font
            'BI' => 'ExampleFont-Bold-Italic.ttf', // optional: bold-italic font
        ]
        // ...add as many as you want.
    );

    $pdf->addCustomFont($font_data, true);
    // If your font file is unicode and "OpenType Layout" then set true. Default value is false.

现在您可以在CSS中使用字体:

body {
    font-family: 'examplefont', sans-serif;
}

设置保护

要设置保护,您只需调用SetProtection()方法并通过权限,用户密码和所有者密码传递数组。

密码是可选的。

有一些权限:'copy''print''modify''annot-forms''fill-forms''extract''assemble''print-highres'

use PDF;

function generate_pdf() {
    $data = [
        'foo' => 'bar'
    ];
    $pdf = PDF::Make();
    $pdf->SetProtection(['copy', 'print'], 'user_pass', 'owner_pass')
    $pdf->loadView('pdf.document', $data);

    return $pdf->stream('document.pdf');
}

在此处查找有关SetProtection()的更多信息:https://mpdf.github.io/reference/mpdf-functions/setprotection.html

文档

访问此链接以获取更多选项和设置:https://mpdf.github.io/