wake-up-neo.com

dompdf lädt nicht

Ich versuche, Dompdf auf einem In-House-Server zum Laufen zu bringen. Mit den Standardeinstellungen von config.inc.php erhalte ich Folgendes, wenn Sie das Äquivalent des Demo-Skripts "Hello Wolrd" ausführen:

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 

Wenn ich DOMPDF_ENABLE_AUTOLOAD ausschalte, erhalte ich diese Warnung nicht mehr, der Code schlägt jedoch mit folgendem Fehler fehl:

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

Folgendes ist der 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");

Dies ist Ubuntu 12.04, aktuell auf Patches, mit Apache-Standardeinstellungen.

Vielen Dank.

28
Mark T. Johns
  • Gehen Sie zu https://github.com/PhenX/php-font-lib und laden Sie die Bibliothek herunter.
  • Erstellen Sie das Verzeichnis dompdf/lib/php-font-lib/classes/.
  • Nehmen Sie in der Zip-Datei den Inhalt des src/FontLib/-Ordners und fügen Sie ihn in Ihr neu erstelltes Verzeichnis ein.

Das schien für mich zu funktionieren.

74
Mikepote

Dies ist ein vorübergehendes Problem, nachdem das DOMPDF-Projekt nach Github verschoben wurde. Siehe die Antworten auf diese Frage ..__ Die einfachste Lösung, um ein komplettes Paket zu erhalten, ist das Herunterladen von DOMPDF 0.6 beta 3 von Google Code .

4
Jpsy

Wir werden dompdf in codeigniter verwenden, aber die Datei, die ich von GitHub heruntergeladen habe, enthält nicht alle Dateien, die wir benötigen. Es fehlen alle Dateien von php-font-lib. Also mussten wir es herunterladen und in den entsprechenden Ordner hochladen. Damit dompdf in codeigniter funktioniert, müssen Sie es möglicherweise herunterladen.

Siehe hier http://www.digitalwhores.net/codeigniter/codeigniter-dompdf-master-and-php-font-lib/

2
Valko Valkov

Ich hatte fast das gleiche Problem. Mein Code funktionierte auf meiner lokalen Entwicklungsmaschine - einer Windows-Box -, aber auf meinem Produktionsserver - einer Linux-Box - fiel ein Fehler aus

Das Problem war, dass das "classes" -Verzeichnis in Kleinbuchstaben (\ app\Vendor\dompdf\lib\php-font-lib\classes) war, was Windows nicht störte - aber Linux machte die Groß- und Kleinschreibung beachten!

Durch einfaches Bearbeiten der folgenden Zeile in dompdf_config.inc.php wurde das Problem gelöst:

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

Aus Gründen der Konsistenz habe ich das Verzeichnis mit einem "C" in der Windows-Box umbenannt.

0
foxbeefly

Die neue Version von dompdf funktioniert nicht mit 'composer install' oder 'composer update'. Es sind spezielle Versionen von Fontbibliotheken erforderlich, bei denen es sich möglicherweise nicht immer um die neuesten Versionen handelt. Dies kann sich in Zukunft ändern. Wie Sie es installieren, erfahren Sie in der Dokumentation von dompdf. Weiß nicht, warum die Autoren diese Font-Versionen nicht in der composer.json fest codiert haben, aber wie auch immer, hier ist, wie es geht.

Derzeit ist die einfachste und beste Art, die Bibliothek zu verwenden, die Git-Datei (aus den offiziellen Dokumenten).

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

Dann kannst du es einfach tun

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

Wenn der Fehler nicht korrigiert wird, nachdem andere Antworten vorgeschlagen wurden:

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

Es gibt keinen dort genannten CLASSES-Ordner.

0
cMinor

Wenn Sie Composer zur Installation von dompdf verwenden, müssen Sie define("DOMPDF_ENABLE_AUTOLOAD", false); in dompdf_config.custom.inc.php eingeben. Auf diese Weise kann der Composer die bereits installierte php-font-lib automatisch laden. (Siehe diese Ausgabe: https://github.com/dompdf/dompdf/issues/636 )

Wenn Sie keinen Composer verwenden, lesen Sie die Antwort von Mikepote.

0
Loren