28

我正在尝试让 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 设置。

非常感谢。

4

7 回答 7

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

这似乎对我有用。

于 2014-07-01T08:42:47.217 回答
4

这是 DOMPDF 项目迁移到 Github 后的临时问题。请参阅此问题的答案。获得完整包的最简单解决方案是从 Google Code 下载 DOMPDF 0.6 beta 3

于 2013-10-22T10:57:15.127 回答
2

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

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

于 2013-09-29T15:37:48.450 回答
0

如果你使用 composer 安装 dompdf,你需要放入define("DOMPDF_ENABLE_AUTOLOAD", false);dompdf_config.custom.inc.php。这将允许作曲家自动加载已经安装的 php-font-lib。(见本期:https ://github.com/dompdf/dompdf/issues/636 )

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

于 2014-10-17T15:34:03.407 回答
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 文件夹。

于 2015-05-31T19:37:04.067 回答
0

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

问题是“classes”目录是小写的(\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");

为了保持一致性,我在 Windows 框中使用大写的“C”重命名了目录。

于 2015-06-24T08:57:43.897 回答
0

新版本的 dompdf 不适用于“composer install”或“c​​omposer update”。它需要特殊版本的字体库,这些字体库可能并不总是最新版本,因此将来可能会改变。但是您可以通过 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");
于 2017-02-03T21:59:53.947 回答