0

我跟着这个很棒的教程

我的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();

MyView/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');

并得到相同的类未找到错误。

如果我在这个 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。

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

你能帮我吗?

非常感谢 !

4

1 回答 1

1

为设置 dompdf 加载的正确文件是 dompdf_config.inc.php。dompdf 当前不遵循CakePHP 文件和类名约定。由于您是直接加载类而不是使用使用 dompdf 的插件,因此您必须更加明确。查看 CakePHP 书中的App::import() 文档,可能会出现以下情况:

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

当然,如果您遵循此答案中的建议,您应该只使用 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();
于 2013-01-12T20:09:14.243 回答