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);
Jawaban:
Anda dapat menggunakan FPDF atau TCPDF untuk membuat PDF.
Cobalah untuk menjalankan salah satu dari perintah berikut dari direktori root M2
Ini akan menambahkan perpustakaan fpdf di folder vendor sebagai setasign / fpdf. Setelah menginstal fpdf Anda dapat menggunakan FPDF di modul kustom Anda untuk membuat PDF.
$ pdf = new \ FPDF ();
ATAU
Ini akan menambahkan perpustakaan tcpdf di folder vendor sebagai tecnickcom / tcpdf. Setelah tcpdf dipasang, Anda dapat menggunakan TCPDF di modul khusus Anda untuk membuat PDF.
sumber
Magento2: Cara membuat PDF dalam modul khusus
sumber