websolutionstuff/pdf-laravel

Websolutionstuff 为 Laravel 6, Laravel 7, Laravel 8, Laravel 9 提供PDF支持

1.0 2022-12-25 16:26 UTC

This package is auto-updated.

Last update: 2024-09-29 05:57:17 UTC


README

Latest Stable Version Total Downloads License

安装

可以通过在项目的 composer.json 文件中要求 websolutionstuff/pdf-laravel 包来通过 composer 安装 Laravel PDF 服务提供程序。

composer require websolutionstuff/pdf-laravel

Laravel 5.5+ 将使用自动发现功能。

{
    "require": {
        "websolutionstuff/pdf-laravel": "^1.0"
    }
}

如果您不使用自动发现,您需要在 config/app.php 文件中包含服务提供程序和外观。

'providers' => [
    ...
    ...
    Websolutionstuff\PDF\ServiceProvider::class
]

//...

'aliases' => [
    ...
    ..
    'PDF' => Websolutionstuff\PDF\Facades\PDF::class
]

Lumen

在 Lumen 中添加以下行

$app->register(Websolutionstuff\PDF\ServiceProvider::class);
class_alias(Websolutionstuff\PDF\Facades\PDF::class, 'PDF');

示例

让我们看看一些美丽的示例。

use PDF; // at the top of the file

  PDF::SetTitle('Websolutionstuff PDF File');
  PDF::AddPage();
  PDF::Write(0, 'Websolutionstuff PDF File Generate');
  PDF::Output('websolutionstuff.pdf');

生成多个PDF的另一个示例

use PDF; // at the top of the file

  for ($i = 0; $i < 5; $i++) {
    PDF::SetTitle('Websolutionstuff PDF File'.$i);
    PDF::AddPage();
    PDF::Write(0, 'Websolutionstuff PDF File Generate'.$i);
    PDF::Output(public_path('websolutionstuff' . $i . '.pdf'), 'F');
    PDF::reset();
  }

示例 1:添加HTML文本

        $html = '<h1 style="color:red;">Hello World</h1>';
        
        PDF::SetTitle('Hello World');
        PDF::AddPage();
        PDF::writeHTML($html, true, false, true, false, '');
        PDF::Output('Example_1.pdf');

示例 2:无页眉和页脚

        // remove default header/footer
        PDF::setPrintHeader(false);
        PDF::setPrintFooter(false);
        
        // set margins
        PDF::SetMargins(20,20,20);

        // set auto page breaks
        PDF::SetAutoPageBreak(TRUE, 20);

        // set font
        PDF::SetFont('times', 'BI', 20);

        // add a page
        PDF::AddPage();

        // set some text to print
        $txt = <<<EOD
        PDF Example 2

        Default page header and footer are disabled using setPrintHeader() and setPrintFooter() methods.
        EOD;

        // print a block of text using Write()
        PDF::Write(0, $txt, '', 0, 'C', true, 0, false, false, 0);        

        //Close and output PDF document
        PDF::Output('example_2.pdf', 'I');

配置

PDF-Laravel 附带一些基本配置。如果您想覆盖默认值,可以发布配置,如下所示

php artisan vendor:publish --provider="Websolutionstuff\PDF\ServiceProvider"

现在访问 config/pdf.php 以进行自定义。

  • use_original_header 用于使用 PDF 的原始 Header()
    • 请注意,PDF::setHeaderCallback(function($pdf){}) 会覆盖此设置。
  • use_original_footer 用于使用 PDF 的原始 Footer()
    • 请注意,PDF::setFooterCallback(function($pdf){}) 会覆盖此设置。

页眉/页脚助手

您可以使用它来设置页眉和页脚。

  • PDF::setHeaderCallback(function($pdf){})
  • PDF::setFooterCallback(function($pdf){})

函数

