Я хотел бы создать собственный PDF-файл после продажи и прикрепить его к электронному письму, посвященному продажам.
Я думаю, что мне нужно расширить Magento\Sales\Model\Order\Pdf\AbstractPdf
для создания PDF, но я не уверен.
Кто-нибудь делал это раньше или есть идеи, если я на правильном пути?
// редактировать:
Что касается комментариев, вот базовый макет того, как я включил http://www.fpdf.org/ в свой пользовательский модуль:
Сначала я скачал пакет fpdf. Я извлек файлы и поместил их в Helper
папку « Модули », которая теперь выглядит следующим образом:
- Helper
-- font (folder)
-- makefont (folder)
-- FPDF.php
-- Data.php
Data.php
это единственный файл, который у меня уже был в этой папке, так как он содержит мой вспомогательный класс данных.
Затем я отредактировал FPDF.php и добавил к нему пространство имен моих модулей.
Я отредактировал свой вспомогательный Data.php
файл и использую класс FPDF для своих пространств имен:
use Company\ModuleName\Helper\FPDF as FPDF;
Я определил любую информацию в формате PDF, которая мне нужна, в классе данных - вам это не нужно:
// PDF INFOS
protected $pdfFileDir = 'someDir/someSubDir/';
protected $logo1 = 'myLogo.jpg';
protected $logo2 = 'myExtraLogo.jpg';
/**
* @var \Company\ModuleName\Helper\FPDF
*/
protected $_pdf;
и построить его
/**
* @param \Company\ModuleName\Helper\FPDF $pdf
* @param array $data
*/
public function __construct(
(...)
FPDF $pdf,
(...)
array $data = []
) {
(...)
$this->_pdf = $pdf;
(...)
parent::__construct($context);
}
Затем я создал свой метод и сгенерировал PDF:
public function generatePdf($productId, $someOtherVars)
{
#start the pdf
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetAutoPageBreak(0, 5);
$pdf->SetFont('Arial', 'B', 16);
// do your FPDF stuff here
// eg: $pdf->Cell('', '', iconv('UTF-8', 'windows-1252', 'Page Header Title'), 0, 1);
// $pdf->Ln(8);
// $pdf->Cell('', '', $today, 0, 1, 'L');
// and so forth .. see the FPDF documentation
// render pdf
$filename = 'somename' . $productId . '.pdf';
$pdf->Output($this->getPdfBaseDir() . $filename, 'F');
return $this->getPdfBaseDir() . $filename;
}
Затем вы вызываете ваш метод в вашем контроллере через вашего помощника (который вам, конечно, нужно включить):
$this->dataHelper->generatePdf($yourVars);