Vorrei generare un pdf personalizzato al momento della vendita e allegarlo all'e-mail di vendita, tutto all'interno di un modulo personalizzato.
Penso di dover estendere Magento\Sales\Model\Order\Pdf\AbstractPdf
per generare il pdf ma non ne sono certo.
Qualcuno l'ha mai fatto prima o ha idea se sono sulla strada giusta?
// modificare:
Come da commenti, ecco un layout di base su come ho incluso http://www.fpdf.org/ nel mio modulo personalizzato:
Per prima cosa ho scaricato il pacchetto fpdf. Ho estratto i file e li ho inseriti tutti nella mia Helper
cartella Modules , che ora ha questo aspetto:
- Helper
-- font (folder)
-- makefont (folder)
-- FPDF.php
-- Data.php
Data.php
è l'unico file che ho già avuto in questa cartella in quanto contiene la mia classe di dati di supporto.
Successivamente ho modificato FPDF.php e vi ho aggiunto lo spazio dei nomi dei miei moduli.
Ho modificato il mio Data.php
file di supporto e utilizzo la classe FPDF dei miei spazi dei nomi:
use Company\ModuleName\Helper\FPDF as FPDF;
Ho definito tutte le informazioni pdf di cui ho bisogno nella classe di dati - non è necessario questo:
// PDF INFOS
protected $pdfFileDir = 'someDir/someSubDir/';
protected $logo1 = 'myLogo.jpg';
protected $logo2 = 'myExtraLogo.jpg';
/**
* @var \Company\ModuleName\Helper\FPDF
*/
protected $_pdf;
e costruirlo
/**
* @param \Company\ModuleName\Helper\FPDF $pdf
* @param array $data
*/
public function __construct(
(...)
FPDF $pdf,
(...)
array $data = []
) {
(...)
$this->_pdf = $pdf;
(...)
parent::__construct($context);
}
Ho quindi creato il mio metodo e generato il 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;
}
Quindi chiami il tuo metodo nel tuo controller tramite il tuo helper (che ovviamente devi includere):
$this->dataHelper->generatePdf($yourVars);