writeHTML($html, $ln=true, $fill=false, $reseth=false, $cell=false, $align='')

  • 支持的标签:a, b, blockquote, br, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, img, li, ol, p, pre, small, span, strong, sub, sup, table, tcpdf, td, th, thead, tr, tt, u, ul

  • @param string $html 要显示的文本

  • @param boolean $ln 如果为真,则在文本后添加新行(默认 = true)

  • @param boolean $fill 如果为真,则绘制背景(true)或透明(false)。

  • @param boolean $reseth 如果为真,则重置最后一个单元格的高度(默认 false)。

  • @param boolean $cell 如果为真,则为每个 Write 添加当前左(或右对于 RTL)填充(默认 false)。

  • @param string $align 允许居中对齐或对齐文本。可能的值是

    • L : 左对齐
    • C : 居中
    • R : 右对齐
    • '' : 空字符串 : LTR 时的左对齐或 RTL 时的右对齐

setPrintHeader(true)

  • 设置一个标志以打印页眉。
  • 默认值为 true。

setPrintFooter(true)

  • 设置一个标志以打印页脚。
  • 默认值为 true。

setMargins($left, $top, $right=null, $keepmargins=false)

  • 定义左、上和右边距。
  • @param int|float $left 左边距。
  • @param int|float $top 上边距。
  • @param int|float|null $right 右边距。默认值是左边距。
  • @param boolean $keepmargins 如果为真,则覆盖默认页面边距

setAutoPageBreak($auto, $margin=0)

  • 启用或禁用自动分页模式。启用时,第二个参数是从页面底部定义触发限制的距离。默认情况下,模式是开启的,边距是 2 厘米。
  • @param boolean $auto 布尔值表示是否开启模式。
  • @param float $margin 页面底部的距离。

setFont($family, $style='', $size=null, $fontfile='', $subset='default', $out=true)

  • 设置用于打印字符字符串的字体。
  • 字体可以是标准字体或通过 AddFont() 方法添加的字体。标准字体使用 Windows 编码 cp1252(西欧)。
  • 该方法可以在创建第一页之前调用,并且字体可以在每一页之间保留。
  • 如果您只想更改当前字体大小,调用 SetFontSize() 更简单。
  • @param string $family 字体族。可以是 AddFont() 定义的名称或标准 Type1 字体族之一(不区分大小写)
    • times (Times-Roman)
    • timesb (Times-Bold)
    • timesi (Times-Italic)
    • timesbi (Times-BoldItalic)
    • helvetica (Helvetica)
    • helveticab (Helvetica-Bold)
    • helveticai (Helvetica-Oblique)
    • helveticabi (Helvetica-BoldOblique)
    • courier (Courier)
    • courierb (Courier-Bold)
    • courieri (Courier-Oblique)
    • courierbi (Courier-BoldOblique)
    • symbol (Symbol)
    • zapfdingbats (ZapfDingbats)
    也可以传递一个空字符串。在这种情况下,保留当前字体族。
  • @param string $style 字体样式。可能的值是(不区分大小写)
    • 空字符串:常规
    • B:粗体
    • I:斜体
    • U:下划线
    • D:贯穿线
    • O:上划线
    或任何组合。默认值是常规。粗体和斜体样式不适用于 Symbol 和 ZapfDingbats 基本字体或未定义的其他字体。
  • @param float|null $size 字体大小(点)。默认值是当前大小。如果自文档开始以来未指定大小,则取值为 12
  • @param string $fontfile 字体定义文件。默认情况下,名称由字体族和样式构建,全部小写,无空格。
  • @param mixed $subset 如果为 true,则仅嵌入字体的子集(仅存储与使用字符相关的信息);如果为 false,则嵌入整个字体;如果为 'default',则使用使用 setFontSubsetting() 设置的默认值。此选项仅适用于 TrueTypeUnicode 字体。如果您想启用用户更改文档,请将此参数设置为 false。如果您对字体进行子集化,则接收您 PDF 的人需要具有与您相同的字体才能更改您的 PDF。PDF 文件的大小也会减小,因为您仅嵌入字体的一部分。
  • @param boolean $out 如果为 true,则输出字体大小命令,否则仅设置字体属性。

