18. juni 2006 - 17:59
Der er
23 kommentarer og 2 løsninger
Generering af PDF ved brug af FPDF - Html i celler
Hejsa, Jeg bruger FPDF til brug for at oprette dynamiske PDF-dokumenter! Hvordan indsætter jeg HTML i celler? Jeg har dette: $html='<center><b>' . $object_name .'</b><br>' . $object_desc . '<br>' . $object_numb . '<br><b>' . $object_pric . '</b></center>'; Jeg kan printe det, ved at skrive "WriteHTML($html);" - men hvordan kombinerer jeg det med en celle? Selve cellen: $pdf->Cell(190,15,'INDSÆT HTML HER!!!',0,0,'C'); Hvordan ordner jeg dette?
Annonceindlæg fra Partnertekst
Kan du ikke: $html='<center><b>' . $object_name .'</b><br>' . $object_desc . '<br>' . $object_numb . '<br><b>' . $object_pric . '</b></center>'; $pdf->Cell(190,15,$html,0,0,'C');
Nej, desværre... Det skal kaldes med WriteHTML() Ellers kommer der bare til at stå f.eks. <br> istedet for at det bliver til et linjeskift! Det er jo ikke tale om HTML - Men en PDF-fil!
Når nu et PDF dokument ikke er html, så er det vel muligt at opbygge dit layout på en anden måde, evt. via de forskellige kald i fpdf, vil det ikke være det?
Hvad med sådan her? $pdf->Cell(190,15,WriteHTML($html),0,0,'C');
$pdf->Cell(190,15,WriteHTML($html),0,0,'C'); forårsager: Fatal error: Call to undefined function: writehtml() in /usr/home/dan11625/public_html/pdf/label.php on line 220
Hvad med: $pdf->Cell(190,15,$pdf->WriteHTML($html),0,0,'C');
Den opretter en BLANK PDF på 2GB - Altså ingen fejlmeddelelser - Det virker bare ikke...
Funktionen ser således ud: (Taget fra en tutorial!) function WriteHTML($html) { //HTML parser $html=str_replace("\n",' ',$html); $a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); foreach($a as $i=>$e) { if($i%2==0) { //Text if($this->HREF) $this->PutLink($this->HREF,$e); else $this->Write(5,$e); } else { //Tag if($e{0}=='/') $this->CloseTag(strtoupper(substr($e,1))); else { //Extract attributes $a2=explode(' ',$e); $tag=strtoupper(array_shift($a2)); $attr=array(); foreach($a2 as $v) if(ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3)) $attr[strtoupper($a3[1])]=$a3[2]; $this->OpenTag($tag,$attr); } } } } Kan man evt. udlede hvordan man får lavet et linjeskift uden at kalde denne funktion?
Har du overvejet mit indlæg fra: 19/06-2006 07:59:46 ? Og til dit spørgsmål: 19/06-2006 17:01:21, det meste af koden laves i funktionen: OpenTag()
19. juni 2006 - 17:25
#10
Prøv evt. selv:
http://kfums-soldatermission.dk/pdf/exp.php Det virker umiddelbart - men WriteHTML bryder åbenbart cellerne...
Cellerne skulle fylde 1/5 af bredden på siden, og 1/13 af højden...
19. juni 2006 - 17:51
#11
> Har du overvejet mit indlæg fra: 19/06-2006 07:59:46 ? Det eneste jeg har brug for, er reelt set kun at kunne formatere med: FED SKRIFT SKRIFTSTØRRELSE LINJESKIFT CENTRERING Kan det lade sig gøre?
19. juni 2006 - 18:13
#12
19. juni 2006 - 18:26
#13
Det ser ud til at det er MultiCell, der er vejen frem:
http://www.fpdf.org/en/doc/multicell.htm ---
Men hvad gør jeg galt? - Istedet for at placere cellerne ved siden af hinanden, så sætter den dem under hinanden...
$pdf->Multicell($label_width,$label_height,$data,$border,0,'C');
19. juni 2006 - 18:31
#14
...og alligevel ikke :( Den laver blot 2 celler under hinanden hvis man bruger "\n" - Istedet skulle den jo lave et linjeskift inde i cellen...
19. juni 2006 - 18:38
#15
og ln() kan tilsyneladende kun foretage linjeskift mellem celler... ikke I dem...
19. juni 2006 - 23:58
#16
Nogen gode forslag?
20. juni 2006 - 12:44
#17
En anden mulighed var måske at oprette indholdet som et billede, og så indsætte dette... Men kan man indsætte et billede i en celle?
20. juni 2006 - 17:39
#18
Kan du ikke evt. prøve at lave en side i HTML, og så smid den online, så vil jeg gerne prøve om jeg kan lave nogenlunde samme output i fpdf.
20. juni 2006 - 21:41
#19
Jeg har fikset en MultiCell-løsning...
http://kfums-soldatermission.dk/pdf/exp.php Jeg mangler nu kun at få "Overskrift" og "Pris" gjort FED (og evt. en individuel skriftstørrelse - Dog ikke nødvendigt...)
20. juni 2006 - 21:53
#20
Hvor meget data skal udfyldes i skema for der kommer en PDF?
20. juni 2006 - 21:56
#21
En hel linje...
20. juni 2006 - 21:57
#22
...og glem ikke "Antal" - 0 betyder INTET output i PDF'en
22. juni 2006 - 14:05
#23
Well, jeg er gået udenom MultiCell, og bruger SetY() og SetX() til at lave celler under hinanden... Mange tak for hjælpen så langt... Jeg har endelig et produkt jeg kan bruge! Point?
22. juni 2006 - 17:53
#24
Svar!
23. juni 2006 - 14:33
#25
Takker igen for point! :o)
Vi tilbyder markedets bedste kurser inden for webudvikling