Je voudrais générer un pdf personnalisé lors de la vente et le joindre à l'e-mail de vente dans un module personnalisé.
Je pense que je dois m'étendre Magento\Sales\Model\Order\Pdf\AbstractPdf
pour générer le pdf mais je n'en suis pas certain.
Quelqu'un a-t-il déjà fait cela ou sait-il si je suis sur la bonne voie?
// Éditer:
Selon les commentaires, voici une présentation de base de la façon dont j'ai inclus http://www.fpdf.org/ dans mon module personnalisé:
J'ai d'abord téléchargé le package fpdf. J'ai extrait les fichiers et les ai tous placés dans mon Helper
dossier Modules , qui ressemble maintenant à ceci:
- Helper
-- font (folder)
-- makefont (folder)
-- FPDF.php
-- Data.php
Data.php
est le seul fichier que j'avais déjà dans ce dossier car il contient ma classe de données d'assistance.
Ensuite, j'ai édité le FPDF.php et y ai ajouté l'espace de noms de mes modules.
J'ai édité mon Data.php
fichier d' aide et utilisé mes espaces de noms FPDF classe:
use Company\ModuleName\Helper\FPDF as FPDF;
J'ai défini toutes les informations pdf dont j'ai besoin dans la classe de données - vous n'en avez pas besoin:
// PDF INFOS
protected $pdfFileDir = 'someDir/someSubDir/';
protected $logo1 = 'myLogo.jpg';
protected $logo2 = 'myExtraLogo.jpg';
/**
* @var \Company\ModuleName\Helper\FPDF
*/
protected $_pdf;
et le construire
/**
* @param \Company\ModuleName\Helper\FPDF $pdf
* @param array $data
*/
public function __construct(
(...)
FPDF $pdf,
(...)
array $data = []
) {
(...)
$this->_pdf = $pdf;
(...)
parent::__construct($context);
}
J'ai ensuite créé ma méthode et généré le 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;
}
Ensuite, vous appelez votre méthode dans votre contrôleur via votre assistant (que vous devez bien sûr inclure):
$this->dataHelper->generatePdf($yourVars);