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 по умолчанию.

Спасибо.

  • Перейдите на страницу https://github.com/PhenX/php-font-lib и загрузите библиотеку.
  • Создайте dompdf/lib/php-font-lib/classes/ .
  • В zip-файле возьмите содержимое папки 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");