2017-03-23 3 views
0

Ich habe ein seltsames Problem. Ich entwickle eine Anwendung, die PDF-Dateien erstellen kann. Die Generierung von PDFs funktioniert. Aber nur auf einer Seite. Wenn ich zuerst eine PDF-Datei für die Produktion erzeuge, funktioniert diese normalerweise auf der Produktions-App, aber nicht auf der Test-App. Das Gegenteil ist auch wahr. Wenn ich zuerst das pdf auf dem Test erstelle, funktioniert es normalerweise auf Test aber nicht auf Produktion. Ich bin zu 90% sicher, dass es sich um ein Browserproblem handelt. Wenn ich den Test und die Produktion auf verschiedenen Browsern ausführe, funktioniert es. Der Test und die Tests befinden sich auf derselben Website, aber in verschiedenen Ordnern und haben unterschiedliche Datenbanken und Datenbankbenutzer.mpdf erzeugt kein pdf auf Produktion und Testserver

Code Produktionsfunktionen für PDF-Generierung

$pdf_name = $name.'.pdf'; 
ob_clean(); 
header('Content-type: application/pdf'); 
header('Content-Disposition: inline; filename="' . $pdf_name . '"'); 
header('Content-Transfer-Encoding: binary'); 
header('Accept-Ranges: bytes'); 

require_once 'pdf_templet.php'; 

$mpdf=new mPDF('utf-8','A4','','' , 0 , 0 , 0 , 0 , 0 , 0); 
$mpdf->setFooter('{PAGENO}'); 
$mpdf->SetDisplayMode('fullpage'); 
$mpdf->list_indent_first_level = 0; 
$mpdf->WriteHTML($html_pdf); //is generated in pdf_templet.php 
$mpdf->Output($pdf_name,'I'); 

Testfunktionen Code pdf zur Erzeugung

$t = time(); 
$pdf_name = $name.'-'.$t.'.pdf'; 
ob_clean(); 
header('Content-type: application/pdf'); 
header('Content-Disposition: inline; filename="' . $pdf_name . '"'); 
header('Content-Transfer-Encoding: binary'); 
header('Accept-Ranges: bytes'); 

require_once 'pdf_templet.php'; 

$mpdf=new mPDF('utf-8','A4','','' , 0 , 0 , 0 , 0 , 0 , 0); 
$mpdf->setFooter('{PAGENO}'); 
$mpdf->SetDisplayMode('fullpage'); 
$mpdf->list_indent_first_level = 0; 
$mpdf->WriteHTML($html_pdf);   
$mpdf->Output($pdf_name,'I'); 

In der Testfunktion habe ich einen Zeitstempel auf den Namen des fileand die Funktion einen anderen Namen , aber es funktioniert immer noch nicht. Kann jemand wissen, wie es funktioniert?

+0

Es ist sehr unwahrscheinlich, dass die Browser dafür verantwortlich sind. Wenn irgendwo in Ihrem Code ein Fehler auftritt, wird Ihr PDF nicht normal angezeigt. Um dies zu debuggen, öffnen Sie das PDF nicht, sondern speichern Sie es und zeigen Sie die gespeicherte Datei dann mit einem Texteditor an. Wenn die Datei leer ist, aktivieren Sie die Fehlerberichterstattung in PHP. Sie können dem normalen Debugging-Prozess folgen. –

+0

@KIKOSoftware Ok, wenn ich es speichern und versuchen, es zu öffnen, bekomme ich, dass die Datei beschädigt ist. aber es in Notepad öffnen, es hat den HTML-Code drin. –

+0

In der Browser-Konsole bekomme ich den Fehler Fehler: Ungültige XRef-Stream-Header pdf.worker.js: 3841 –

Antwort

0

Das Problem war, dass ich die mpdf falsch geladen wurde. Ich verwendete, als es auf Beispielen auf ihrer Seite war, bevor es geschlossen wurde. Die Dokumentation bei Github erklärt es gut.

Ich lud es

require_once(mpdf/mpdf.php); 

richtige Weg ist

require_once(mpdf/vendor/autoload.php); 

Jetzt funktioniert es! Danke @KIKOSoftware, dass ich meinen Code Schritt für Schritt debuggen ließ.

+0

Übrigens, Sie müssen 'header()' nicht selbst aufrufen, mPDF erledigt das für Sie. – Finwe

Verwandte Themen