FPDF error Some data has already been output can't send PDF
Scris: Mar Oct 14, 2014
Salut, am şi eu o problemă cu un exemplu din lecţia Creare PDF cu PHP (2) la Demo cu numărul 8. Primesc eroarea din titlu. Acesta este codul:
De asemenea şi nişte notice-uri cum că tag-urile <b><u><i> nu sunt definite. Ceva idei de rezolvare a problemei? Am tot căutat pe net acea eroare dar nu am găsit nimic concret aplicabil în cazul ăsta
Cod: Selectaţi tot
<?php
include('fpdf.php'); // Include clasa FPDF
// Creaza clasa extinsa a clasei de baza FPDF
class PDF extends FPDF {
// Definirea variabilei pt. lucru cu adresa URL
var $HREF;
// Functia care scrie textul si recunoaste tagu-urile HTML
function WriteHTML($html) {
// Inlocuieste cu spatiu linia noua si parseaza tag-ul HTML
$html = str_replace("\n",' ',$html);
$a = preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
foreach($a as $i=>$e) {
if($i%2==0) {
// Daca in tag e recunoscut href
if($this->HREF) $this->PutLink($this->HREF,$e);
else $this->Write(5,$e);
}
else {
// Daca este eticheta de inchidere a tag-ului
if($e[0]=='/') $this->CloseTag(strtoupper(substr($e,1)));
else {
// Extrage atributele
$a2 = explode(' ',$e);
$tag = strtoupper(array_shift($a2));
$attr=array();
foreach($a2 as $v) {
if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
$attr[strtoupper($a3[1])] = $a3[2];
}
$this->OpenTag($tag,$attr);
}
}
}
}
// Functia pt. determinarea actiunii in functie de tag-ul HTML recunoscut
function OpenTag($tag,$attr) {
// Daca tag-ul este B, I sau U
if($tag=='B' || $tag=='I' || $tag=='U') $this->SetStyle($tag,true);
// Daca tag-ul e A
if($tag=='A') $this->HREF=$attr['HREF'];
// Daca tag-ul e BR
if($tag=='BR') $this->Ln(5);
}
// Functia pt. actiunea la inchiderea tag-ului
function CloseTag($tag) {
// Daca tag-ul inchis este B, I sau U
if($tag=='B' || $tag=='I' || $tag=='U') $this->SetStyle($tag,false);
// Daca tag-ul inchis e A
if($tag=='A') $this->HREF='';
}
// Functia pt. setarea stilului textului in functie de tipul tag-ului B, I, U
function SetStyle($tag,$enable) {
// Seteaza stilul fontului in functie de tag-ul B, I sau U
$this->$tag+=($enable ? 1 : -1);
$style = '';
foreach(array('B','I','U') as $s) {
if($this->$s>0) $style.=$s;
}
$this->SetFont('',$style);
}
// Functia pt. adaugarea link-ului
function PutLink($URL,$txt) {
// Seteaza fontul specific link si apeleaza metoda Write() cu atribut pt. URL
$this->SetTextColor(0,0,255);
$this->SetStyle('U',true);
$this->Write(5,$txt,$URL);
$this->SetStyle('U',false);
$this->SetTextColor(0);
}
}
// Variabila ce contine textul cu elemente HTML
$html = 'Text care contine tag-uri HTML a caror stil va fi recunoscut si modificat pentru PDF, pentru a fi similar cu stilul afisat in pagina HTML.<br />
Linie noua adaugata cu BR, stilurile recunoscute: <b>bold</b>, <i>italic</i>, <u>underlined</u>, sau <b><i><u>toate la un loc</u></i></b>!<br><br>
Link adaugat prin recunoasterea tag-ului "A" specific pt. link-uri, <a href="https://marplo.net/php-mysql/">Curs PHP - MySQL</a>';
$pdf = new PDF();
$pdf->AddPage();
$pdf->SetFont('Arial','',14);
// Apeleaza metoda WriteHTML() creata in clasa extinsa
// transferand ca argument variabila $html
$pdf->WriteHTML($html);
$pdf->Output();
?>