<< Tilbage
PDF filer med php
I denne tutorial kan du lære hvordan man laver dynamiske PDF filer fra php. Det er som standard ikke muligt at generere PDF, så det kræver et eller andet form for plugin. Jeg forklarer hvordan det kan gøres med fpdf.org som er et gratis projekt der frit kan benyttes. Det er nemt at installere, da det faktisk kun kræver at man inkludere en enkel php fil, og altså ikke noget med at skulle konfigurere webserveren.
Download/installering
Det første du skal gøre er at downloade fpdf v1.53. Gem zip filen på din harddisk og pak den ud. Upload filen fpdf.php og mappen font til dit websted hvor du har tænkt dig at lave pdf filer (kun fpdf.php og font mappen er nødvendige, alt andet er overflødigt).
Første eksempel
Vi springer direkte ud i det med et eksempel: (forklaring følger)
Kode: 1. 2. 3. 4. 5. 6. 7. 8. 9.
|
<?php include("fpdf.php"); //Inkluder pdf værktøjet
$pdf = new FPDF(); //Konstruktør, opret et nyt PDF dokument $pdf->AddPage(); //Tilføj en side til dokumentet $pdf->SetFont("Arial", "B", 18); //Bestem fonten: Arial, fed (bold) og en størrelse på 18 $pdf->Write(0, "Hej verden!"); //Indsæt en streng (med højde på 0). $pdf->Output(); //Generer pdf dokumentet ?>
|
Resultat:
 |
(klik på billedet for at åbne php filen/eksemplet) |
2: inkludere vi selve pdf værktøjet (fpdf) og det skal huskes hver gang.
4: Her oprettes et nyt pdf dokument. Vil man anvende andr papir formater (standard er a4), vende dokumentet eller lignende, så er det også her det gøres.
5: Vi fortæller pdf dokumentet at der skal tilføjes en ny side.
6: Inden man skriver tekst ind i dokumentet, skal skrifttypen defineres. I det første argument sættes skrifttypen til Arial. I andet argument bruges b (bold), så skriften bliver fed (I for kursiv, U for understreget og blankt for standard). Til sidst bestemmes skriftstørrelsen.
7: Write er en funktion der indsætter et simpelt tekstfelt.
8: PDF filen genereres. Bruges output() uden parametre, så ryger pdf filen direkte ud i browseren og ikke ned i en fil (prøv at klikke på billede i eksemplet herover og så hvad der sker, billedet linker til en php fil).
Positionering
I det første eksempel indsatte vi en tekstboks, men bestemte egentlig ikke hvor i pdf dokumentet teksten skulle placeres. Teksten blev placeret oppe i venstre hjørne, da det er standardpositionen. Positionen er en man normalt bestemmer inden hvert element (tekst, billeder..) indsættes, og med XY koordinater (øverste venstre hjørne er 0,0). Følgende tre funktioner kan bruges til ændre den nuværende position:
SetXY(x, y);
SetX(x);
SetY(y);
Eksempel:
Kode: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
|
<?php include("fpdf.php");
$pdf = new FPDF(); $pdf->AddPage(); $pdf->SetFont("Arial", "", "14");
$pdf->SetXY(40, 40); //Sæt position til 40mm fra venstre og 40mm fra toppen $pdf->Write(0, "Test 123"); //Indsæt streng
$pdf->SetXY(60, 60); //Sæt position til 60,60 (mm fra venstre og top) $pdf->Write(0, "Test 456"); //Indsæt streng
$pdf->output(); ?>
|
Resultat:
 |
(klik på billedet for at åbne php filen/eksemplet) |
Bemærk hvordan den nuværende position ændres inden teksten indsættes. Måleenheden er mm, og er fra venstre samt toppen. (Få et indtryk af koordinaterne i et A4)
Indsætte billeder
Understøttede formater er jpeg og png. Eksempel:
Kode: 1. 2. 3. 4. 5. 6. 7. 8. 9.
|
<?php include("fpdf.php");
$pdf = new FPDF(); $pdf->AddPage(); $pdf->Image("billede.jpg", 20, 20); //Indsæt billede.jpg i koordinaterne 20,20 $pdf->Image("billede.jpg", 20, 135, 25, 25); //Højde og bredde på 25 $pdf->output(); ?>
|
Resultat:
 |
(klik på billedet for at åbne php filen/eksemplet) |
I linje 6 indsættes et billede med det første parameter som billedets sti/filnavn, mens 2. og 3. parameter er koordinatorne.
I linje 7 har vi tilføjet 2 yderligere paramtere, nemlig bredde og højde på billedet. Hvis man ikke angiver bredde og højre, så finder den selv ud af det (som i linje 6).
Tekst med linjeskift
I det første eksempel brugte vi Write() til at skrive tekst ind i dokument, men funktionen understøtter imidlertid ikke linjeskift. I stedet skal vi benytte MultiCell() til formålet:
Kode: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
|
<?php include("fpdf.php");
$pdf = new FPDF(); $pdf->AddPage(); $pdf->SetFont("Arial", "", "14");
$pdf->SetXY(40, 40); $pdf->MultiCell(0, 8, "Dette er \nen lille \ntest der skal\nDemonstrere \nlinjeskift");
$pdf->SetXY(140, 40); $pdf->MultiCell(40, 6, "Dette er umiddelbart også en test der demonstrererer linjeskift", 1, "C");
$pdf->output(); ?>
|
Resultat:
 |
(klik på billedet for at åbne php filen/eksemplet) |
MultiCell laver selv et linjeskift når teksten når til enden af boksen, eller når man beder den om det med \n. I linje 9 indsættes en simpel multicell, hvor det første parameter angiver bredden af boksen (sættes den til 0 som i eksemplet, så går den helt ud til højre på dokumentet). Parameter nr. 2 angiver hvor store linjeskiftene skal være (linjeafstanden).
I linje 12 indholder parameter fire tallet 1, og det fortæller om der skal være kant på boksen eller ej (0=nej, 1=ja). Det femte og sidste paramter fortæller at teksten i boksen skal centreres (C=center, L=venstre, R=højre eller standard som er lige margin).
Gemme pdf dokument i fil
Indtil videre har vi smidt pdf filen direkte ud i browseren, uden at gemme den i en fil på serveren. Dette gøres ved at tilføje et par parametre:
Kode: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
|
<?php include("fpdf.php");
$pdf = new FPDF(); $pdf->AddPage(); $pdf->SetFont("Arial", "B", 18); $pdf->Write(0, "Hej verden!");
$pdf->Output("testfil.pdf", "F"); ?>
|
testfil.pdf. Læg mærke til linje 9, hvor dokumentet bliver gemt i "testfil.pdf". Andet parameter som er sat til F i eksemplet, betyder simpelthen bare at dokumentet bliver gemt i en fil (der er nogle andre muligheder også).
Mere information
Denne tutorial har været en kort introduktion i at lave pdf filer fra PHP med fpdf. Der er selvfølgelig mange flere muligheder, så prøv selv at kigge lidt i manualen på www.fpdf.org.
Hvis der er nogle specifikke ting du savner belyst i denne tutorial, så skriv til webmaster@phpartikler.dk
|