販売時にカスタムPDFを生成し、それをすべてカスタムモジュール内の販売メールに添付したいと思います。
Magento\Sales\Model\Order\Pdf\AbstractPdf
PDFを生成するために拡張する必要があると思いますが、確信はありません。
誰かが以前にこれを行ったことがありますか、または私が正しい軌道に乗っているかどうか何か考えがありますか?
//編集:
コメントに従って、http://www.fpdf.org/をカスタムモジュールにどのように含めたかに関する基本的なレイアウトを次に示します。
まず、fpdfパッケージをダウンロードしました。ファイルを抽出し、すべてをモジュールHelper
フォルダーに配置しました。これは次のようになります。
- Helper
-- font (folder)
-- makefont (folder)
-- FPDF.php
-- Data.php
Data.php
ヘルパーのDataクラスが含まれているため、このフォルダーに既にある唯一のファイルです。
次に、FPDF.phpを編集し、モジュールの名前空間を追加しました。
ヘルパーData.php
ファイルを編集し、名前空間FPDFクラスを使用します。
use Company\ModuleName\Helper\FPDF as FPDF;
私はデータクラスで必要なPDF情報を定義しました-あなたはこれを必要としません:
// PDF INFOS
protected $pdfFileDir = 'someDir/someSubDir/';
protected $logo1 = 'myLogo.jpg';
protected $logo2 = 'myExtraLogo.jpg';
/**
* @var \Company\ModuleName\Helper\FPDF
*/
protected $_pdf;
そしてそれを構築する
/**
* @param \Company\ModuleName\Helper\FPDF $pdf
* @param array $data
*/
public function __construct(
(...)
FPDF $pdf,
(...)
array $data = []
) {
(...)
$this->_pdf = $pdf;
(...)
parent::__construct($context);
}
次に、メソッドを作成して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;
}
次に、ヘルパー(もちろん含める必要があります)を介してコントローラーでメソッドを呼び出します。
$this->dataHelper->generatePdf($yourVars);