Saya ingin membuat pdf khusus pada penjualan dan melampirkannya ke email penjualan semua dalam modul khusus.
Saya pikir saya perlu memperluas Magento\Sales\Model\Order\Pdf\AbstractPdf
untuk menghasilkan pdf tetapi saya tidak yakin.
Adakah yang pernah melakukan ini sebelumnya atau tahu jika saya berada di jalur yang benar?
// edit:
Sesuai komentar, berikut adalah tata letak dasar bagaimana saya memasukkan http://www.fpdf.org/ ke dalam modul khusus saya:
Pertama saya mengunduh paket fpdf. Saya mengekstrak file-file itu dan meletakkannya semua di Helper
folder Modul saya , yang sekarang terlihat seperti ini:
- Helper
-- font (folder)
-- makefont (folder)
-- FPDF.php
-- Data.php
Data.php
adalah satu-satunya file yang sudah saya miliki di folder ini karena berisi kelas data pembantu saya.
Selanjutnya saya mengedit FPDF.php dan menambahkan modul namespace saya ke sana.
Saya mengedit Data.php
file pembantu saya dan menggunakan kelas FPDF namespaces saya:
use Company\ModuleName\Helper\FPDF as FPDF;
Saya mendefinisikan setiap info pdf yang saya butuhkan di kelas data - Anda tidak memerlukan ini:
// PDF INFOS
protected $pdfFileDir = 'someDir/someSubDir/';
protected $logo1 = 'myLogo.jpg';
protected $logo2 = 'myExtraLogo.jpg';
/**
* @var \Company\ModuleName\Helper\FPDF
*/
protected $_pdf;
dan membangunnya
/**
* @param \Company\ModuleName\Helper\FPDF $pdf
* @param array $data
*/
public function __construct(
(...)
FPDF $pdf,
(...)
array $data = []
) {
(...)
$this->_pdf = $pdf;
(...)
parent::__construct($context);
}
Saya kemudian menciptakan metode saya dan menghasilkan 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;
}
Kemudian Anda memanggil metode Anda di controller Anda melalui pembantu Anda (yang tentu saja harus Anda sertakan):
$this->dataHelper->generatePdf($yourVars);