我有一系列base64 PDF文件,我想合并在一起。目前我正在使用file_get_contents(),并且PHPMailer可以单独附加每个。
$woFile = file_get_contents($url);
$invoiceFile = file_get_contents($invPDF64);
$tsFile = file_get_contents($tsPDF64);
...
$mail->AddStringAttachment($woFile, "1.pdf", "base64", "application/pdf");
$mail->AddStringAttachment($invoiceFile, "2.pdf", "base64", "application/pdf");
$mail->AddStringAttachment($tsFile, "3.pdf", "base64", "application/pdf");
我在网上看到的所有例子如FPDF都需要在本地下载文件,至少从我看到的情况来看。有没有办法将每个PDF文件附加到一个,然后将其附加到电子邮件?
提前致谢!
答案 0 :(得分:1)
我不确定您是否需要将PDF合并为一个PDF,或者您只想要一个文件。以下是两者的选项:
如果您只想要一个文件,请考虑将文件放入ZIP archive并发送。您可能也希望ZipStream library用于此目的。这是使用本机库的一些最小代码:
$attachmentArchiveFilename = tempnam('tmp', 'zip');
$zip = new ZipArchve();
# omitting error checking here; don't do it in production
$zip->open($attachmentArchiveFilename, ZipArchve::OVERWRITE);
$zip->addFromString('PDFs/first.pdf', $woFile);
$zip->addFromString('PDFs/second.pdf', $invoiceFile);
$zip->addFromString('PDFs/third.pdf', $tsFile);
$zip->close();
$mail->addAttachment($attachmentArchiveFilename, 'InvoicePDFs.zip');
# be sure to unlink/delete/remove your temporary file
unlink( $attachmentArchiveFilename );