で、 を使用して PDF を生成し、 を使用して電子メールで送信ZF2
しようとしています。DOMPDFModule
EmailZF2
これが私のコントローラーでやっていることです:
// fetch data
$user = $this->getEntityManager()->getRepository('Application\Entity\Users')->find(1);
$address = $this->getEntityManager()->getRepository('Application\Entity\Addresses')->find(1);
// generate PDF
$pdf = new PdfModel();
$pdf->setOption('filename', 'Renter_application-report-' . date("Y_m_d"));
$pdf->setOption('paperSize', 'a4');
$pdf->setVariables(array(
'User' => $user,
'Address' => $address,
));
これまでのところすべてDOMPDFModule
問題ありませんがreturn $pdf
、生成された PDF のプロンプトを表示する必要があり、どれも機能していないDOMPDF
ようです (例:$pdf->render()
や$pdf->output()
)。
次のようにビューを自分でレンダリングしようとしても失敗しました(ヘッダー生成に問題があるのでしょうか?)
// Render PDF
$pdfView = new ViewModel($pdf);
$pdfView->setTerminal(true)
->setTemplate('Application/index/pdf')
->setVariables(array(
'User' => $user,
'Address' => $address,
));
$pdfOutput = $this->getServiceLocator()
->get('viewrenderer')
->render($pdfView);
最後に、このレンダリングされた PDF を取得し、どこかにウィザー保存して、添付できるようにするか、すぐに添付できるようにすることです。
// Save PDF to disk
$file_to_save = '/path/to/pdf/file.pdf';
file_put_contents($file_to_save, $pdfOutput);
// Send Email
$view = new ViewModel(array(
'name' => $User->getName(),
));
$view->setTerminal(true);
$view->setTemplate('Application/view/emails/user');
$this->mailerZF2()->send(array(
'to' => $User->getEmail(),
'subject' => 'Test email'
), $view, $file_to_save);
\src\EmailZF2\Controller\Plugin\Mailer.php
これらの行を使用してファイルを編集してPDFを添付することで、私はなんとか機能させることができました:
...
public function send($data = array(), $viewModel, $pdf)
...
if($pdf && file_exists($pdf)) {
$pdf = fopen($pdf, 'r');
$MessageAttachment = new MimePart($pdf);
$MessageAttachment->type = 'application/pdf';
$MessageAttachment->filename = 'output.pdf';
$MessageAttachment->encoding = \Zend\Mime\Mime::ENCODING_BASE64;
$MessageAttachment->disposition = \Zend\Mime\Mime::DISPOSITION_ATTACHMENT;
}
...
$body_html = new MimeMessage();
$body_html->setParts(array($text, $html, $MessageAttachment));
どんな助けでも大歓迎です、ありがとう!:)