AddPage($orientation='', $format='', $keepmargins=false, $tocpage=false)

  • 向文档添加新页。如果已存在页面,则首先调用 Footer() 方法输出页脚(如果已启用)。然后添加页面,将当前位置设置为左上角,根据左和上边距(或在 RTL 模式下为右上角),然后调用 Header() 显示页眉(如果已启用)。
  • 坐标系的原点在左上角(或在 RTL 模式下为右上角),增加的坐标向下。
  • @param string $orientation 页面方向。可能的值是(不区分大小写)
    • P 或 PORTRAIT(默认值)
    • L 或 LANDSCAPE
  • @param mixed $format 用于页面的格式。它可以是:在 getPageSizeFromFormat() 中指定的字符串值之一或 setPageFormat() 中指定的参数数组。
  • @param boolean $keepmargins 如果为 true,则用当前边距覆盖默认页边距
  • @param boolean $tocpage 如果为 true,则将 tocpage 状态设置为 true(添加的页面将用于显示目录)。

Write($h, $txt, $link='', $fill=false, $align='', $ln=false, $stretch=0, $firstline=false, $firstblock=false, $maxh=0, $wadj=0, $margin=null)

  • 此方法从当前位置打印文本。
  • @param float $h 行高
  • @param string $txt 要打印的字符串
  • @param mixed $link URL 或 AddLink() 返回的标识符
  • @param boolean $fill 表示是否必须绘制单元格背景(true)或透明(false)。
  • @param string $align 允许居中对齐或对齐文本。可能的值是
    • L 或空字符串:左对齐(默认值)
    • C:居中
    • R:右对齐
    • J:两端对齐
  • @param boolean $ln 如果为 true,则将光标设置在行底部,否则将光标设置在行顶部。
  • @param int $stretch 字体拉伸模式
    • 0 = 禁用
    • 1 = 仅在文本大于单元格宽度时进行水平缩放
    • 2 = 强制水平缩放以适应单元格宽度
    • 3 = 只有当文本大于单元格宽度时才进行字符间距
    • 4 = 强制字符间距以适应单元格宽度
    尽可能保留通用字体拉伸和缩放值。
  • @param boolean $firstline 如果为真,则只打印第一行并返回剩余字符串。
  • @param boolean $firstblock 如果为真,则字符串是行的开始。
  • @param float $maxh 最大高度。它应该大于等于 $h 且小于页面底部剩余空间,或者 0 以禁用此功能。
  • @param float $wadj 第一行宽度将减少此量(用于 HTML 模式)。
  • @param array|null $margin 父容器的边距数组
  • @return mixed 返回单元格数或如果 $firstline = true,则返回剩余字符串。

Output($name='doc.pdf', $dest='I')

  • 将文档发送到指定的目的地:字符串、本地文件或浏览器。
  • 在最后一种情况下,如果存在插件,则可以使用插件,或者可以强制进行下载(“另存为”对话框)。
  • 该方法首先在必要时调用 Close() 来终止文档。
  • @param string $name 保存时的文件名
  • @param string $dest 要发送文档的目的地。它可以取以下值之一
    • I: 将文件内联发送到浏览器(默认)。如果可用,则使用插件。当在生成 PDF 的链接中选择“另存为”选项时,使用给定的名称。
    • D: 发送到浏览器并强制以给定的名称下载文件。
    • F: 将文件保存到本地服务器文件,文件名为给定的名称。
    • S: 将文档作为字符串返回(忽略名称)。
    • FI: 等同于 F + I 选项
    • FD: 等同于 F + D 选项
    • E: 将文档作为 base64 mime 多部分电子邮件附件返回(RFC 2045)