yii2tech / html2pdf
提供HTML到PDF和PHP到PDF转换的支持
Requires
- yiisoft/yii2: ~2.0.14
Requires (Dev)
- phpunit/phpunit: 4.8.27|^5.0|^6.0
README
为Yii2提供的HTML到PDF转换扩展
此扩展提供对HTML到PDF和PHP到PDF转换的基本支持。
有关许可证信息,请参阅LICENSE文件。
安装
安装此扩展的首选方式是通过composer。
运行
php composer.phar require --prefer-dist yii2tech/html2pdf
或添加
"yii2tech/html2pdf": "*"
到您的composer.json文件的require部分。
注意:您必须单独安装用于实际HTML到PDF转换的软件,具体取决于您想使用的特定转换器。
使用
此扩展提供对HTML到PDF和PHP到PDF转换的支持。它允许从HTML和通过渲染PHP模板来组合PDF文件。
扩展功能汇总到\yii2tech\html2pdf\Manager
应用程序组件中。应用程序配置示例
<?php return [ 'components' => [ 'html2pdf' => [ 'class' => 'yii2tech\html2pdf\Manager', 'viewPath' => '@app/views/pdf', 'converter' => 'wkhtmltopdf', ], ], ... ];
对于简单的转换,您可以使用\yii2tech\html2pdf\Manager::convert()
和\yii2tech\html2pdf\Manager::convertFile()
方法
<?php $html = <<<HTML <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <p>Simple Content</p> </body> </html> HTML; // create PDF file from HTML content : Yii::$app->html2pdf ->convert($html) ->saveAs('/path/to/output.pdf'); // convert HTML file to PDF file : Yii::$app->html2pdf ->convertFile('/path/to/source.html') ->saveAs('/path/to/output.pdf');
实际的转换结果取决于使用的特定转换器。您可以使用\yii2tech\html2pdf\Manager::$converter
属性进行转换器设置。
提供几个内置的转换器
- yii2tech\html2pdf\converters\Wkhtmltopdf - 使用wkhtmltopdf工具进行转换。
- yii2tech\html2pdf\converters\Dompdf - 使用dompdf库进行转换。
- yii2tech\html2pdf\converters\Mpdf - 使用mpdf库进行转换。
- yii2tech\html2pdf\converters\Tcpdf - 使用TCPDF库进行转换。
- yii2tech\html2pdf\converters\Callback - 使用自定义PHP回调进行转换。
注意!大多数提供的转换器需要安装额外的软件,这并不是此扩展默认提供的。您将不得不手动安装它,一旦您决定要使用哪个转换器。请参阅特定转换器类以获取更多详细信息。
您可以通过convert()
或convertFile()
方法的第二个参数指定转换选项
<?php Yii::$app->html2pdf ->convertFile('/path/to/source.html', ['pageSize' => 'A4']) ->saveAs('/path/to/output.pdf');
您可以在 \yii2tech\html2pdf\Manager
级别设置默认转换选项
<?php return [ 'components' => [ 'html2pdf' => [ 'class' => 'yii2tech\html2pdf\Manager', 'viewPath' => '@app/pdf', 'converter' => [ 'class' => 'yii2tech\html2pdf\converters\Wkhtmltopdf', 'defaultOptions' => [ 'pageSize' => 'A4' ], ] ], ], ... ];
注意:可用的实际转换选项列表取决于要使用的特定转换器。
模板使用
您可以创建通过渲染PHP模板(视图文件)来生成PDF文件,这些文件会生成HTML输出。这些文件被视为常规视图文件,允许传递参数和布局包装。用于此目的的方法是 \yii2tech\html2pdf\Manager::render()
<?php Yii::$app->html2pdf ->render('invoice', ['user' => Yii::$app->user->identity]) ->saveAs('/path/to/output.pdf');
您可以为模板使用共享布局,这可以通过 \yii2tech\html2pdf\Manager::$layout
来设置。
在每次渲染时,视图都在 \yii2tech\html2pdf\Template
对象的上下文中工作,可以用来在视图文件内部调整布局或PDF转换选项
<?php /* @var $this \yii\web\View */ /* @var $context \yii2tech\html2pdf\Template */ /* @var $user \app\models\User */ $context = $this->context; $context->layout = 'layouts/payment'; // use specific layout for this template // specify particular PDF conversion for this template: $context->pdfOptions = [ 'pageSize' => 'A4', // ... ]; ?> <h1>Invoice</h1> <p>For: <?= $user->name ?></p> ...