Dompdf-Remote-Image wird nicht im PDF-Format angezeigt

Lesezeit: 4 Minuten

Auf meinem Server zeigte das über dompdf generierte PDF keine Bilder an. Da es sich um Remote-URL-Bilder handelt (lokale Bilder funktionieren einwandfrei), erfahre ich, dass einige Einstellungen erforderlich sind, um Remote-Bilder zu rendern.

allow_url_fopen = true => i can not as server control is not in my hand.(and no one will suggest to do this due to security reasons)
read/write access to the DOMPDF_TEMP_DIR (already have this)
DOMPDF_ENABLE_REMOTE = true (already have this)

Um das Problem von allow_url_fopen sicherzustellen, setze ich false in meinem localhost, der jetzt die gleiche Ausgabe wie der Server liefert.

Also, jetzt ist das Problem, dass ich Remote-Bilder in PDF mit allow_url_fopen = false anzeigen möchte

  • Ich habe fast 5-10 einzigartige Möglichkeiten ausprobiert, um dies zu tun.
  • Ich habe versucht, ein Bild in einer PHP-Datei anzuzeigen (über die Einstellung von Headern) und dann den PHP-Link in PDF anzuzeigen
  • Ich habe auch versucht, das Bild über den absoluten Pfad zu PHP anzuzeigen, aber nichts hat funktioniert.
  • Ich habe versucht, ein Bild über curl in einer Funktion zu erhalten und es dann in einer PHP-Datei anzuzeigen … aber kein Glück.

Kann mir jemand vorschlagen, wie ich Bilder im PDF-Format anzeigen kann? Der Fehler, den ich immer bekomme, ist …

Image not found
http://localhost/dompdf/image.php

und

Image not found
http://localhost/dompdf/image.jpg

  • hast du eine lösung gefunden? Ich habe das gleiche Problem, Bilder erscheinen gut auf localhost, aber nicht auf dem Live-Server, Pfad ist in Ordnung, Bild ist bereits auf dem Server.

    – Irfan Ahmed

    1. April 2014 um 6:02 Uhr

  • nein. immer noch nicht gefunden.

    – TechCare99

    12. April 2014 um 5:14 Uhr

Versuchen

$options = new Options();
$options->set('isRemoteEnabled', true);
$dompdf = new Dompdf($options);

  • Ich musste auch die Klasse Options verwenden, etwa so: use Dompdf\Options;

    – Gawin

    11. August 2017 um 0:41 Uhr


  • In meinem Fall, $dompdf = new DOMPDF(); $dompdf->set_option('isRemoteEnabled', TRUE); war ausreichend (dh keine Notwendigkeit für eine zusätzliche Klasseninitialisierung)

    – mehov

    22. Mai 2018 um 8:07 Uhr

  • set_option() ist veraltet

    – Alex

    2. Januar 2019 um 15:20 Uhr

  • Ich weiß, das ist jetzt spät, aber ich habe es versucht und es funktioniert bei mir auf Yii2 nicht

    – Neugieriger Entwickler

    25. März 2019 um 11:14 Uhr

  • @aexl … wir brauchen wirklich keine anderen Zeilen. Daumen hoch für dich. Vielen Dank

    – Vivek

    3. Mai 2019 um 6:35 Uhr

Benutzeravatar von Irfan Ahmed
Irfan Ahmed

Ich hatte das gleiche Problem, das dompdf-Bild wurde nicht auf dem Live-Server gefunden

Ich habe die Lösung gefunden, Sie müssen nur den Bildpfad überprüfen,

Unter Berücksichtigung Ihres Live-Server-Image-Pfads

<img src="http://www.example.com/public/images/thumb.png">

Sie müssen es nur ändern in

<img src="https://stackoverflow.com/questions/15153139/public/images/thumb.png">

Hinweis: Stellen Sie sicher, dass alle Einstellungen mit denen übereinstimmen, die Sie bereits vorgenommen haben.

Ich hoffe, dies wird dir helfen.

  • +1 suchte ab einer halben Stunde nach dem Problem und dieser hat wirklich geholfen.

    – Karan Thakkar

    17. Juli 2014 um 12:26 Uhr

  • @irfan Ahmed Danke für deine Lösung

    – Mukhila Asokan

    15. September 2015 um 12:39 Uhr

  • Problem, wenn der Bildname Leerzeichen enthält.

    – Rajesh Vishwakarma

    28. August 2018 um 10:08 Uhr


  • Vielen Dank. Das hat mir geholfen. Übrigens musste ich öffentlich entfernen. “thumb ” Ich hoffe, das hilft anderen.

    – Manuja Jayawardana

    8. Juni 2019 um 18:30 Uhr

Benutzeravatar von daudichya
daudichya

Es gibt zwei Dinge, um die Sie sich kümmern müssen.

  1. Wenn Sie ein Bild vom selben Server verwenden, verwenden Sie den vollständigen Verzeichnispfad, z
    /var/www/html/project_folder/images/logo.jpg

  2. Listenelement Verwendung JPEG Bild statt png oder andere Arten.

Benutzeravatar von Soubhagya Kumar Barik
Soubhagya Kumar Barik

Ich hatte das gleiche Problem, nachdem ich viel Forschung und Entwicklung betrieben hatte, bekam ich schließlich die Lösung. Zuerst müssen Sie die Optionen von dompdf abrufen und dann festlegen isRemoteEnabled mit wahr.

    $options = $dompdf->getOptions(); 
    $options->set(array('isRemoteEnabled' => true));
    $dompdf->setOptions($options);

Benutzeravatar von Chandan Bisht
Chandan Bisht

Ich hatte das gleiche Problem mit Bildern, und meine Lösung war:

getcwd().'path/to/image'

Für mich geht das!

Benutzeravatar von Saumya Prakash Mishra
Saumya Prakash Mishra

Gehe zu
dompdf/vendor/dompdf/dompdf/src/ und offen Options.php Datei.

Finden und ändern private $isRemoteEnabled = false; zu private $isRemoteEnabled = true;

Benutzeravatar von Stephen Schwink
Stefan Schwink

Können Sie diese URLs in Ihrem Webbrowser auf dem Computer erreichen, den Sie zum Öffnen der PDF-Datei verwenden? Wenn nicht, kann der PDF-Reader das auch nicht.

Ich vermute, dass die Domain “localhost” bedeutet, dass diese URLs nur von dem Webserver aus sichtbar sind, der das PDF generiert hat. Sie müssen eine URL wie ausgeben http://example.com/dompdf/image.jpg

(Um dieses Problem zu umgehen, denken Sie daran, dass es gute Gründe gibt, keine Remote-Bilder zu verwenden. Das Dokument sieht beispielsweise schlecht aus, wenn der Betrachter nicht mit dem Internet verbunden ist. Ist es möglich, die Bilder einfach direkt in die dokumentieren?)

  • Hier sieht der Benutzer meine Website und generiert dynamisch PDF-Dateien, und zum Beispiel zeige ich sein Profilbild in PDF an. (profilepic is on cdn server) Also kann ich vielleicht einen Link geben wie cdnserver.com/user/12.jpg oder ein anderer Weg ist myserver.com/user_profiles/pic.php?id=12 beide Wege funktionieren nicht und der Benutzer hat Internet Zugang

    – TechCare99

    1. März 2013 um 9:20 Uhr

1405320cookie-checkDompdf-Remote-Image wird nicht im PDF-Format angezeigt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy