Tutorials

PDF maken met PHP (basis)

De basis om een PDF te maken met php

Pagina 1

Inleiding

Het Portable Document Format, of kortweg PDF. Ik zocht onlangs een script op pdfjes te maken echter kon ik deze nog niet vinden op phphulp.nl dus bij deze. Op http://www.adobe.com/products/acrobat/ kan je de viewer downloaden.
Pagina 2

Installatie

Zorg dat in je php.ini de extentie "extension=php_pdf.dll" in je php.ini aan zet ( ; weghalen en niet vergeten te herstarten.) Mocht de extentie er niet bij staan kan je de php_pdf.dll in je php map extenties zetten.

Vergeet niet in te stellen dat je schrijf rechten moet hebben om een pdf bestand te kunnen maken. In je php.ini moet je zoeken naar “PDF Support: enabled”
Pagina 3

Bestand maken en basis instellingen

<?php

Nu de installatie is voltooid kunnen we met het echte werk beginnen. Met pdf_open_file kan er een bestand worden gemaakt. Laat je de laatste parameter leeg, dan word er alleen in het geheugen een pdf gemaakt



pdf_open_file($pdf, "test.pdf"); // bestand openen, indien deze niet bestaat maken

// Auteur instellen
pdf_set_info($pdf, "Author", "Robert-Jan");
// Titel instellen
pdf_set_info($pdf, "Title", "Mijn eerste pdf");
// Maker instellen
pdf_set_info($pdf, "Creator", "Robert-Jan");	
// Onderwerp instellen
pdf_set_info($pdf, "Subject", "Mijn eerste pdf");

De grootte van de pdf moet worden ingesteld.. A4 is 595 x 842 en Letter is 612 x 792. We stellen nu a4 formaat in:
pdf_begin_page($pdf, 595, 842);

Als de pdf klaar is kan de pagina worden gesloten en worden weggeschreven:
// einde van de pagina
pdf_end_page($pdf);

// pagina sluiten en opslaan
pdf_close($pdf);



?>
Pagina 4

Tekst en notities

Als eerste gaan we een lettertype instellen en hierna gaat we deze wegschrijven. Let op de winansi parameter, want dit is de instelling voor een windows machine(als ik mij niet vergis....). Let op niet alle lettertypes zijn beschikbaar!


<?php

// Findfont zal het font zoeken en opslaan als font object.
$font = PDF_findfont($pdf, "Helvetica-Bold",  "winansi",0); 
pdf_setfont($pdf, $font, 14);

// Tekst afdrukken
pdf_show_xy($pdf, "Look at the World, We are in Holland!,", 50, 750);
pdf_show_xy($pdf, "Look at www.koopeenpaard", 50, 730);

// notities toevoegen
PDF_add_note($pdf, 245, 500, 550, 770, "Ja ja, met php gemaakt, al zeg ik het zelf ", "Mijn notitie, werkt het ?", "note", 0);
?>

Pagina 5

Afbeeldingen

Nu we weten hoe we tekst en notities kunnen plaatsen, kunnen we de boel een beetje opvrolijken met wat afbeeldingen.

[code]
<?php

// Afbeeldingobject maken
$Afbeelding1 = PDF_open_image_file($pdf "jpeg", "mijnAfbeelding.jpg");

// Afbeelding plaatsen. Met de laatste parameter kan je de kwaliteit bepalen
PDF_place_image($pdf, $Afbeelding1, 50, 650, 0.6);

?>

[code]
Pagina 6

On the fly

Er is de mogelijkheid om de pdf niet te laten wegschrijven naar een bestand, maar alleen te laten zien aan de gebruiker. Eerst zal de pdf moeten worden afgesloten. Hierna kan de pdf uit de buffer worden gemaakt en worden getoond:



<?php

// PDF object uit buffer halen
$mybuf = PDF_get_buffer($pdf);

// Lengte bepalen
$mylen = strlen($mybuf);

// File headers instellen
header(“Content-type: application/pdf”);
header(“Content-Length: $mylen”);
header(“Content-Disposition: inline; filename=mijnpdf.pdf”);

// PDF afdrukken
print $mybuf;

// PDf verwijderen
pdf_delete($pdf);

?>
Pagina 7

Overige

