2013-02-22 15 views
26

Próbuję uruchomić dompdf na wewnętrznym serwerze. Przy domyślnych ustawieniach config.inc.php, otrzymuję podczas uruchamiania równowartość demo o następującej treści „Cześć Wolrd” scenariusz:dompdf nie załaduje się

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 

Kiedy wyłączyć DOMPDF_ENABLE_AUTOLOAD, już nie dostać to ostrzeżenie, ale kod nie powiedzie się z następujących czynności:

Fatal error: Class 'DOMPDF' not found in /var/www/rfq/test.php on line 115 

Poniżej znajduje się kod:

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"); 

to Ubuntu 12.04, up-to-date na plastry, z domyślnymi ustawieniami Apache.

Dziękuję bardzo.

+3

możliwe duplikat [PHP-czcionki -lib musi być zainstalowane przez kompozytora lub skopiowane do lib/php-font-lib] (http://stackoverflow.com/questions/13431905/php-font-lib-must-either-be-installed-via-composer- lub-copied-to-lib-php-font-lib) –

+0

Każdy, kto to czyta i ma problem nawet po dodaniu 'php-font- lib' zmień nazwę pliku 'Font.php' na' font.cls.php' na linii 332 'dompdf_config.inc.php' – Sisir

Odpowiedz

72
  • Przejdź do https://github.com/PhenX/php-font-lib i pobierz bibliotekę.
  • Utwórz katalog dompdf/lib/php-font-lib/classes/.
  • W pliku zip przejmij zawartość folderu src/FontLib/ i wklej do nowo utworzonego katalogu.

To wydawało się działać dla mnie.

+0

Działa dobrze. Rewizja. Dzięki :) – Gogol

+0

Wielkie dzięki ... – ravisoni

+0

Dziękuję .... To działa .... –

0

Jeśli używasz kompozytora do instalacji dompdf, musisz umieścić define("DOMPDF_ENABLE_AUTOLOAD", false); w pliku dompdf_config.custom.inc.php. Umożliwi to autorowi autoloadowanie biblioteki php-font-lib, ponieważ jest już zainstalowana. (Zobacz ten numer: https://github.com/dompdf/dompdf/issues/636)

Jeśli nie używasz kompozytora, zobacz odpowiedź Mikepote.

0

Jeśli błąd nie zostanie rozwiązany po tym, co inne odpowiedzi sugerują:

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 

Nie ma katalogu klas, które zostało wymienione tam.

0

Miałem prawie dokładnie ten sam problem. Mój kod działał na mojej lokalnej maszynie deweloperskiej - skrzynce systemu Windows - ale potem kończył się niepowodzeniem na naszym serwerze produkcyjnym - Linux box

Problem polegał na tym, że katalog "classes" był pisany małymi literami (\ app \ Vendor \ dompdf \ lib \ php-font-lib \ classes), której system Windows nie miał nic przeciwko - ale w przypadku Linuksa rozróżniana była wielkość liter!

Po prostu edytując poniższy wiersz w dompdf_config.inc.php rozwiązał problem:

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

Dla spójności zmieniłem nazwę katalogu na wielkie litery "C" w oknie systemu Windows.

0

Nowa wersja dompdf nie działa z "instalacją kompozytora" lub "aktualizacją kompozytora". Wymaga specjalnych wersji bibliotek czcionek, które nie zawsze są najnowszymi wersjami, więc może się to zmienić w przyszłości. Ale możesz go znaleźć w dokumentacji dompdf. Nie wiem, dlaczego autorzy nie napisali na sztywno tych wersji czcionek wewnątrz pliku composer.json, ale tak czy inaczej tutaj jest, jak to zrobić.

Obecnie najprostszym i najlepszym sposobem korzystania z biblioteki jest poprzez git (wzięte z oficjalnych docs)

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 

Następnie można po prostu zrobić

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");