使用TCPDF动态生成PDF

时间:2012-01-17 10:13:56

标签: php pdf-generation tcpdf

我正在使用TCPDF库动态生成PDF(账单)并通过电子邮件发送。这一切都有效,但我有一个奇怪的问题。当我将电子邮件发送到Gmail帐户时,一切都很好,但当我将其发送到我的邮件服务器时,我收到带有pdf的电子邮件但是当我打开它时它没有打开,我收到一条消息“Adobe阅读器无法打开file.pdf因为它不是受支持的格式,或者因为文件已损坏。“ (电子邮件中的pdf为空白)。

我将PDF保存为如下字符串:

$attachment = $pdf->Output("mypdf.pdf","E");
$attachment = chunk_split($attachment);

并通过电子邮件发送,如下:

 $header .= "--".$separator.$eol; 
 $header .= "Content-Type: application/pdf; name='mypdf.pdf'".$eol;
 $header .= "Content-Transfer-Encoding: base64".$eol;
 $header .= "Content-Disposition= attachment".$eol.$eol;
 $header .= $attachment;

我正在发送带有php邮件功能的电子邮件。

有趣的是,如果我强制下载pdf,就像这样:

$ attachment = $ pdf->输出(“mypdf.pdf”,“D”);

文件正常,打开没有问题!但如果我把它改回“E”则不起作用。

另一个奇怪的是,有时我可以打开pdf(我在我的邮件服务器上)没有问题,但下次它不能工作(即使我发送完全相同的电子邮件)。

有人知道发生了什么吗?我想避免将pdf保存在本地服务器上。

2 个答案:

答案 0 :(得分:0)

为什么要避免保存pdf文件?您可以使用"F"参数保存它。邮件发送后,您可以使用unlink功能

删除它

答案 1 :(得分:0)

我看到一些小缺陷:

  • Content-Disposition=应为Content-Disposition:
  • 您应该使用"--".$separator."--"
  • 结束附件

我不确定,如果这可以解决您的问题。无论如何,我认为手动创建所有标题非常复杂。多年来,我使用PEARs Mail_Mime完成此任务,您将找到许多简单易用的解决方案。