web-dev-qa-db-fra.com

échec du chargement de dompdf

J'essaie de faire en sorte que dompdf s'exécute sur un serveur interne. Avec les paramètres par défaut config.inc.php, j'obtiens les éléments suivants lors de l'exécution de l'équivalent du script de démonstration '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 

Lorsque j'éteins DOMPDF_ENABLE_AUTOLOAD, je ne reçois plus cet avertissement, mais le code échoue avec les éléments suivants:

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

Voici le code:

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

Il s’agit d’Ubuntu 12.04, mis à jour de correctifs, avec les paramètres Apache par défaut.

Merci beaucoup.

28
Mark T. Johns
  • Allez sur https://github.com/PhenX/php-font-lib et téléchargez la bibliothèque.
  • Créez le répertoire dompdf/lib/php-font-lib/classes/.
  • Dans le fichier Zip, prenez le contenu du dossier src/FontLib/ et collez-le dans le répertoire que vous venez de créer.

Cela a semblé fonctionner pour moi.

74
Mikepote

Il s'agit d'un problème temporaire après le transfert du projet DOMPDF vers Github. Voir les réponses à cette question . La solution la plus simple pour obtenir le package complet consiste à télécharger DOMPDF 0.6 beta 3 depuis Google Code .

4
Jpsy

Nous utiliserons dompdf dans codeigniter MAIS le fichier que j’ai téléchargé à partir de GitHub ne contient pas tous les fichiers dont nous avons besoin. Il manque tous les fichiers de php-font-lib. Nous avons donc dû le télécharger et le télécharger dans le dossier correspondant. Donc, pour que dompdf fonctionne dans codeigniter, vous devrez peut-être le télécharger.

Voir ici http://www.digitalwhores.net/codeigniter/codeigniter-dompdf-master-and-php-font-lib/

2
Valko Valkov

J'ai eu presque le même problème. Mon code fonctionnait sur ma machine de développement locale - une machine Windows - mais échouait ensuite sur notre serveur de production - une machine Linux.

Le problème était que le répertoire "classes" était en minuscule (\ app\Vendor\dompdf\lib\php-font-lib\classes), ce qui ne dérangeait pas Windows - mais Linux respectait la casse!

La simple modification de la ligne suivante dans dompdf_config.inc.php a résolu le problème:

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

Par souci de cohérence, j'ai renommé le répertoire avec un "C" en majuscule sous Windows.

0
foxbeefly

La nouvelle version de dompdf ne fonctionne pas avec 'Composer Install' ou 'Composer Update'. Il a besoin de versions spéciales de bibliothèques de polices, qui ne sont peut-être pas toujours les dernières versions. Cela pourrait donc changer à l'avenir. Mais vous pouvez trouver comment l'installer via la documentation de dompdf. Je ne sais pas pourquoi les auteurs n'ont pas codé en dur ces versions de police dans composer.json, mais voici comment le faire.

Actuellement, le meilleur moyen d'utiliser la bibliothèque est via git (tiré de la documentation officielle)

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

Ensuite, vous pouvez juste faire

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");
0
omer Farooq

Si l'erreur n'est pas corrigée après ce que suggèrent d'autres réponses:

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

Il n'y a pas de dossier CLASSES mentionné ici.

0
cMinor

Si vous utilisez composer pour installer dompdf, vous devez entrer define("DOMPDF_ENABLE_AUTOLOAD", false); dans dompdf_config.custom.inc.php. Cela permettra ensuite à composer de charger automatiquement php-font-lib tel qu’il est déjà installé. (Voir ce numéro: https://github.com/dompdf/dompdf/issues/636 )

Si vous n'utilisez pas composer, voir la réponse de Mikepote.

0
Loren