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

alessia77

Nuovo Utente
7 Set 2017
3
0
1
Come faccio a capire in che punto si blocca il file, dove si genera l'errore? Non sono molto esperta di questo codice

Questo è il file che viene eseguito

<?php
require('fpdf153/fpdf.php');
require('fpdf153/classe_write_tag_voucher.php');
require_once ("setting.inc");
require ("db_config.inc");
require("funzioni.php");
require("funzioni_2.php");

$query="SELECT * FROM $table_voucher WHERE id='$id_modif'";

$result=mysql_query($query);
$struttura_selected=mysql_result($result,0,"id_struttura");
$tipo=mysql_result($result,0,"tipo");

if ($tipo =="s") {
$from_sel_strutt="y";
}
else if ($tipo =="t") {
$from_sel_tour_op="y";
}
$array_spett=get_dati_spett($from_sel_strutt,$from_sel_tour_op,$struttura_selected,$struttura_selected);

$num_persone=get_num_pers($result);

$pagamento=mysql_result($result,0,"pagamento");
if (($pagamento=="0") or ($pagamento==""))
$str_pagam=mysql_result($result,0,"altro_pagam");
else
$str_pagam=get_label($table_vouch_pag,"label","code",$pagamento);

$str_cliente=get_dati_cliente(mysql_result($result,0,"tipo_cliente"),mysql_result($result,0,"cliente"));

$str_ultima=$array_spett['localita']." ".$array_spett['cap']." ".$array_spett['prov'];

$str_struttura=concatena_1($str_struttura,"Spett.le","\n");
$str_struttura=concatena_1($str_struttura,$array_spett['nome'],"\n");
$str_struttura=concatena_1($str_struttura,$array_spett['indirizzo'],"\n");
$str_struttura=concatena_1($str_struttura,$str_ultima,"\n");
$str_struttura=concatena_1($str_struttura,$array_spett['telefono'],"\n");

define('FPDF_FONTPATH','font/');
$def_font_family="helvetica";
$def_font_size='9';
$def_font_size_testo='7';

$pdf=new PDF();
//$pdf->SetMargins(30,15,25);
$pdf->SetFont($def_font_family,'',$def_font_size);

$pdf->Open();
$pdf->AddPage();


$pdf->Voucher($result,$str_struttura,$num_persone,$str_pagam,$str_cliente,"(ORIGINALE)",$def_font_size,'10','10');

$altezza=$pdf->GetY() + 5;
$pdf->SetFont($def_font_family,'',$def_font_size);
$pdf->Voucher($result,$str_struttura,$num_persone,$str_pagam,$str_cliente,"(Copia1)",$def_font_size,'10',$altezza);

$altezza=$pdf->GetY() + 5;
$pdf->SetFont($def_font_family,'',$def_font_size);
$pdf->Voucher($result,$str_struttura,$num_persone,$str_pagam,$str_cliente,"(Copia2)",$def_font_size,'10',$altezza);

//$pdf->SetY(-15);

$pdf->Output();


?>
 

marino51

Utente Attivo
28 Feb 2013
2.609
132
63
Lombardia
$pdf->Open();
mi sembra che "open" non esista tra le funzioni possibili, vedi anche tu nell'elenco
http://www.fpdf.org/it/doc/index.php,
se è una tua funzione, forse dovrebbe andare dopo "AddPage" perché potrebbe scrivere qualcosa prima che la prima pagina sia generata

poi controlla tutti gli script (anche quelli "require") ed elimina i caratteri e/o spazi che precedono
"<?php" e che seguono "?>

fai sapere
 

alessia77

Nuovo Utente
7 Set 2017
3
0
1
sono dei file che non ho generato io, mi è stata data le gestione, ma un altro molto simile, nella stessa cartella , funziona, genera correttamente il pdf

questo è quello che funziona


<?php
require('fpdf153/fpdf.php');
require('fpdf153/classe_write_tag_programma.php');


require_once ("setting.inc");
require ("db_config.inc");


$nome_cl=urldecode($nome_cl);
$nome_cl = trim(str_replace("&nbsp;", " ", $nome_cl));

$query_progr="SELECT id_cliente,destinazione,compreso,non_compreso,supplementi,riduzioni,quota_ind FROM $table_programmi WHERE id='$id_modif'";
$result_progr=mysql_query($query_progr);

$destinazione=mysql_result($result_progr,0,"destinazione");

$array_compreso=explode($separatore_elenco,mysql_result($result_progr,0,"compreso"));
$array_non_compreso=explode($separatore_elenco,mysql_result($result_progr,0,"non_compreso"));
$array_supplementi=explode($separatore_elenco,mysql_result($result_progr,0,"supplementi"));
$array_riduzioni=explode($separatore_elenco,mysql_result($result_progr,0,"riduzioni"));

$query_giorni="SELECT id,giorno_ord, giorno_sett,data,loc_percorso,pernottamento,descrizione FROM $table_giorni_viaggio WHERE id_programma='$id_modif' ORDER BY giorno_ord";
$result_giorni=mysql_query($query_giorni);




define('FPDF_FONTPATH','font/');
$def_font_family="helvetica";
$def_font_size='10';


$pdf=new PDF();
//$pdf->SetMargins(30,15,25);
$pdf->SetFont($def_font_family,'',$def_font_size);

$pdf->Open();
$pdf->AddPage();


//SetStyle($tag,$family,$style,$size,$color,$indent=-1)
$pdf->SetStyle("C",$def_font_family,"I",$def_font_size,"");
$pdf->SetStyle("S",$def_font_family,"U",$def_font_size,"");
$pdf->SetStyle("G",$def_font_family,"B",10,"");

$pdf->SetStyle("A",$def_font_family,"",$def_font_size,"255,165,0");
$pdf->SetStyle("R",$def_font_family,"",$def_font_size,"255,0,0");
$pdf->SetStyle("V",$def_font_family,"",$def_font_size,"0,128,0");
$pdf->SetStyle("B",$def_font_family,"",$def_font_size,"0,0,255");
$pdf->SetStyle("D",$def_font_family,"",$def_font_size,"128,128,128");


$pdf->SetStyle("p",$def_font_family,"",$def_font_size,"0,0,0","0");

$pdf->Intestazione($destinazione,$nome_cl);
$pdf->Dettaglio($result_giorni);

$pdf->Finale($result_progr,$separatore_elenco);
$pdf->Output();
?>


una differenza che ho visto tra i due è nelle prime righe

require("funzioni.php");
require("funzioni_2.php");

se commento una delle due l'errore non viene dato ma restituisce pagina bianca
 

alessia77

Nuovo Utente
7 Set 2017
3
0
1
ho fatto un controllo accurato, sono tantissime righe, un altro file che genera il pdf funziona, è possibile far stampare la riga in cui trova l'errore?
 

marino51

Utente Attivo
28 Feb 2013
2.609
132
63
Lombardia
possibile far stampare la riga in cui trova l'errore?
l'errore viene generato all'interno della classe fpdf non dallo script che la usa,
se non hai ancora risolto, prova una "scorciatoia",
upload_2017-9-13_20-12-36.png


in ogni caso ci sono dei caratteri (vedi echo nell'esempio) che vengono visualizzati prima dell'output del pdf