2013-04-03 116 views
1

控制器:TCPDF - 笨 - 无法加载PDF文档

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-'开头。Local \ EWH`_'s3-0y”。

Local \末尾的字符串对每个负载都是随机的。

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

回答

0

在生成发票之前,您可能正在向浏览器输出某些内容。转到页面的源代码,看看是否有任何东西,包括空格(新行或空格)并将其删除。

+0

是的,我已经看到了这个建议很多,它似乎并没有被这个问题在这里,感谢您的帮助。 – 2013-04-03 19:56:44

+0

您是否尝试过只包含tcpdf文件?这不应该是问题,但你永远不知道。 – Duniyadnd 2013-04-03 20:43:39

+0

我有:(这是如此讨厌,我不知道为什么我是唯一的人在这个问题的interwebs ... – 2013-04-04 00:01:21

0

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

0

如果您正在使用Yii框架,确保您的RenderPartial而不是渲染视图控制器

+1

这个答案不回答OP的问题,因为没有关于YII的信息在OP问题。要求澄清或更多信息,请使用评论。 – 2015-03-20 11:57:13

3

尽量把exit;输出PDF格式后。我希望它能解决它,就像它为我做的那样。

- PDF的东西 -

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

对我很好 – anhnt 2017-07-25 15:08:44

1

试试这个

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