dompdf无法加载

时间:2013-02-22 16:02:51

标签: php pdf include dompdf

我想让dompdf在内部服务器上运行。使用默认的config.inc.php设置,运行等效的演示'Hello Wolrd'脚本时,我得到以下内容:

Warning: require_once(/var/www/dompdf-master/lib/php-font-lib/classes/font.cls.php): failed to open stream: No such file or directory in /var/www/dompdf-master/dompdf_config.inc.php on line 335
Fatal error: require_once(): Failed opening required '/var/www/dompdf-master/lib/php-font-lib/classes/font.cls.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/dompdf-master/dompdf_config.inc.php on line 335 

当我关闭DOMPDF_ENABLE_AUTOLOAD时,我不再收到此警告,但代码失败并显示以下内容:

Fatal error: Class 'DOMPDF' not found in /var/www/rfq/test.php on line 115

以下是代码:

require_once("/var/www/dompdf-master/dompdf_config.inc.php");

$dompdf = new DOMPDF(); // this is the line that fails
$dompdf->load_html($quotehtml);
$dompdf->render();
$dompdf->stream("rfq".$_REQUEST['quoteid'].".pdf");

这是Ubuntu 12.04,补丁的最新版本,默认的Apache设置。

非常感谢。

7 个答案:

答案 0 :(得分:74)

  • 转到https://github.com/PhenX/php-font-lib并下载图书馆。
  • 创建dompdf/lib/php-font-lib/classes/目录。
  • 在zip文件中,获取src/FontLib/文件夹的内容并将其粘贴到新创建的目录中。

这似乎对我有用。

答案 1 :(得分:4)

这是DOMPDF项目移至Github后的临时问题。查看this question的答案。 获得完整软件包的最简单方法是下载DOMPDF 0.6 beta 3 from Google Code

答案 2 :(得分:2)

我们将在codeigniter中使用dompdf但是我从GitHub下载的文件没有我们需要的所有文件。缺少php-font-lib的所有文件。所以我们不得不下载并上传到相应的文件夹。因此,要让dompdf在codeigniter中工作,您可能需要下载它。

见这里 http://www.digitalwhores.net/codeigniter/codeigniter-dompdf-master-and-php-font-lib/

答案 3 :(得分:0)

如果您使用composer安装dompdf,则需要将define("DOMPDF_ENABLE_AUTOLOAD", false);放在dompdf_config.custom.inc.php中。这将允许作曲家自动加载已安装的php-font-lib。 (参见此问题:https://github.com/dompdf/dompdf/issues/636

如果您不使用作曲家,请参阅Mikepote的答案。

答案 4 :(得分:0)

如果在做了其他答案建议之后没有纠正错误:

In dompdf_config.inc.php, change line 332 to point to the actual location of your Font.php  file.
mine was /php-font-lib/src/FontLib

那里没有提到CLASSES文件夹。

答案 5 :(得分:0)

我几乎遇到了同样的问题。我的代码正在我的本地开发机器上运行 - 一个Windows机器 - 但后来我们的生产服务器上失败了 - 一个Linux机箱

问题在于"类"目录是小写的(\ app \ Vendor \ dompdf \ lib \ php-font-lib \ classes),Windows并不介意 - 但Linux是区分大小写的!

只需编辑dompdf_config.inc.php中的以下行即可解决问题:

require_once(DOMPDF_LIB_DIR . "/php-font-lib/Classes/Font.php");

为了保持一致性,我用大写字母重命名了目录" C"在Windows框上。

答案 6 :(得分:0)

新版本的dompdf无法使用“作曲家安装”功能。或者'作曲家更新'。它需要特殊版本的字体库,这些版本可能并不总是最新版本,因此将来可能会发生变化。但您可以通过dompdf的文档找到如何安装它。 不知道为什么作者没有在composer.json中硬编码这些字体版本,但无论如何这里是如何做到的。

目前使用该库的最简单和最好的方法是通过git(取自官方文档)

git clone https://github.com/dompdf/dompdf.git
cd dompdf

git clone https://github.com/PhenX/php-font-lib.git lib/php-font-lib
cd lib/php-font-lib
git checkout 0.4
cd ..

git clone https://github.com/PhenX/php-svg-lib.git php-svg-lib
cd php-svg-lib
git checkout v0.1

然后你可以做

use Dompdf\Dompdf;
$dompdf = new Dompdf();
$dompdf->loadHtml('hello world');
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$dompdf->stream( "/path-to-save-pdf-file/sample.pdf");