2013-02-22 3 views
26

Я пытаюсь заставить dompdf работать на внутреннем сервере. С настройками по умолчанию config.inc.php, я получаю следующее при запуске эквивалента демо скрипта «Hello Wolrd»:dompdf не загружается

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

Большое спасибо.

+3

возможно дубликата [PHP-шрифт -lib должен либо быть установлен через композитор, либо скопирован в lib/php-font-lib] (http://stackoverflow.com/questions/13431905/php-font-lib-must-either-be-installed-via-composer- or-copied-to-lib-php-font-lib) –

+0

Любой, кто читает это и имеет проблемы даже после добавления 'php-font- lib' измените имя файла 'Font.php' на' font.cls.php' в строке 332 'dompdf_config.inc.php' – Sisir

ответ

2

Мы будем использовать dompdf в codeigniter, но файл, который я загрузил из GitHub, не имеет всех необходимых нам файлов. Отсутствует все файлы php-font-lib. Поэтому нам пришлось загрузить его и загрузить в соответствующую папку. Итак, чтобы dompdf работал в кодеригенере, вам, возможно, придется его загрузить.

Смотрите здесь http://www.digitalwhores.net/codeigniter/codeigniter-dompdf-master-and-php-font-lib/

4

Это временная проблема после того, как проект DOMPDF переехал в Github. См. Ответы на вопрос this question. Самое легкое решение для получения полного пакета - загрузить DOMPDF 0.6 beta 3 from Google Code.

72
  • Идет по адресу https://github.com/PhenX/php-font-lib и загрузите библиотеку.
  • Создайте каталог dompdf/lib/php-font-lib/classes/.
  • В zip-файле возьмите содержимое папки src/FontLib/ и вставьте его в свой новый каталог.

Это, казалось, сработало для меня.

+0

Хорошо работает. Upvoted. Спасибо :) – Gogol

+0

Спасибо большое ... – ravisoni

+0

Спасибо .... Он работает .... –

0

Если вы используете композитор для установки dompdf, вам нужно поставить define("DOMPDF_ENABLE_AUTOLOAD", false); в dompdf_config.custom.inc.php. Это позволит автору загружать php-font-lib, поскольку он уже установлен. (См. Этот вопрос: https://github.com/dompdf/dompdf/issues/636)

Если вы не пользуетесь композитором, см. Ответ Микепоте.

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 

Там нет папки КЛАССОВ, что было сказано там.

0

У меня была почти такая же проблема. Мой код работал над моей локальной машиной dev - ящик Windows - но потом не работал на нашем производственном сервере - ящик Linux

Проблема заключалась в том, что каталог «classes» был строчным (\ app \ Vendor \ dompdf \ lib \ php-font-lib \ classes), в которых не было проблем - но Linux был чувствителен к регистру!

Просто отредактируйте следующую строку в dompdf_config.inc.php решила проблему:

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

Для согласованности Я переименовал каталог с прописными буквами «С» в окне Windows.

0

Новая версия dompdf не работает с «установкой композитора» или «обновлением композитора». Для этого нужны специальные версии библиотек шрифтов, которые могут быть не всегда самыми последними версиями, поэтому это может измениться в будущем. Но вы можете найти, как установить его через документацию dompdf. Не знаете, почему авторы не жестко закодировали эти версии шрифтов внутри composer.json, но в любом случае вот как это сделать.

В настоящее время самый простой и лучший способ использования библиотеки осуществляется через мерзавец (взято из официальных документов)

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"); 
Смежные вопросы