ugrás a tartalomhoz

Fpdf letöltés hiba!

cszlak · 2014. Okt. 18. (Szo), 14.56
HTML:


 <a href="#" onClick="FromPDF('<?php  echo $partner_dat; ?>','<?php echo $array_text; ?>','<?php echo $array_text_kiir;  ?>','Partner')" name="<?php echo $partner_dat['ID']; ?>" title="PDF"><img src="img/pdf_icon.png" width="14" height="14"></a>

<script type="text/javascript">
 function  FromPDF(data,text,text2,site){
	
	 $.post( 'phppdf/pdf_creator.php',{data:data,text:text,text2:text2,site:site}, function(data) {
      		
		 if(data.length==0){	
		//ok
		console.log('ok');	
		}else{
			//nem ok
			console.log(data);			
		} 
			//return data;		 
       });	 
	 }
</script>
pdf_creator.php:


require('fpdf.php');
 class PDF extends FPDF
{	
// Page header
function Header(){
    // Logo
    //$this->Image('logo.png',10,6,30);
    // Arial bold 15
    $this->SetFont('Arial','B',16);     
    // Title
    $this->Cell(500,20,'Site',0,0,'C');	
    // Line break
    $this->Ln(40);
}
// Page footer
function Footer(){
    // Position at 1.5 cm from bottom
    $this->SetY(-15);
    // Arial italic 8
    $this->SetFont('Arial','I',12);
    // Page number
    $this->Cell(0,10,' Page '.$this->PageNo(),0,0,'C');
}	
}
$pdf = new PDF('P','pt','A4');
$pdf->AddPage();
$pdf->Cell(150,20,'Data',1,0,'L');
$pdf->Output('Site2.pdf','I');

Consloe.log kimenetnél ezt a hibát írja ki:
Some data has already been output, can't send PDF file


Vagy:
%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Contents 4 0 R>>
endobj .........


Ha itt:
$pdf->Output('Site2.pdf','I');

átírom
$pdf->Output('Site2.pdf','F');

Akkor simán lementi a pdf-et a tárhelyre.
 
1

A válasz benne van a kérdésben

Endyl · 2014. Okt. 18. (Szo), 15.31
Ahogy a hibaüzeent is írja, már írsz a kimenetre az Output() hívása előtt. Lehet ez egy kósza whitespace egy php nyitótag előtt, UTF BOM, vagy szándékos kiírás. Vedd ki ezeket a kódból, és jónak kell lennie.

Ha kerestél volna, megspórolhattad volna a válaszra várakozás idejét :)
2

Ezen már rég túl vagyok.

cszlak · 2014. Okt. 18. (Szo), 15.40
Igen kerestem, és olvastam őket, csakhogy nincs, sem whitespace, sem kiirás, semmi.
3

Ezesetben: a példakód nálam

Endyl · 2014. Okt. 18. (Szo), 16.41
Ezesetben: a példakód nálam tökéletesen működik, szóval valami mégis a te tényleges kódodban bújkál. Vagy mutasd a tényleges fájlt (az esetleges érzékeny részeket cenzúrázva), vagy mégegyszer nézd át a fájljaid kósza BOM, whitespace, echo, print, vagy bármilyen más kimenet után kutatva. Esetleg próbálhatsz trükközni output bufferinggel.

Egyébként ha a leírtakat valóban megtetted, akkor ha leírtad volna a kérdésben, akkor ezt a kört megspórolhattuk volna. Egy jó kérdéssel mennyi időt lehet nyerni :)

[szerk]
1. Próbálgattam kicsit. BOM, újsor karakterek, normál tab, szóköz úgy látszik nem zavarja az Output() hívás előtt, viszont egyéb egzotikusabb whitespace, vagy nem whitespace karakterek igen.

Amit még megpróbálhatsz, hogy console.log(data) helyett próbálsz egy console.log(encodeURI(data))-t például, hogy lásd, mi lehet a hibaüzenet előtti kimenet (ha az whitespace, és azért nem látszik).
[/szerk]
4

Az egész kódot??

cszlak · 2014. Okt. 18. (Szo), 18.19
Hát felrakhatom ide az egészet, de annak nem lenne se vége se hossza.
Máskor mikkor felraktam, meg azért szidtak le, mert, hogy senki nem fogja átnézni az egészet.

Van egy fő fálj, az betölti egy divbe Pl a Partner oldalt, az meg a benne lévő divbe betölti a partner_table.php -t. Abba van a tábla sorok végén a PDF ikon/link. amit leírtam.

Mindent Jquery kezel, és oldal újratöltés nélkül jönnek be a különböző oldalak, és a feladatok is úgy hajtódnak végre, hogy csak a megfelelő div tölti magát újra AJAX-al.

A function a fő fájl elején van.
Az a fájl így kezdődik:

<?php session_start();?><!DOCTYPE html>    
<html>
<head>

<script type="text/javascript">
 <!--------------------------FPPDF------------------------------------------------- -->
 function  FromPDF(data,text,text2,site){
	
	 $.post( 'phppdf/pdf_creator.php',{data:data,text:text,text2:text2,site:site}, function(data) {
		 
      		console.log(data);
			
		 if(data.length==0){	
		//ok
		console.log('ok');	
		}else{
			//nem ok
			//console.log(data);
			console.log(encodeURI(data))			
		} 
			
       });	 
	 }
