Me gustaría generar un pdf personalizado a la venta y adjuntarlo al correo electrónico de ventas, todo dentro de un módulo personalizado.
Creo que necesito extender Magento\Sales\Model\Order\Pdf\AbstractPdf
para generar el pdf, pero no estoy seguro.
¿Alguien ha hecho esto antes o tiene alguna idea si estoy en el camino correcto?
// editar:
Según los comentarios, aquí hay un diseño básico de cómo incluí http://www.fpdf.org/ en mi módulo personalizado:
Primero descargué el paquete fpdf. Extraje los archivos y los coloqué todos en mi Helper
carpeta Módulos , que ahora se ve así:
- Helper
-- font (folder)
-- makefont (folder)
-- FPDF.php
-- Data.php
Data.php
es el único archivo que ya tenía en esta carpeta ya que contiene mi clase de datos de ayuda.
Luego edité el FPDF.php y le agregué el espacio de nombres de mis módulos.
Edité mi Data.php
archivo auxiliar y uso mis espacios de nombres de la clase FPDF:
use Company\ModuleName\Helper\FPDF as FPDF;
Definí cualquier información en PDF que necesito en la Clase de datos; no necesita esto:
// PDF INFOS
protected $pdfFileDir = 'someDir/someSubDir/';
protected $logo1 = 'myLogo.jpg';
protected $logo2 = 'myExtraLogo.jpg';
/**
* @var \Company\ModuleName\Helper\FPDF
*/
protected $_pdf;
y construirlo
/**
* @param \Company\ModuleName\Helper\FPDF $pdf
* @param array $data
*/
public function __construct(
(...)
FPDF $pdf,
(...)
array $data = []
) {
(...)
$this->_pdf = $pdf;
(...)
parent::__construct($context);
}
Luego creé mi método y generé el 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;
}
Luego llama a su método en su controlador a través de su ayudante (que debe incluir, por supuesto):
$this->dataHelper->generatePdf($yourVars);
Respuestas:
Puede usar FPDF o TCPDF para crear PDF.
Intente ejecutar uno de los siguientes comandos desde el directorio raíz M2
Agregará la biblioteca fpdf en la carpeta del proveedor como setasign / fpdf. Una vez instalado fpdf, puede usar FPDF en su módulo personalizado para crear PDF.
$ pdf = nuevo \ FPDF ();
O
Agregará la biblioteca tcpdf en la carpeta del proveedor como tecnickcom / tcpdf. Una vez que instale tcpdf, puede usar TCPDF en su módulo personalizado para crear PDF.
fuente
Magento2: Cómo crear un PDF en un módulo personalizado
fuente