TCPDF - Codeigniter - 无法加载PDF文档

时间:2013-04-03 19:49:51

标签: php codeigniter pdf tcpdf

控制器:

public function test(){
    $data = array();
    $this->load->library('tcpdf');
    $this->display_page($data);
}

test.php :(不发布所有内容,因为它有点长)

global $l;
$l = Array();
$l['a_meta_charset'] = 'UTF-8';
$l['a_meta_dir'] = 'ltr';
$l['a_meta_language'] = 'en';
$l['w_page'] = 'page';

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8',              false);


-- pdf stuff -- 

$pdf->Output('example_007.pdf', 'I');

在Chrome中,它只是说“无法加载PDF文档。”。没有错误,没有在控制台中。 在Firefox中,它说:“文件不以'%PDF-'开头。本地\ EWH`_'s3-0y”。

Local \的末尾的字符串在每次加载时都是随机的。

我尝试过使用输出缓冲和刷新,但无济于事。我很茫然。

5 个答案:

答案 0 :(得分:3)

输出pdf后尝试输入 exit; 。我希望它能解决这个问题,就像它对我一样。

- pdf stuff -

$pdf->Output('example_007.pdf', 'I');
exit;

答案 1 :(得分:2)

试试这个

ob_clean();
ob_flush();
$pdf->Output('example_007.pdf', 'I');
ob_end_flush();
ob_end_clean();

答案 2 :(得分:0)

在生成发票之前,您可能正在向浏览器输出内容。转到页面的来源,查看是否有任何内容,包括空格(新行或空格)并删除它们。

答案 3 :(得分:0)

Duniyadnd是对的。当我在Chrome中的调试工具中查看网络响应​​时,我看到'%PDF-'魔法在第二行,而不是第一行。我在pdf文件之前输出到浏览器的分隔符之前和之后发现了我所需的包含文件中的一些空格。在php分隔符之前和之后消除这个空格来解决这个问题。

答案 4 :(得分:0)

如果您使用的是YII FRAMEWORK,请确保您使用renderPartial而不是在控制器中渲染视图