Mit dompdf pdf-Datei erstellen?
Hallo,
ich habe mir kürzlich dompdf auf meinem Server installiert und es funktioniert auch, wenn ich reinen Text eingebe. Wenn ich allerdings html-Code eingebe, wird keine pdf-Datei ausgegeben.
Wer kann mir da helfen?
Das ist mein php-Code. In der Datei code.html.txt ist der html-Code gespeichert.
require_once('dompdf/autoload.inc.php');
use Dompdf\Dompdf;
$dompdf = new DOMPDF();
$html = file_get_contents("code.html.txt");
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("file.pdf");
2 Antworten
1) Prüfe, ob dein HTML valid ist. Du musst bedenken, dass die Bibliothek das HTML parsen und auswerten muss. Möglicherweise scheitert es dabei.
Als Zwischenprüfung kannst du ja eine sehr einfache HTML-Datei probieren:
<!doctype html>
<html>
<head>
<title>Example</title>
</head>
<body>
<p>Some content</p>
</body>
</html>
2) Aktiviere die Protokollierung aller Fehler, gleich zu Beginn (nach dem öffnenden PHP-Starttag).
error_reporting(E_ALL);
ini_set('display_errors', 'On');
3) Hast du schon den konkreten Inhalt von $html überprüft, nachdem ihr der Dateiinhalt zugefügt wurde?
Ich hatte das gleiche Problem.
Habe es so lösen können (keine Ahnung, ob mein Weg der richtige ist). Aber so gehts bei mir
require_once('dompdf/autoload.inc.php');
ob_start();
include_once('code.html.txt');
$html = file_get_contents("code.html.txt");
ob_end_clean();
use Dompdf\Dompdf;
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("file.pdf");
Danke für deinen Tipp. Es hat aber leider nicht funktioniert.
Ich habe jetzt code.html.txt in code.php abgeändert.
Mein neuer Code:
<?PHP
require_once ('dompdf/autoload.inc.php');
//Reference
use Dompdf\Dompdf;
// erstelle Dompdf Class
$dompdf = new dompdf();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Auf PDF warten </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<link href="w3.css" type="text/css" rel="stylesheet" />
<link href="style.css" type="text/css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<?php
// PDF inhalt -> Ausgabe in : $html_inhalt
ob_start();
include_once('code.php');
$html_inhalt = ob_get_contents();
ob_end_clean();
$html_inhalt;
$dompdf->load_html($html_inhalt); // Lade Content aus VARIABLE
$dompdf->setPaper('a4','portrait'); //portrait
$dompdf->set_option('defaultMediaType', 'all');
$dompdf->set_option('isFontSubsettingEnabled', true);
$dompdf->render();
$ausgabe = file_put_contents("/pfad/datei.pdf" , $dompdf->output());
?>
</body>
</html>
Leider funktioniert es immer noch nicht.
das kann so auch nicht gehen ...
<link href="w3.css" type="text/css" rel="stylesheet" />
Tausche diese gegen deine CSS-Datei aus und passe den Pfad an.
include_once('code.php');
Überprüfe: Stimmt der Pfad? (Datei im gleichen Verzeichnis? )
$ausgabe = file_put_contents("/pfad/datei.pdf" , $dompdf->output());
Anpassen: Hier muss dein Speicherpfad rein
Ok, danke. Mit deinem Beispiel funktioniert es. Aber bei meiner Datei kommt die Warnung "Fatal error: Uncaught Error: Call to a member function get_cellmap()"