</script>
console.log(encodeURI(data)) eredménye:
%25PDF-1.3%0A3%200%20obj%0A%3C%3C/Type%20/Page%0A/Parent%201%200%20R%0A/Resources%202%200%20R%0A/Contents%204%200%20R%3E%3E%0Aendobj%0A4%200%20obj%0A%3C%3C/Filter%20/FlateDecode%20/Length%20131%3E%3E%0Astream%0Ax%EF%BF%BDU%CD%B1%0A%021%10%04%EF%BF%BD%EF%BF%BD%EF%BF%BDbJ-%5C%EF%BF%BD%EF%BF%BDd7iE-%EF%BF%BD%EF%BF%BD%EF%BF%BD%0F%04%3C%EF%BF%BD+%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%04N%EF%BF%BD%1AX%EF%BF%BD%EF%BF%BD%08.%EF%BF%BD%EF%BF%BDhx%0F%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BDJ%CE%A1%EF%BF%BDq*%EF%BF%BD$%EF%BF%BDI%13,'%EF%BF%BD%EF%BF%BDr%EF%BF%BDf%7C.%EF%BF%BD%16en%05I%EF%BF%BD#%EF%BF%BD%3C%EF%BF%BD%00%EF%BF%BD%EF%BF%BD%D1%9D%EF%BF%BDxM%18%EF%BF%BD%7D%EF%BF%BD%EF%BF%BD8%EF%BF%BD%EF%BF%BD%EF%BF%BD%1F%EF%BF%BDRW%EF%BF%BD7%05,%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%15J%EF%BF%BDu%EF%BF%BDk%7DL%EF%BF%BD%15%7D%00%EF%BF%BD%02'%EF%BF%BD%0Aendstream%0Aendobj%0A1%200%20obj%0A%3C%3C/Type%20/Pages%0A/Kids%20%5B3%200%20R%20%5D%0A/Count%201%0A/MediaBox%20%5B0%200%20595.28%20841.89%5D%0A%3E%3E%0Aendobj%0A5%200%20obj%0A%3C%3C/Type%20/Font%0A/BaseFont%20/Helvetica-Bold%0A/Subtype%20/Type1%0A/Encoding%20/WinAnsiEncoding%0A%3E%3E%0Aendobj%0A6%200%20obj%0A%3C%3C/Type%20/Font%0A/BaseFont%20/Helvetica-Oblique%0A/Subtype%20/Type1%0A/Encoding%20/WinAnsiEncoding%0A%3E%3E%0Aendobj%0A2%200%20obj%0A%3C%3C%0A/ProcSet%20%5B/PDF%20/Text%20/ImageB%20/ImageC%20/ImageI%5D%0A/Font%20%3C%3C%0A/F1%205%200%20R%0A/F2%206%200%20R%0A%3E%3E%0A/XObject%20%3C%3C%0A%3E%3E%0A%3E%3E%0Aendobj%0A7%200%20obj%0A%3C%3C%0A/Producer%20(FPDF%201.7)%0A/CreationDate%20(D:20141018171810)%0A%3E%3E%0Aendobj%0A8%200%20obj%0A%3C%3C%0A/Type%20/Catalog%0A/Pages%201%200%20R%0A%3E%3E%0Aendobj%0Axref%0A0%209%0A0000000000%2065535%20f%20%0A0000000288%2000000%20n%20%0A0000000580%2000000%20n%20%0A0000000009%2000000%20n%20%0A0000000087%2000000%20n%20%0A0000000375%2000000%20n%20%0A0000000476%2000000%20n%20%0A0000000694%2000000%20n%20%0A0000000769%2000000%20n%20%0Atrailer%0A%3C%3C%0A/Size%209%0A/Root%208%200%20R%0A/Info%207%200%20R%0A%3E%3E%0Astartxref%0A818%0A%25%25EOF%0A



Egyébként mit értesz kósza Echo és Print alatt, mikkor az egész fájl abból áll?
PL:

<a href="#" onClick="FromPDF('<?php  echo $partner_dat; ?>','<?php echo $array_text; ?>','<?php echo $array_text_kiir;  ?>','Partner')" name="<?php echo $partner_dat['ID']; ?>" title="PDF"><img src="img/pdf_icon.png" width="14" height="14"></a>  
5

Fájlok

Endyl · 2014. Okt. 18. (Szo), 19.41
Hosszú fájlt nem is konkrétan ide kell beilleszteni, hanem felrakni mondjuk pastebinre. Első körben persze csak a lényegi részt illik/célszerű berakni (ez jó is volt a kérdésben), csak mivel ez a kiragadott rész nem vezetett eredményhez, ezért lehet a tényleges fájlt megosztani.

Én amúgy a phppdf/pdf_creator.php cenzúrázott pastebinre rakására gondoltam. De mielőtt ezt megteszed, készíts róla egy biztonsági másolatot (ha netán még nincs és nincs verziókezelve a projekt), és cseréld le a tartalmát arra a kódra, amit ide példának beraktál. Úgy sem működik?

Az encodeURI()-s változatnál az az érdekes, amikor a hibaüzenetet írja, nem amikor a tényleges pdf elkészül.

Azt mondjuk nem értem, hogy ha le akarod töltetni a pdf fájlt, akkor miért ajaxozol egy sima hidden mezős form helyett amiből csak egy submit látszana, és új ablakban nyílna meg.
6

ÓÓÓ hogy az a

cszlak · 2014. Okt. 19. (V), 14.25
Hát persze , hogy a legegyszerűbb megoldás nem jut az eszembe.
Köszönöm így már működik szépen.

Tied a pont.