0

我正在使用 CakePHP 2、CakeEmail 和 CakePDF 插件

我正在尝试基于视图生成 PDF 并将其附加到电子邮件中。我已经阅读了自述文件,但仍然不明智。我是否必须在服务器上实际创建文件?

到目前为止,这是我的代码(已发送电子邮件但没有 PDF)。

// Build PDF as attachment
        $CakePdf = new CakePdf();
        $CakePdf->template('email_view', 'default');
        //get the pdf string returned
        $pdf = $CakePdf->output();

        // SMTP Options
        $this->Email->smtpOptions = array(

            // Only to be used internally
            'port'=>'25',
            'timeout'=>'30',
            'host' => '111.111.111.111',
            'username'=>'',
            'password'=>''
         );
        $this->Email->template = 'newExpenseClaim';
        $this->Email->from    = 'Expense Tracker <james@test.com>';
        $this->Email->to      = 'james@test.com'; 
        $this->Email->subject = 'New Expense Claim Submitted - Please Review';
        $this->Email->sendAs = 'both';
        $this->Email->delivery = 'smtp';

        $this->Email->attachments = $pdf;

        // Set username & url in email
        $this->set('user', $fu['User']['name']);
        $this->set('ms', $ms);
        $this->Email->send();
        $this->set('smtp_errors', $this->Email->smtpError);

这是我从 github 上读的:

https://github.com/ceeram/CakePdf

任何帮助将不胜感激!

4

2 回答 2

0

我最终得到了这个工作,这是我所做的:

// Build PDF
$CakePdf = new CakePdf();

// Add disbursements onto array
$merged = array_merge($expenseClaim, $expenseTotal, $approvedBy, $disbursements);

$CakePdf->viewVars($merged);
$CakePdf->template('email_view', 'default');
$filename = 'expense-claim-' .$id. '.pdf';
$CakePdf->write(APP . 'files' . DS . $filename);

基本上,我将需要传递给 PDF 视图的所有数据合并到一个数组中,然后使用 viewVars() 传递它。

希望这对某人有帮助!

于 2012-09-19T09:33:59.597 回答
0

我正在使用 TCPDF。我就是这样做的。使其适应您的代码:

$pdf->Content($cvData);
$content = $pdf->Output($cvFileName, 'S');
file_put_contents(TMP . $cvFileName, $content);
$this->Email->attachments = array($cvFileName=>TMP . $cvFileName);
于 2012-09-05T17:53:59.997 回答