Gostaria de gerar um pdf personalizado na venda e anexá-lo ao email de vendas, tudo dentro de um módulo personalizado.
Acho que preciso estender Magento\Sales\Model\Order\Pdf\AbstractPdf
para gerar o pdf, mas não tenho certeza.
Alguém já fez isso antes ou tem alguma idéia se estou no caminho certo?
// editar:
De acordo com os comentários, aqui está um layout básico de como incluí http://www.fpdf.org/ no meu módulo personalizado:
Primeiro baixei o pacote fpdf. Extraí os arquivos e os coloquei na Helper
pasta Módulos , que agora se parece com isso:
- Helper
-- font (folder)
-- makefont (folder)
-- FPDF.php
-- Data.php
Data.php
é o único arquivo que eu já tinha nesta pasta, pois contém minha classe de dados auxiliar.
Em seguida, editei o FPDF.php e adicionei o namespace dos meus módulos.
Data.php
Editei meu arquivo auxiliar e usei a classe FPDF dos espaços para nome:
use Company\ModuleName\Helper\FPDF as FPDF;
Eu defini todas as informações em pdf necessárias na Classe de dados - você não precisa disso:
// PDF INFOS
protected $pdfFileDir = 'someDir/someSubDir/';
protected $logo1 = 'myLogo.jpg';
protected $logo2 = 'myExtraLogo.jpg';
/**
* @var \Company\ModuleName\Helper\FPDF
*/
protected $_pdf;
e construa
/**
* @param \Company\ModuleName\Helper\FPDF $pdf
* @param array $data
*/
public function __construct(
(...)
FPDF $pdf,
(...)
array $data = []
) {
(...)
$this->_pdf = $pdf;
(...)
parent::__construct($context);
}
Criei meu método e gere 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;
}
Em seguida, você chama seu método no seu controlador através do seu ajudante (que você precisa incluir, é claro):
$this->dataHelper->generatePdf($yourVars);