Werden die Bilder bei dir wieder richtig dargestellt? 1
-
Ja, hat funktioniert. (1) 100%
-
Nein, funktioniert leider nicht. (0) 0%
Solltest du auch Probleme mit Bildern bei der Nutzung von Dompdf haben, dann habe ich hier sehr wahrscheinlich die Lösung für dich!
Ich nutze Dompdf so, dass ich mehrere Dokumenten-Vorlagen als PHP-Dateien habe, die den HTML Inhalt, der zu druckenden Seite beinhalten. Beispielsweise mit diesem Inhalt:
<img src="https://example.com/wp-content/uploads/2021/10/Company-Logo.jpg">
<img src="https://Auth-User:Auth-Password@example.com/wp-content/uploads/2021/10/Company-Logo.jpg">
Hinweis: Auch per HTTP BasicAuth geschützte URL´s funktionieren bei mir ohne Probleme. Laut anderen Nutzern muss zusätzlich etwas im Code ergänzt werden (siehe: GitHub: base64_encode username:password), ich habe diese aber Änderung nicht benötigt!
Damit der Aufruf dieser "externen" Bilder, die eigentlich auch lokal erreichbar wären, funktioniert muss die Einstellung $options->set('isRemoteEnabled', TRUE); aktiviert werden. Dies hat bei mir auch mehrere Monate ohne Probleme funktioniert, aber seit neustem musste ich eine weitere Änderung an den Einstellungen vornehmen, damit die BIlder ordnungsgemäß angezeigt werden. Laut dem GitHub Nutzer philcarbo (GitHub: firewall blocking request) muss folgender Code ergänzt werden, damit die Aufrufe der Bilder nicht von der eigenen Firewall blockiert werden:
$contxt = stream_context_create([
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'GET',
'user_agent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
],
'ssl' => [
'verify_peer' => FALSE,
'verify_peer_name' => FALSE,
'allow_self_signed'=> TRUE,
]
]);
$dompdf->setHttpContext($contxt);
Display More
Durch diese Änderung werden meine Bilder wieder angezeigt.
Durch den Aufruf einer anderen PHP-Datei generiere ich PDF-Dateien, hier ist mein Quellcode:
<?php
/* Erzeugung eines PDF-Dokumentes
* https://github.com/dompdf/dompdf/wiki/Usage
*/
// include autoloader
require __DIR__.'/vendor/autoload.php';
// reference the Dompdf namespace
use Dompdf\Dompdf;
use Dompdf\Options;
// instantiate and use the dompdf class
$options = new Options();
$options->set('isRemoteEnabled', TRUE);
$dompdf = new Dompdf($options);
// Inhalt der PHP-Datei erzeugen
ob_start();
require __DIR__."/PDF_Vorlagen/PDF-Dokument-Inhalt.php";
$html = ob_get_clean();
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation landscape portrait
$dompdf->setPaper('A4', 'portrait');
// (Optional) Sets the base path used for external stylesheets and images.
$dompdf->setBasePath('/www/wwwroot');
//firewall was blocking the request https://github.com/dompdf/dompdf/issues/1118#issuecomment-810514051
$contxt = stream_context_create([
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'GET',
'user_agent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
],
'ssl' => [
'verify_peer' => FALSE,
'verify_peer_name' => FALSE,
'allow_self_signed'=> TRUE,
]
]);
$dompdf->setHttpContext($contxt);
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser
$dompdf->stream("PDF-Dokument",array("Attachment" => 0));
?>
Display More