websolutionstuff / pdf-laravel
Websolutionstuff 为 Laravel 6, Laravel 7, Laravel 8, Laravel 9 提供PDF支持
Requires
- illuminate/support: ^6.0|^7.0|^8.0|^9.0
- tecnickcom/tcpdf: 6.2.*|6.3.*|6.4.*|6.5.*|6.6.*|dev-main
README
安装
可以通过在项目的 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:上划线
- @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)