2013-05-20 66 views
1

我想将pdf保存到磁盘。Dompdf生成的pdf是0字节

我使用DompdfCodeigniter如下:

$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保存到磁盘?

谢谢。

+0

该文件是否写入服务器?您是否尝试过使用绝对系统路径作为文件位置? 例如$ save_to = $ _SERVER [“DOCUMENT_ROOT”]。 '/labels/'.$labelname.'.pdf'; – Rooneyl

+0

文件被写入到根目录下的'labels'文件夹它只是0字节,不能被pdf阅读器打开。 – watkib

+1

您应该分部分进行调查。首先,查找来自PHP的任何错误或警告。其次,检查以确保'$ html'被填充?你可以将它回显出来查看。第三,返回'pdf_create()'的结果,这样你就可以确保它返回一些东西。如果这些都不起作用,你可能需要检查你的dompdf配置,或者跳入使用dompdf的扩展。 – BrianS

回答

2

我发现了一些使用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