我想让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设置。
非常感谢。
答案 0 :(得分:74)
dompdf/lib/php-font-lib/classes/
目录。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");