我关注了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。
根据马克的教程,这应该是非常简单的。
你能帮忙吗?
非常感谢!
答案 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();