首页 > 解决方案 > 如何通过 PHPMailer 发送可填写的 pdf(用 pdftk 填充)?

问题描述

我在客户填写的网站上有一张表格。当用户填写表格并单击提交时,数据将发送到我已经创建的 pdf(发票),并且 pdf 中的某些位置填充了该数据。我使用 PDFTK 库做到了这一点:

public function generate($data)
    {
        $filename =  date("d-m-Y-His") . ".pdf";

        $pdf = new Pdf('./form.pdf');
        $pdf->fillForm($data)
        ->flatten()
        ->saveAs('./completed/' . $filename);

        $path = './completed/' .$filename;

        return $path;
    }

问题是,我不知道如何通过 PHPMailer 库发送这个填充的 pdf,因为 pdf 需要作为字符串才能与 phpmailer 一起使用。

$pdf = new GeneratePDF;
$response = $pdf->generate($data);

$email = new PHPMailer();
$email->SetFrom('you@example.com', 'Your Name'); 
$email->Subject   = 'Test';
$email->Body      = 'Test';
$email->AddAddress( 'mail exmp' );


$email->AddAttachment( $response , 'NameOfFile.pdf' );

$email->Send();

以及如何将文件实际保存在 cpanel 服务器中,因为当我这样做时,它在服务器上不起作用。

标签: phppdfphpmailerpdftk

解决方案


pdf 需要作为字符串才能与 phpmailer 一起使用

这不是真的。addAttachment()要求您传入磁盘上本地文件的路径,因此您可以执行以下操作:

$email->addAttachment(generate(), 'NameOfFile.pdf');

可以使用 传递二进制字符串addStringAttachment(),但这不是您在这里要求的。


推荐阅读