Er zijn nog verschrikkelijk veel functies die gebruikt kunnen worden. Hieronder nog een paar


<?php

// Kleur van de lijn bepalen. De laatste 3 parameter zijn de rood, groen en blue kleur parameters. 1 = 100%
PDF_setcolor($pdf, "stroke", "rgb", 1, 0, 0);

//Als tweede gaan we vertellen waar we willen beginnen van de lijn te tekenen
PDF_moveto($pdf, 20, 735);

//We tekenen een lijn naar het tweede punt
PDF_lineto($pdf, 575, 735);

// Tekenen van de lijn
PDF_stroke($pdf);

Rechthoek en cirkel:
// kleur van opvulling
PDF_setcolor($pdf, "fill", "rgb", 1, 0 1);
// kleur van lijnen
PDF_setcolor($pdf, "stroke", "rgb", 0, 1, 0);
// rechthoek tekenen
PDF_rect($pdf, 50, 500, 200, 300);
// cirkel tekenen
PDF_ circle ($pdf, 50, 500, 200, 300);

Parameters openen pagina:
// Volledige pagina openen
pdf_set_parameter($pdf, "openaction", "fitpage"); // Openingsactie
// Trumbnails openen
pdf_set_parameter($pdf, "openmode", "thumbnails");

?>
Pagina 8

Conclusie en complete code

Er zijn verschrikkelijk veel php functies om een pdf te maken en te vullen. Ik heb slechts een aantal basis functies laten zien. Wil je meer weten kijk dan op: http://nl3.php.net/manual/nl/ref.pdf.php

Code:

<?php

// nieuw pdf object aanmaken
$pdf = pdf_new();

// PDF maken in geheugen maar nog niet wegschrijven, dit kan d.m.v. laatste parameter niet invullen:
PDF_open_file($pdf, "");

pdf_set_info($pdf, "Author", "Robert-Jan"); // Auteur instellen
pdf_set_info($pdf, "Title", "Mijn eerste pdf"); // Titel instellen
pdf_set_info($pdf, "Creator", "Robert-Jan"); // Maker instellen
pdf_set_info($pdf, "Subject", "Mijn eerste pdf"); // Onderwerp instellen
pdf_set_info($pdf, "Keywords", "pdf phphulp tutorial "); // keywords instellen

// Acties als de pagina word geopend
// Volledige pagina openen
pdf_set_parameter($pdf, "openaction", "fitpage"); // Openingsactie
// Trumbnails openen
pdf_set_parameter($pdf, "openmode", "thumbnails");

//Grootte van de pdf instellen. A4 is 595 x 842 en Letter is 612 x 792.
pdf_begin_page($pdf, 595, 842);

//Lettertype instellen
// Findfont zal het font zoeken en opslaan als font object.
$font = PDF_findfont($pdf, "Helvetica-Bold", "winansi",0);
pdf_setfont($pdf, $font, 14);

// tekst afdrukken
pdf_show_xy($pdf, "Look at the World, We are in Holland!,", 50, 750);
pdf_show_xy($pdf, "www.maketheday.nl", 50, 730);

// notities toevoegen
pdf_add_note($pdf, 245, 500, 550, 770, "Ja ja, met php gemaakt, al zeg ik het zelf ", "Mijn notitie, werkt het ?", "note", 0);

// Afbeelding openen
$image = PDF_load_image($pdf, "gif", "test.gif", "");

// Afbeelding plaatsen, laatste parameter is de kwaliteit (0.6 = 60 %)
PDF_fit_image ( $pdf, $image, 50, 50, "scale 0.5" );

// Afbeelding sluiten
pdf_close_image($pdf, $gif_image);

// einde van de pagina
pdf_end_page($pdf);

// pagina sluiten en opslaan
pdf_close($pdf);

// PDF object uit buffer halen
$mybuf = PDF_get_buffer($pdf);

// Lengte bepalen
$mylen = strlen($mybuf);

// File headers instellen
header("Content-type: application/pdf");
header("Content-Length: $mylen");
header("Content-Disposition: inline; filename=mijnpdf.pdf");

// PDF afdrukken
print $mybuf;

// PDf verwijderen
pdf_delete($pdf);

?>

Reacties

0
Nog geen reacties.