2013-08-11 3 views
5

Ich verwende FPDF-Klasse, um ein PDF auf meiner Website zu generieren. Alles funktionierte gut, bis letzten Wochen, als ich immer Fehler gestartet:FPDF-Fehler: Einige Daten wurden bereits ausgegeben, kann keine PDF-Datei auf 000webhost senden

FPDF error: Some data has already been output, can't send PDF file 

In den letzten paar Wochen haben nichts in meinem Code ändern und ich habe auch für jeden Ausgang execpt die fpdf (einschließlich unecessary Raum vor PHP geprüft, deaktivierte BOM-Signatur usw.)

Ich habe meine Website auf 000webhost.com, also habe ich auch den analytischen Code am Ende der Seite deaktiviert, aber das PDF funktioniert immer noch nicht. Die einzige Spur, die ich noch habe, ist mysteriöses "" in einem Quellcode (ich kann es sehen, wenn ich den Quellcode im Chrome-Browser überprüfe).

Ich kann auch dieses einfache Beispiel an der Arbeit:

<?php 
require('fpdf.php'); 
$pdf = new FPDF(); 
$pdf->AddPage() 
$pdf->SetFont('Arial','B',16); 
$pdf->Cell(40,10,'Hello World!'); 
$pdf->Output(); 
?> 

Gibt es eine Möglichkeit andere Ausgabe auf der Webseite von PHP zu deaktivieren? oder benutzt jemand fpdf auf 000webhost?

+0

Code für fpdf.php? – Dave

+0

fpdf.php ist eine Standard-Klassendatei von www.fpdf.org, nicht mit ihr verwechselt – user1857756

+0

In diesem Fall bedeutet "" ", dass Ihr Host etwas doof macht. Ich würde zu einem besseren Host wechseln. – Dave

Antwort

11

Ich denke, dass session.auto_start auf 1 gesetzt ist. Dies wird eine Sitzung starten und senden Sie einen PHPSESSID Cookie an den Browser.

Sie können versuchen, zu deaktivieren, den folgenden Code:

<?php 
ini_set("session.auto_start", 0); 
require('fpdf.php'); 
$pdf = new FPDF(); 
$pdf->AddPage() 
$pdf->SetFont('Arial','B',16); 
$pdf->Cell(40,10,'Hello World!'); 
$pdf->Output(); 
?> 

Bei Einstellung session.auto_start-0 nicht, dann ist dies nicht funktioniert versuchen:

<?php 
ob_start(); 
require('fpdf.php'); 
$pdf = new FPDF(); 
$pdf->AddPage() 
$pdf->SetFont('Arial','B',16); 
$pdf->Cell(40,10,'Hello World!'); 
$pdf->Output(); 
ob_end_flush(); 
?> 
+0

sicher es im Skript zu setzen wird zu spät sein? Wenn dies das Problem ist, muss dies in php.ini – Dave

+0

auch getan werden (während dies das Problem sein könnte) erklärt es nicht eine Ausgabe von "" ". – Dave

+0

wahr, aber das Handbuch behauptet, es ist ein PHP_INI_ALL (Eintrag kann überall eingestellt werden), so sollte es funktionieren, wenn es nicht funktioniert, ist das Handbuch über diese Einstellung falsch –

19

nur einfügen ob_end_clean(); vor der Ausgabe.

<?php 
require('fpdf.php'); 
$pdf = new FPDF(); 
$pdf->AddPage() 
$pdf->SetFont('Arial','B',16); 
$pdf->Cell(40,10,'Hello World!'); 
ob_end_clean(); 
$pdf->Output(); 
?> 
+0

Ich habe XAMPPs 'CD Collection'-Beispiel-App getestet. Das hat funktioniert, danke. – silver

+0

Kann ich die Zeichenfolge "Hello World" durch eine Variable ersetzen. Ich habe eine Menge String hinzugefügt werden. –

+0

'ob_end_flush(); ob_end_clean(); 'hat für mich gearbeitet, ja, beide! –

1

In meinem Fall habe ich gesetzt hatte:

ini_set('display_errors', 'on'); 
error_reporting(E_ALL | E_STRICT); 

Wenn ich den Antrag gestellt hat, den Bericht zu generieren, wurden einige Warnungen im Browser angezeigt (wie die Verwendung von veralteten Funktionen).
Durch Drehen der off Option display_errors wurde der Bericht erfolgreich erstellt.

1

Verwenden Zeile wie folgt:

require('fpdf.php'); ob_end_clean(); header("Content-Encoding: None", true); 

Problem wird gelöst;)

0

Dieser Fehler tritt auf, wenn Sie versuchen, die PDF zu generieren, nachdem Sie bereits etwas anderes auf diesem Browser Seite verdient gemacht haben, zum Beispiel , wenn Sie so etwas getan haben:

echo $ value;

Der FPDF-Code möchte ein "leeres Canvas", um seine Ausgabe zu rendern (oder, mutmaßt, einen leeren iframe, obwohl ich das noch nicht getestet habe).

0
SELECT motivo, 
     unidad_trans, 
     km_inicial, 
     km_final, 
     rut_chofer, 
     To_char(hora_inicial, 'DD/MM/YYYY HH:mm'), 
     To_char(hora_final, 'DD/MM/YYYY HH:mm'), 
     total_recorrido, 
     destino, 
     cod_combustible, 
     cantidad_litros, 
     cod_vehiculo, 
     d.cod_estableci 
FROM mov_bitacora b, 
     mov_chofer c, 
     nuc_dependencias d, 
     mov_combustible co, 
     mov_vehiculo v 
WHERE b.unidad_tran = d.cod_estableci 
     AND b.rut_chofer = c.rut_chofer 
     AND b.cod_combustible = co.cod_combustible 
     AND b.cod_vehiculo = v.cod_vehiculo 
     AND id_bitacora = 6fpdf 

Error: Some data has already been output, can't send PDF file.

0

ich geputtet relativiert sich dieses Problem in beggining (ob_clean) beheben keine PDF-Struktur ändern:

require('fpdf/fpdf.php'); 
ob_clean(); 
Verwandte Themen