簡體   English   中英

CakePHP生成pdf,然后作為電子郵件附件發送

[英]CakePHP generate pdf then send as email attachment

我正在使用TCPDF庫在CakePHP應用程序中創建發票。 如果我轉到/invoices/view/1我的view.ctp包含用於在瀏覽器中生成並顯示pdf的代碼。 我想添加將pdf作為電子郵件附件發送的功能,所以我創建了動作/invoices/send_invoice並將代碼從view.ctp復制到了電子郵件模板中。

現在卡住了,我不知道如何在附加PDF之前先生成它。 在view.ctp頁面模板的最后,我使用

$pdf->Output(APP . 'File/pdf_invoices' . DS . 'invoice-'.$invoice['Invoice']['id'].'.pdf', 'I');

它會發送pdf以便在瀏覽器中查看而不創建文件。 如果我將$ F-或-FI作為$ pdf-> Output()的最后一個參數,則可以保存文件,但不能保證用戶在嘗試將其作為電子郵件發送之前會先查看該發票。

在我的send_invoice動作中,我需要將pdf生成為文件,以便附加:

$email->attachments(APP . 'File/pdf_invoices' . DS . 'invoice-'.$invoice['Invoice']['id'].'.pdf');

在我的電子郵件模板中包含生成pdf文件的代碼意味着當我嘗試附加該文件時,該文件尚不存在。 有沒有辦法從電子郵件模板本身附加文件? 我當時想也許可以在Invoice模型上編寫一個函數來生成pdf,但是我想使用一些View Helpers(例如Number helper)來格式化數據。 我可以在視圖中執行代碼,然后在不顯示視圖的情況下返回到控制器/操作嗎?

帶有PDF附件的Cakephp電子郵件和帶有CakePDF插件的PDF生成

步驟1:安裝和設置CakePDF

步驟2:設定

步驟3:App Controller配置

App::uses('CakePdf', 'CakePdf.Pdf');
public $components = array("Email","RequestHandler");

步驟4:CakePHP的控制器代碼

    // PDF Generation code
    $this->set('extraparams', $categories);

    $this->pdfConfig = array(
        'orientation' => 'portrait',
        'filename' => 'invoice_'. $orderID
    );

    $CakePdf = new CakePdf();
    $CakePdf->viewVars(array('extraparams' => $categories));
    $CakePdf->template('confirmpdf', 'default');
    //get the pdf string returned
    $pdf = $CakePdf->output();
    //or write it to file directly


    $pdf = $CakePdf->write(APP . 'webroot'. DS .'files' . DS . 'orders' . DS . 'order_'.$orderID.'.pdf');
    $pdf = APP . 'webroot'. DS .'files' . DS . 'orders' . DS . 'order_'.$orderID.'.pdf';
    // PDF Generation code

    return $pdf;

非常有用的鏈接,只需按照上述步驟操作,您的PDF就會生成:

閱讀更多

您可以通過創建一個視圖對象,然后手動調用所需的函數來使其正確呈現來實現。

 $view = new View(null, false);
 $view->set(//set view data here like normal);
 $view->viewPath = 'pdf';  //folder to look in in Views directory
 $output = $view->render('pdf', 'pdf');  //layout name and view name

然后只保存輸出,或根據需要使用它。

如果可以使用wkhtmltopdf ,另一種可能性是生成一個臨時pdf文件,將其附加並刪除。 wkhtmltopdf做主要工作:它直接將html文件轉換為pdf。 html是您的視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM