Tôi muốn tạo một pdf tùy chỉnh khi bán và đính kèm nó vào email bán hàng trong một mô-đun tùy chỉnh.
Tôi nghĩ rằng tôi cần phải mở rộng Magento\Sales\Model\Order\Pdf\AbstractPdf
để tạo pdf nhưng tôi không chắc chắn.
Có ai đã làm điều này trước đây hoặc có bất kỳ ý tưởng nào nếu tôi đi đúng hướng?
// biên tập:
Theo các nhận xét, đây là một bố cục cơ bản về cách tôi đưa http://www.fpdf.org/ vào mô-đun tùy chỉnh của mình:
Đầu tiên tôi tải xuống gói fpdf. Tôi giải nén các tập tin và đặt tất cả chúng vào Helper
thư mục Mô-đun của mình , trông giống như sau:
- Helper
-- font (folder)
-- makefont (folder)
-- FPDF.php
-- Data.php
Data.php
là tệp duy nhất tôi đã có trong thư mục này vì nó chứa lớp Dữ liệu trợ giúp của tôi.
Tiếp theo tôi chỉnh sửa FPDF.php và thêm không gian tên mô-đun của mình vào đó.
Tôi đã chỉnh sửa Data.php
tệp trợ giúp của mình và sử dụng lớp FPDF không gian tên của mình:
use Company\ModuleName\Helper\FPDF as FPDF;
Tôi đã xác định bất kỳ infos pdf nào tôi cần trong Lớp dữ liệu - bạn không cần điều này:
// PDF INFOS
protected $pdfFileDir = 'someDir/someSubDir/';
protected $logo1 = 'myLogo.jpg';
protected $logo2 = 'myExtraLogo.jpg';
/**
* @var \Company\ModuleName\Helper\FPDF
*/
protected $_pdf;
và xây dựng nó
/**
* @param \Company\ModuleName\Helper\FPDF $pdf
* @param array $data
*/
public function __construct(
(...)
FPDF $pdf,
(...)
array $data = []
) {
(...)
$this->_pdf = $pdf;
(...)
parent::__construct($context);
}
Sau đó tôi đã tạo phương thức của mình và tạo 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;
}
Sau đó, bạn gọi phương thức của mình trong bộ điều khiển thông qua trình trợ giúp của bạn (tất nhiên bạn cần bao gồm):
$this->dataHelper->generatePdf($yourVars);