当我点击下载按钮时,会发送ajax请求并调用HtmlToPDF()
php函数。
首先,我将使用FPDF从html文件创建一个pdf文件。之后我想下载创建的pdf文件。
代码:
function HtmlToPDF()
{
$fileName = $_POST['fileName'];
$file = basename($fileName, ".html");
$pdf=new HTML2FPDF();
$pdf->AddPage();
$fp = fopen("../".$fileName,"r");
$strContent = fread($fp, filesize("../".$fileName));
fclose($fp);
$pdf->WriteHTML($strContent);
$fullPath = "../Bills/".$file.".pdf";
$pdf->Output($fullPath);
if (is_readable ($fullPath)) {
$fsize = filesize($fullPath);
$path_parts = pathinfo($fullPath);
header('Content-Description: File Transfer');
header("Content-type: application/pdf"); // add here more headers for diff. extensions
header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\"");
header('Content-Transfer-Encoding: binary'); // use 'attachment' to force a download
header('Expires: 0');
header("Content-length: $fsize");
header('Pragma: public');
header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
ob_clean();
flush();
echo file_get_contents($fullPath);
exit;
}
}
创建了PDF。但我无法下载该文件。响应就像
%PDF-1.3 3 0 obj <> endobj 4 0 obj <> 流 xYMS0WhaɽA)OL,RW YLA!3 $} Z} R9P Dd D D ( _)YL~ & $ c 3 zk{, } 4pI4倒D D> B m-? 49 |] 7Ym#
H���Tc�8��ӹ!�9�C�L�}?O�O� � � � ��H�,���i�|��G�Q�S���?#R GYB�KR�1�Qҡq��)��Ql�m�% {�/�_�c��XOۆQ
)< PG}QeΧ7Wɠ0e鞯e.ΒbNW 6] 4 % pJ Wg ⡞yw o ' z 9 V R K# > < f R6 [R |:OEbfnia] S! C<܅ “ J Y} 1R + 2��b�e��0Z�4H������i����g\h� %R��p�0��c����ڵ�
@ulW϶ Q VJz Vȋ5 J ! 4: p @ |0 ! B {ñ X?[F([ pl G nHn 4 Q o2 2!小号ަC-·v S [F&安培; NL &安培; A} ^ $ P8XXiͳry| gUZX0 = Q ^ ^WGʮG “8ԀǯydӴ〜#$ H] 3 **戈 endstream endobj 1 0 obj < endobj 5 0 obj < endobj 6 0 obj < endobj 7 0 obj < endobj 2 0 obj < > endobj 8 0 obj << /制片人(FPDF 1.52) / Creator(HTML2FPDF>> http://html2fpdf.sf.net) / CreationDate(D:20130903060123) > endobj 9 0 obj << /类型/目录 / Pages 1 0 R / OpenAction [3 0 R / FitH null] / PageLayout / OneColumn > endobj 外部参照 0 10 0000000000 65535 f 0000000916 00000 0000001304 00000 0000000009 00000 0000000087 00000 0000001003 00000 0000001099 00000 0000001200 00000 0000001412 00000 0000001536 00000 预告片 << /大小10 / Root 9 0 R / Info 8 0 R > startxref 1639 %% EOF
我看到了一些与此相关的堆栈溢出问题。 PDF format error with PHP
但无法解决我的问题。请帮帮我..
答案 0 :(得分:1)
根据FPDF文档,您可以使用第二个Output()
参数
目的地发送文件的位置。它可以采取其中之一 以下值:
我:将文件内联发送到浏览器。如果使用插件 可用。当选择"保存时,使用名称给出的名称 作为"生成PDF的链接上的选项。
D:发送到浏览器并强制下载给定名称的文件 按名称。
F:保存到名称为name的本地文件(可能包含一个 路径)。
S:将文档作为字符串返回。名称被忽略。
通过使用D
参数,它应该强制下载,而不使用AJAX