当前位置: 首页 > 知识库问答 >
问题:

CakePHP生成pdf然后作为电子邮件附件发送

颜高朗
2023-03-14

我正在使用TCPDF库在我的CakePHP应用程序中创建发票。如果我转到/发票/view/1,我的view.ctp包括在浏览器中生成和显示pdf的代码。我想添加发送PDF作为电子邮件附件的能力,所以我创建了动作/发票/send_invoice,并将代码从view.ctp复制到电子邮件模板中。

现在我被卡住了,我不知道如何在附加PDF之前先生成它。在我的view.ctp页面模板的末尾,我使用

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

它将pdf发送到浏览器中查看,而不创建文件。如果使用“F”或“FI”作为$pdf的最后一个参数,则可以保存该文件-

在我的“发送发票”操作中,我需要将pdf生成为文件,以便将其附加到:

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

在我的电子邮件模板中拥有生成pdf文件的代码意味着当我尝试附加该文件时,该文件还不存在。有没有办法从电子邮件模板本身附加文件?我在想也许我可以在我的发票模型上写一个函数来生成pdf,但是我想使用一些视图助手(比如数字助手)来格式化我的数据。我可以在视图中执行代码,然后返回到控制器/操作而不显示视图吗?

共有3个答案

江阳夏
2023-03-14

如果您可以使用wkhtmltopdf,另一种可能性是生成一个临时pdf文件,附加并删除它。html是你的视图。

彭展
2023-03-14

您可以通过创建一个视图对象,然后手动调用您需要的函数来正确呈现它。

 $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

然后保存输出,或者根据需要使用它。

葛昕
2023-03-14

带有PDF附件的Cakephp电子邮件和带有CakePDF插件的PDF生成

步骤1:安装和设置CakePDF

步骤2:配置

步骤3:应用程序控制器配置

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就会生成:

阅读更多

 类似资料:
  • 问题内容: 我创建了一个函数来获取当前网页的屏幕截图,并使用html2canvas和jsPDF将其保存为PDF。以下是我的代码: 通过使用上面的代码,我可以下载文件并将其保存在本地。但我想直接使用php脚本通过电子邮件发送生成的pdf。 以下是在php脚本中发布图像的代码,该图像将作为电子邮件发送: 但是如何在参数中发布生成的pdf ? 请为此提出任何解决方案。 问题答案: 请检查代码- 我希望它

  • 我正在用cakephp开发一个应用程序,我需要在其中生成一个pdf并将其作为电子邮件附件发送。我已经能够使用dompdf创建pdf视图,但我不知道如何将其保存为文件并以电子邮件附件的形式发送。请告诉我如何做到这一点。

  • 我想用mailto标签发送电子邮件,附带一个pdf文件作为附件。mailto标记使用以下方法打开邮件窗口,其中包含传递的参数,如to和subject: 但是,附件作为一个参数不起作用。请建议如何在手机中发送pdf附件。 谢啦

  • 我试图通过电子邮件发送pdf作为附件,但发送的文件已损坏。请问是什么原因造成的?我在下面提供了我正在使用的代码,我正在使用iText7库。 这是为了生成pdf 这会发送电子邮件 我试图通过电子邮件发送pdf作为附件,但发送的文件已损坏。请问是什么原因造成的?我在下面提供了我正在使用的代码,我正在使用iText7库。

  • 问题内容: 我正在使用sendgrid发送电子邮件,并且使用以下代码可以正常工作,但没有附件。 但是我需要发送附件,因此我搜索了github源和Web文档API,由于某种原因,没有javadocs,但是有一个示例GitHub sendgrid, 所以我一直在尝试直到它起作用为止,我缩小了一些异常和响应代码,起初我是被禁止的未经授权,最好是响应202,表示有效且已排队(在此处检查),这是我的代码发送

  • 我正在使用Meteor并尝试将pdf附加到电子邮件中。我目前将pdf作为base 64字符串返回给客户端,该字符串在新窗口中打开并显示pdf。我想以pdf的形式将base 64附加为电子邮件附件。 邮寄服务器方法: 将base64字符串返回给客户端的代码段: 当前显示pdf的客户端代码: 为了将base64字符串作为pdf附件附加,我应该做些什么?我似乎无法获得流星邮件发送的数据,因为我收到了错误