【问题标题】:cakephp 2.1.0 Fatal error: Class 'DOMPDF' not foundcakephp 2.1.0 致命错误:找不到类“DOMPDF”
【发布时间】:2013-01-13 04:09:14
【问题描述】:

我关注了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 found 错误。

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

按照mark的教程应该很简单。

你能帮忙吗?

非常感谢!

【问题讨论】:

  • 我建议您使用标准的 PHP include() 进行测试,以首先让一切正常工作。然后开始用 Cake 的 App::import 一次替换包含一个。 (各种 Cake 的 include/import/etc 方法的语法可能不直观且很奇怪)
  • 谢谢@Costa;尝试过include(APP . 'Vendor/dompdf/dompdf.php');' and got error 需要输入文件(即 input_file _GET 变量)。'。尝试包括每个 .php 文件(dompdf_config.inc.php 等)和相同的错误。删除 .php 扩展名找不到类。

标签: cakephp-2.0 dompdf


【解决方案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();

【讨论】:

  • 谢谢#BrianS。该类现在似乎已加载。但是,Adobe 报告错误:文件不以“%PDF-”开头。 Local\EWH-jlr[+$y 我正在使用 Adob​​e Reader X,尝试取消选中“在浏览器中显示 PDF”,清除浏览器历史记录等。关于如何修复的任何想法? (除此之外,另一个 pdf 生成器(mpdf)在 cakephp 之外工作得很好,只是无法集成到 cake 中,但 pdf 的创建完美无缺)。我还读到,在呈现 pdf 之前发布数据时会发生此错误。有什么提示吗?非常感谢您的帮助。
  • 谢谢@BrianS。他的课现在似乎加载了。但是,Adobe 报告错误:文件不以“%PDF-”开头。 Local\EWH-jlr[+$y 我正在使用 Adob​​e Reader X,尝试取消选中“在浏览器中显示 PDF”,清除浏览器历史记录等。关于如何修复的任何想法?
  • 刚刚尝试了这个使用 dompdf(或 Mpdf)github.com/ceeram/CakePdf 的插件,但仍然出现错误:文件不以 '%PDF-' 开头。 !!你能帮忙吗?
  • 除了 PDF 之外,您可能还会发送某种 PHP 错误或 CakePHP 调试信息。通过将Configure::write('debug',0); 添加到布局的顶部,确保将 CakePHP 调试级别设置为 0。
  • 仅供参考,要查看非 PDF 内容是否进入输出,您可以在纯文本编辑器(例如记事本或 TextEdit)中打开 PDF。非 PDF 内容通常位于文件的顶部。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-03
  • 2016-05-24
  • 1970-01-01
  • 2011-09-08
相关资源
最近更新 更多