繁体   English   中英

使用Base64在PHP中附加PDF文件

[英]Appending PDF Files in PHP with Base64

我有一系列要合并在一起的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文件附加到一个文件中,然后再附加到电子邮件中?

提前致谢!

我不确定您是否特别需要将PDF合并为一个PDF,或者只需要一个文件。 这是两个选项:

  1. 如果要将所有PDF 合并为一个PDF文件,则这是一个重复的问题 您提到不想拥有本地文件,但这可能是一个不合理的约束(例如,大PDF的内存问题)。 适当使用临时文件,然后自己清理。
  2. 如果只需要一个文件,请考虑将文件放入ZIP存档并发送。 为此,您可能还喜欢ZipStream库 这是使用本机库的一些最少的代码:

     $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 ); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM