cakephp 2.1.0致命错误:找不到类'DOMPDF'

时间:2013-01-12 05:40:49

标签: cakephp-2.0 dompdf

我关注了this精彩教程

我的View/Layouts/pdf/default.ctp

App::import('Vendor', 'dompdf/dompdf.php');
$dompdf = new DOMPDF();
$dompdf->load_html(utf8_decode($content_for_layout), Configure::read('App.encoding'));
$dompdf->render();
echo $dompdf->output();

我的View/Bids/pfd/view.ctp是我的常规视图的副本,用于测试目的。

如果我删除php扩展名:

App::import('Vendor', 'dompdf/dompdf');

我收到错误:

An input file is required (i.e. input_file _GET variable).

尝试了几个require_once的组合以及没有运气。 (甚至尝试过另一个dompdf新下载:(来自Github,zip称为dompdf-master)

App::import('Vendor', 'dompdf-master/dompdf.php');

并且找到了相同的Class not error。

如果我在这个dompdf-master

中删除php扩展名
App::import('Vendor', 'dompdf-master/dompdf');

得到错误:

PHP-font-lib must either be installed via composer or copied to lib/php-font-lib 

我是肯定的访问被授予,文件是他们应该的位置,php 5.3。

根据马克的教程,这应该是非常简单的。

你能帮忙吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

要设置dompdf的正确文件是dompdf_config.inc.php。 dompdf目前不在CakePHP File and Classname Conventions之后。由于您直接加载类而不是使用使用dompdf的插件,因此您必须更加明确。查看CakePHP书中的App::import() documentation,可能会有以下内容:

App::import($type = 'Vendor', 'DOMPDF', true, array(), 'dompdf_config.inc.php', false);

当然,如果你follow the advice in this answer,你应该只使用require:

require_once(APP . 'Vendor' . DS . 'dompdf' . DS . 'dompdf_config.inc.php');

最后,我建议你放弃utf8_decode()来电,只要你使用的是dompdf 0.6.0。 dompdf 0.5.1没有很好地处理UTF8,但是只要您遵循Unicode How-to中的建议,最新版本就可以处理它。

因此,您的布局应如下所示:

require_once(APP . 'Vendor' . DS . 'dompdf' . DS . 'dompdf_config.inc.php');
$dompdf = new DOMPDF();
$dompdf->load_html($content_for_layout);
$dompdf->render();
echo $dompdf->output();