staempfli/magento2-module-pdf

此包已废弃,不再维护。未建议替代包。

Staempfli PDF 生成器。

安装次数: 4,482

依赖关系: 0

建议者: 0

安全性: 0

星标: 50

关注者: 12

分支: 13

开放问题: 4

类型:magento2-module

1.1 2018-03-22 11:48 UTC

This package is auto-updated.

Last update: 2020-09-16 12:01:29 UTC


README

Project Status: Abandoned – Initial development has started, but there has not yet been a stable, usable release; the project has been abandoned and the author(s) do not intend on continuing development.

Magento 2 模块,用于简化使用 wkhtmltopdf 功能的 PDF 生成

安装

composer require "staempfli/magento2-module-pdf":"~1.0"

设置

安装 wkhtmltopdf

此模块需要在您的计算机上安装 wkhtmltopdf。您可以从这里下载并安装它

注意:不要在 Linux 系统上使用 apt-get 安装。有关更多信息,请参阅 故障排除 部分。

模块配置

商店 > 配置 > 高级 PDF 生成

Admin Configuration

使用方法

此模块可以从任何 frontControllerAction 生成 PDF。

  1. 创建您控制器路径,包括相应的块和 .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>
    
  2. 在控制器上返回 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 可以按以下方式添加

  1. 在您的模块模板目录内创建 header.htmlfooter.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>
    
  2. 将这些文件附加到控制器 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 开关

在 Mac 上输出非常小或非常小

要求

  • PHP >= 7.0.*
  • Magento >= 2.1.*

支持

如果您对此扩展有任何问题,请在 GitHub 上提交问题。

贡献

任何贡献都将受到高度赞赏。提交代码的最佳方式是在GitHub上发起一个拉取请求

开发者

Stämpfli Webteam, Fabian Schmengler, integer_net 以及所有其他 贡献者

许可证

开放软件许可 ("OSL") 第 3.0 版

版权

(c) 2018, Stämpfli AG