创建PDF文件会出错(Adobe Acrobat:它是作为电子邮件附件发送的,未正确解码!)

时间:2013-10-23 13:27:11

标签: php

我想使用下面的代码

创建一个(.pdf)格式的CV
$data = "<P>This is my CV</P>";
$file = "cv.pdf";
$openedFile = fopen($file, "w");
fwrite($openedFile, $data);
fclose($openedFile);
$fileOpen = fopen($file, 'r');
$content = fread($fileOpen, filesize($file));
$fsize = filesize($file); 
$ftype = filetype($file);
fclose($fileOpen);
unlink($file);  // i don't want to store the file so i remove it
header("Content-length: $fsize");
header("Content-type: $ftype");
header("Content-Disposition: attachment; filename=$file");
echo $data;
exit;

它将为我创建它并将显示下载对话框以下载文件,下载后我无法打开文件它给我错误

  

错误Adobe Acrobat:它是作为电子邮件附件发送的而不是   正确解码了!

但它适用于(.doc)文件类型。

请帮助我!

2 个答案:

答案 0 :(得分:2)

你在尝试的是不可能的。

利用TCPDFDOMPDF等PDF库将文字内容转换为PDF格式。

使用FPDF的插图

以下是使用FPDF

的演示链接

答案 1 :(得分:0)

$data = "<P>This is my CV</P>";
$file = "cv.pdf";
$openedFile = fopen($file, "w");
fwrite($openedFile, $data);
fclose($openedFile);

此代码制作PDF文件。它只创建一个文本(.txt)文件和名称.pdf。这并不奇怪地将它变成PDF。 PDF是一种特殊的(二进制)格式(它们具有特殊标题,“文本”以特殊方式存储),因此Adobe Reader不知道如何处理您提供的文件。

要在PHP中制作PDF文件,您需要使用特殊的库,例如dompdf(https://github.com/dompdf/dompdf)。


它对.doc文件“有效”,但不是因为您认为的原因。 .doc个文件也是二进制格式。问题是,Microsoft Word还可以打开.txt文件(这是你真正做的,只是重命名),所以它只是将.doc文件作为.txt文件读取。它恰巧“巧合”。

要制作“真正的”.doc文件,您还需要一个特殊的库,例如PHPWord(http://phpword.codeplex.com/documentation)。


P.S。这段代码还有其他问题,但这是最重要的。