Avatar billede elav Nybegynder
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?
Avatar billede jakobdo Ekspert
18. juni 2006 - 20:16 #1
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');
Avatar billede elav Nybegynder
19. juni 2006 - 01:35 #2
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!
Avatar billede jakobdo Ekspert
19. juni 2006 - 07:59 #3
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?
Avatar billede drbean Nybegynder
19. juni 2006 - 11:18 #4
Hvad med sådan her?

$pdf->Cell(190,15,WriteHTML($html),0,0,'C');
Avatar billede elav Nybegynder
19. juni 2006 - 16:03 #5
$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
Avatar billede jakobdo Ekspert
19. juni 2006 - 16:10 #6
Hvad med:
$pdf->Cell(190,15,$pdf->WriteHTML($html),0,0,'C');
Avatar billede elav Nybegynder
19. juni 2006 - 16:59 #7
Den opretter en BLANK PDF på 2GB - Altså ingen fejlmeddelelser - Det virker bare ikke...
Avatar billede elav Nybegynder
19. juni 2006 - 17:01 #8
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?
Avatar billede jakobdo Ekspert
19. juni 2006 - 17:18 #9
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()
Avatar billede elav Nybegynder
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...
Avatar billede elav Nybegynder
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?
Avatar billede jakobdo Ekspert
19. juni 2006 - 18:13 #12
FED SKRIFT: http://www.fpdf.org/en/doc/setfont.htm -> style = B
SKRIFTSTØRRELSE: http://www.fpdf.org/en/doc/setfont.htm -> size in POINT, standard = 12
LINJESKIFT: http://www.fpdf.org/en/doc/ln.htm
CENTERING: http://www.fpdf.org/en/doc/cell.htm -> W = 0 (hele siden), align = C
Avatar billede elav Nybegynder
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');
Avatar billede elav Nybegynder
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...
Avatar billede elav Nybegynder
19. juni 2006 - 18:38 #15
og ln() kan tilsyneladende kun foretage linjeskift mellem celler... ikke I dem...
Avatar billede elav Nybegynder
19. juni 2006 - 23:58 #16
Nogen gode forslag?
Avatar billede elav Nybegynder
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?
Avatar billede jakobdo Ekspert
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.
Avatar billede elav Nybegynder
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...)
Avatar billede jakobdo Ekspert
20. juni 2006 - 21:53 #20
Hvor meget data skal udfyldes i skema for der kommer en PDF?
Avatar billede elav Nybegynder
20. juni 2006 - 21:56 #21
En hel linje...
Avatar billede elav Nybegynder
20. juni 2006 - 21:57 #22
...og glem ikke "Antal" - 0 betyder INTET output i PDF'en
Avatar billede elav Nybegynder
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?
Avatar billede jakobdo Ekspert
22. juni 2006 - 17:53 #24
Svar!
Avatar billede jakobdo Ekspert
23. juni 2006 - 14:33 #25
Takker igen for point! :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester