if (file_exists("folder/$unique_id.pdf")) {
header('Content-type: application/pdf');
ob_clean(); // Added after reading similar question's answer
flush(); // Added after reading similar question's answer
readfile("folder/$unique_id.pdf");
} else {
$html = "PLACING_MY_HTML_CODE_HERE";
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->set_paper("A4");
$dompdf->render();
$output = $dompdf->output();
file_put_contents("folder/$unique_id.pdf", $output);
header('Content-type: application/pdf');
ob_clean(); // Added after reading similar question's answer
flush(); // Added after reading similar question's answer
readfile("folder/$unique_id.pdf");
}
如果PDF文件不存在,则使用DOMPDF生成PDF文件。生成的文件没有任何错误,并存储在文件夹内。但有时,而不是读取生成的文件,它下载一个文件没有扩展名,主要是名称“下载”。我试图打开在文本编辑器中的文件,我看到的符号与某些标题如application
,content-type
等使用PHP读取生成的PDF文件有时会下载
后来,搜查SO看到this question,并在我的代码添加ob_clean
,flush
。但问题仍然存在。
注意:我检查了使用Adobe阅读器和谷歌浏览器打开存储在文件夹中的PDF文件。这些文件已完全呈现并正确保存。
编辑:
相反readfile
我试过header
直接重定向到文件中。这没有问题。
有什么建议吗?
尝试移动'header('Content-type:application/pdf');'在PDF生成之前 –
关于它在下载之前花费多少时间来生成PDF? –
您确定此代码是否工作,因为在if条件的第一行中使用的函数应该是** file_exists ** – Vagabond