Я пытаюсь заставить 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 по умолчанию.
Спасибо.
dompdf/lib/php-font-lib/classes/
. src/FontLib/
и вставьте его в новый созданный каталог. Казалось, это сработало для меня.
Это временная проблема после того, как проект DOMPDF переместился в Github. См. Ответы на этот вопрос . Самый простой способ получить полный пакет – загрузить DOMPDF 0.6 beta 3 из Google Code .
Мы будем использовать dompdf в codeigniter, но файл, который я загрузил из GitHub, не имеет всех необходимых нам файлов. Отсутствует все файлы php-font-lib. Поэтому нам пришлось загрузить его и загрузить в соответствующую папку. Итак, чтобы dompdf работал в кодеригенере, вам, возможно, придется его загрузить.
См. Здесь http://www.digitalwhores.net/codeigniter/codeigniter-dompdf-master-and-php-font-lib/
Если вы используете композитор для установки dompdf, вам нужно установить define("DOMPDF_ENABLE_AUTOLOAD", false);
в dompdf_config.custom.inc.php. Это позволит автору загружать php-font-lib, поскольку он уже установлен. (См. Эту проблему: https://github.com/dompdf/dompdf/issues/636 )
Если вы не используете композитора, см. Ответ Микепоте.
Если ошибка не исправлена после выполнения других ответов:
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.
У меня была почти такая же проблема. Мой код работал над моей локальной машиной dev – ящиком 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");
Для согласованности я переименовал каталог с верхним регистром «C» в окне Windows.
Новая версия 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");