staempfli / magento2-module-pdf
此包已废弃,不再维护。未建议替代包。
Staempfli PDF 生成器。
1.1
2018-03-22 11:48 UTC
Requires
- php: ~5.6.0|~7.0.0|~7.1.0
- magento/framework: ~100.1.2|~101.0.0
- magento/module-backend: ^100.1.1
- mikehaertl/phpwkhtmltopdf: 2.1.0
Requires (Dev)
- mikey179/vfsstream: ^1.6
This package is auto-updated.
Last update: 2020-09-16 12:01:29 UTC
README
Magento 2 模块,用于简化使用 wkhtmltopdf 功能的 PDF 生成
安装
composer require "staempfli/magento2-module-pdf":"~1.0"
设置
安装 wkhtmltopdf
此模块需要在您的计算机上安装 wkhtmltopdf。您可以从这里下载并安装它
注意:不要在 Linux 系统上使用 apt-get
安装。有关更多信息,请参阅 故障排除 部分。
模块配置
商店 > 配置 > 高级 PDF 生成
使用方法
此模块可以从任何 frontControllerAction
生成 PDF。
-
创建您控制器路径,包括相应的块和
.phtml
模板<!-- route_actions_generatePdf.xml --> <layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd"> <container name="root"> <block class="Vendor\Package\Block\YourBlock" name="vendor.package.somename"> </container> </layout>
-
在控制器上返回 PDF 实例
<?php namespace Vendor\Package\Controller\Actions; use Magento\Framework\App\Action\Action; use Staempfli\Pdf\Model\View\PdfResult; use Staempfli\Pdf\Service\PdfOptions; class GeneratePdf extends Action { public function execute() { return $this->renderPdfResult(); } protected function renderPdfResult() { /** @var PdfResult $result */ $result = $this->resultFactory->create(PdfResult::TYPE); $result->addGlobalOptions( new PdfOptions( [ PdfOptions::KEY_GLOBAL_TITLE => __('Return PDF'), PdfOptions::KEY_PAGE_ENCODING => PdfOptions::ENCODING_UTF_8, PdfOptions::KEY_GLOBAL_ORIENTATION => PdfOptions::ORIENTATION_PORTRAIT, PdfOptions::FLAG_PAGE_PRINT_MEDIA_TYPE, ] ) ); $result->addPageOptions( new PdfOptions( [ PdfOptions::KEY_PAGE_COOKIES => ${'_COOKIE'}, ] ) ); return $result; } }
页眉和页脚
页眉和页脚 HTML 可以按以下方式添加
-
在您的模块模板目录内创建
header.html
和footer.html
文件<!doctype html> <!-- app/code/Vendor/Package/view/frontend/templates/pdf/header.html --> <html> <body> Header text </body> </html>
<!doctype html> <!-- app/code/Vendor/Package/view/frontend/templates/pdf/footer.html --> <html> <body> Footer text </body> </html>
-
将这些文件附加到控制器 PDF 生成
<?php namespace Vendor\Package\Controller\Actions; use Magento\Framework\App\Action\Action; use Magento\Framework\View\Element\Template\File\Resolver as TemplateResolver; use Staempfli\Pdf\Model\View\PdfResult; use Staempfli\Pdf\Service\PdfOptions; class GeneratePdf extends Action { /** * @var TemplateResolver */ private $templateResolver; public function __construct( TemplateResolver $templateResolver, Context $context ) { parent::__construct($context); $this->templateResolver = $templateResolver; } public function execute() { return $this->renderPdfResult(); } protected function renderPdfResult() { /** @var PdfResult $result */ $result = $this->resultFactory->create(PdfResult::TYPE); $result->addGlobalOptions( new PdfOptions( [ PdfOptions::KEY_GLOBAL_TITLE => __('Return PDF'), PdfOptions::KEY_PAGE_ENCODING => PdfOptions::ENCODING_UTF_8, PdfOptions::KEY_GLOBAL_ORIENTATION => PdfOptions::ORIENTATION_PORTRAIT, PdfOptions::FLAG_PAGE_PRINT_MEDIA_TYPE, PdfOptions::KEY_PAGE_HEADER_SPACING => "10", ] ) ); $result->addPageOptions( new PdfOptions( [ PdfOptions::KEY_PAGE_COOKIES => ${'_COOKIE'}, PdfOptions::KEY_PAGE_HEADER_HTML_URL => $this->templateResolver ->getTemplateFileName('Vendor_Package::pdf/header.html'), PdfOptions::KEY_PAGE_FOOTER_HTML_URL => $this->templateResolver ->getTemplateFileName('Vendor_ Package::pdf/footer.html'), ] ) ); return $result; } }
注意: 由于只能作为 html
添加页眉或页脚,因此只能同时添加两者或都不添加。否则,将忽略上下边距。
故障排除
使用未修补的 qt 不支持 --print-media 开关
wkhtmltopdf
应该通过 apt-get 安装。请参阅
在 Mac 上输出非常小或非常小
- 这可能是
wkhtmltopdf
版本 0.12.4 上的一个错误。可以通过安装 0.12.3 来修复
要求
- PHP >= 7.0.*
- Magento >= 2.1.*
支持
如果您对此扩展有任何问题,请在 GitHub 上提交问题。
贡献
任何贡献都将受到高度赞赏。提交代码的最佳方式是在GitHub上发起一个拉取请求。
开发者
Stämpfli Webteam, Fabian Schmengler, integer_net 以及所有其他 贡献者
许可证
版权
(c) 2018, Stämpfli AG