<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Sales\Controller\Adminhtml\Creditmemo\AbstractCreditmemo; use Magento\Framework\App\ResponseInterface; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Sales\Api\CreditmemoRepositoryInterface; class PrintAction extends \Magento\Backend\App\Action { /** * Authorization level of a basic admin session * * @see _isAllowed() */ const ADMIN_RESOURCE = 'Magento_Sales::sales_creditmemo'; /** * @var \Magento\Framework\App\Response\Http\FileFactory */ protected $_fileFactory; /** * @var \Magento\Backend\Model\View\Result\ForwardFactory */ protected $resultForwardFactory; /** * @var CreditmemoRepositoryInterface */ protected $creditmemoRepository; /** * @param \Magento\Backend\App\Action\Context $context * @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory * @param \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory * @param CreditmemoRepositoryInterface $creditmemoRepository */ public function __construct( \Magento\Backend\App\Action\Context $context, \Magento\Framework\App\Response\Http\FileFactory $fileFactory, \Magento\Backend\Model\View\Result\ForwardFactory $resultForwardFactory, CreditmemoRepositoryInterface $creditmemoRepository ) { $this->_fileFactory = $fileFactory; $this->resultForwardFactory = $resultForwardFactory; $this->creditmemoRepository = $creditmemoRepository; parent::__construct($context); } /** * @return ResponseInterface|\Magento\Backend\Model\View\Result\Forward * @throws \Exception */ public function execute() { /** @see \Magento\Sales\Controller\Adminhtml\Order\Invoice */ $creditmemoId = $this->getRequest()->getParam('creditmemo_id'); if ($creditmemoId) { $creditmemo = $this->creditmemoRepository->get($creditmemoId); if ($creditmemo) { $pdf = $this->_objectManager->create( \Magento\Sales\Model\Order\Pdf\Creditmemo::class )->getPdf( [$creditmemo] ); $date = $this->_objectManager->get( \Magento\Framework\Stdlib\DateTime\DateTime::class )->date('Y-m-d_H-i-s'); $fileContent = ['type' => 'string', 'value' => $pdf->render(), 'rm' => true]; return $this->_fileFactory->create( \creditmemo::class . $date . '.pdf', $fileContent, DirectoryList::VAR_DIR, 'application/pdf' ); } } else { $resultForward = $this->resultForwardFactory->create(); $resultForward->forward('noroute'); return $resultForward; } } }