Dompdf生成的pdf是0字节
问题描述:
我想将pdf保存到磁盘。Dompdf生成的pdf是0字节
我使用Dompdf
和Codeigniter
如下:
$this->load->helper('dompdf','file');
$this->load->helper('file');
$saveTo = './labels';
$data['id'] = $this -> uri -> segment(3);
$data['no_of_prints'] = $this -> uri -> segment(4);
$labelname = "Label". $data['id'] ."-". $data['no_of_prints'] . ".pdf";
$html = $this->load->view('label_view', $data, TRUE);
file_put_contents($saveTo."/".$labelname, pdf_create($html, $labelname));
当标签被正确生成。保存到磁盘的文件读取0字节,正如我所料,我得到一个Adobe Reader cannot open this file ...
错误。
我也使用fancybox 2.0
弹出pdf,当我右键单击弹出,(pdf不显示,我猜pdf插件问题)我能Save as
可读的pdf不是0字节。
应用程序自动将pdf保存到磁盘很重要。我如何将可读的pdf保存到磁盘?
谢谢。
答
我发现了一些使用DomPDF的旧CI代码(pre version 2),我有一个额外的参数来写作文件。
和你有很大的不同吗?
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
function pdf_create($html, $filename, $stream=FALSE, $orientation='portrait')
{
require_once("dompdf/dompdf_config.inc.php");
spl_autoload_register('DOMPDF_autoload');
$dompdf = new DOMPDF();
$dompdf->set_paper(array(0,0, 2.175 * 72, 3.375 * 72), "landscape"); // credit card size
$dompdf->load_html($html);
$dompdf->render();
if ($stream)
{
$dompdf->stream($filename.".pdf");
}
else
{
$CI =& get_instance();
$CI->load->helper('file');
write_file("./uploads/$filename.pdf", $dompdf->output());
}
}
?>
+0
添加了'require_once()',如代码中所示,创建了一个'DOMPDF'的新对象,它工作。谢谢。 – watkib
该文件是否写入服务器?您是否尝试过使用绝对系统路径作为文件位置? 例如$ save_to = $ _SERVER [“DOCUMENT_ROOT”]。 '/labels/'.$labelname.'.pdf'; – Rooneyl
文件被写入到根目录下的'labels'文件夹它只是0字节,不能被pdf阅读器打开。 – watkib
您应该分部分进行调查。首先,查找来自PHP的任何错误或警告。其次,检查以确保'$ html'被填充?你可以将它回显出来查看。第三,返回'pdf_create()'的结果,这样你就可以确保它返回一些东西。如果这些都不起作用,你可能需要检查你的dompdf配置,或者跳入使用dompdf的扩展。 – BrianS