在ZF2
中,我試圖使用DOMPDFModule
生成PDF並使用EmailZF2
通過電子郵件發送。渲染PDF並附加到電子郵件(使用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));
任何幫助表示讚賞,謝謝! :)