creativesynergy / silverstripe-wkhtmltopdf
1.0.8
2018-03-13 09:29 UTC
Requires
- mikehaertl/phpwkhtmltopdf: ^2.1
- silverstripe/framework: ^3.2|^4
README
此模块现已废弃,对于SilverStripe 4,您可以使用我的新改进版本silverstripe-wkhtmltox
使用WKhtmlTOpdf的强大功能在SilverStripe中创建PDF
此模块添加了从您拥有的每个DataObject中简单地创建PDF的可能性。基于WKhtmlTOpdf和mikehaertl的php包装器。
安装
$ composer require creativesynergy/silverstripe-wkhtmltopdf
入门
- WKhtmlTOpdf必须安装到您的服务器才能使用此模块
- 您需要将模块模板文件夹中的footer.html和header.html文件复制到
mysite/templates/Pdf/
- 在
themes/your-theme/css/
下创建一个名为'pdf.css'的CSS文件
使用
基础
$trainer = Trainer::get()->first(); $pdf = new SS_PDF(); $html = $pdf::getHtml($trainer); $pdf->add($html); $pdf->save('trainer.pdf');
添加封面
$pdf->add('.../path/to/cover.html', 'Cover'); // You could use the same inputs as listed under "Add pages"
添加页面
$pdf->add('<html>...</html>'); // Html code $pdf->add('.../path/to/page.html'); // Html file $pdf->add('https://www.google.com'); // Website $pdf->add($pdf::getHtml($dataObject)); // DataObject
为单页添加特定选项
$options = array( 'image-quality' => 100, 'margin-bottom' => 0, 'margin-left' => 0, 'margin-right' => 0, 'margin-top' => 0, 'header-html' => null, 'footer-html' => null ); $pdf->add('.../path/to/cover.html', 'Cover', $options);
所有可用选项可以在此处找到
添加页面并向其传递一些变量
$variables = array( 'Title' => 'My New Title', 'MyFreakyWhatever' => DataObject::get()->byID(123)->WhatEver() ); $html = $pdf::getHtml($trainer, $variables); $pdf->add($html);
更改页面模板
$html = $pdf::getHtml($trainer, $variables, 'NewPDFTemplate'); $pdf->add($html);
默认情况下,模块将查找名为"ClassName_pdf"的模板
在浏览器中预览
$pdf->preview();
保存
$pdf->save('trainer.pdf'); // This will also return an file instance to work with
指定保存的文件夹
$pdf->setFolderName('trainers/pdfs');
下载
$pdf->download('trainer.pdf');
全局选项
设置用于此PDF中所有页面的全局选项
$css = BASE_PATH . '/themes/' . SSViewer::current_theme() . '/css/pdf.css'; $header = BASE_PATH . '/mysite/templates/Pdfs/header.html'; $footer = BASE_PATH . '/mysite/templates/Pdfs/footer.html'; $options = array( 'enable-javascript', 'dpi' => 150, 'image-dpi' => 150, 'image-quality' => 100, 'user-style-sheet' => $css, 'header-html' => $header, 'footer-html' => $footer, ... ... ); $pdf->setGlobalOptions($options);
设置或修改单个全局选项
$pdf->setOption('enable-javascript'); $pdf->setOption('dpi', '300'); $pdf->setOption('run-script', array( '../path/to/local/script1.js' )); $pdf->setOption('replace', array( '{whatever}' => 'something new' ));
删除单个全局选项
$pdf->removeOption('replace');
模板、页眉 & 页脚和样式
页面模板
如果您的页面基于DataObject,并且您使用$pdf::getHtml()函数生成HTML,则可以通过将该模板作为函数的第三个参数传递(不带.ss后缀!),为该页面设置特定模板。默认情况下,模块将搜索名为"Classname_pdf"的模板。
页眉 & 页脚
WKhtmlTOpdf 允许您为PDF的页眉和页脚部分指定单独的文件。默认情况下,它们位于 mysite/templates/Pdf/header.html
和 mysite/templates/Pdf/footer.html
。
您可以通过更改全局或页面特定的选项来更改这些文件的位置或完全删除页眉和/或页脚。
$pdf->setOption('header-html', '/path/to/header.html'); $pdf->removeOption('footer-html');
包含示例Pdf.ss、header.html和footer.html文件以帮助您开始。
样式
多亏了WKhtmlTOpdf,您拥有完整的CSS3和HTML5支持,并且能够在没有使用其他工具(如dompdf或tcpdf)时面临的限制的情况下执行复杂操作。您甚至可以使用JavaScript修改您的页面。
默认情况下,该模块需要在 themes/your-theme/css/pdf.css 下创建一个 pdf.css。您可以通过设置全局或页面特定的选项来更改此设置。
$pdf->setOption('user-style-sheet', '/path/to/pdf.css');