Pdf creëren met PHP
Inhoud |
Aanzet
Dit is een aanzet tot een pagina waarop verschillende methoden voor het on the fly aanmaken van een pdf document worden besproken. Het is een zgn. stub: een uitnodiging om aan te vullen en uit te breiden.
Verschillende library's
Onder andere de volgende library's zijn beschikbaar:
Niet direct een pdf tool, maar mogelijk wel nuttig te gebruiken door shell commando's door te geven:
Inleiding
waarom pdf? Waarom niet in html of een .doc, .docx of .odf bestandsformaat?
bestaande pdf aanpassen
Setasign bied verschillende oplossingen (al dan niet betaald) voor het aanpassen van bestaande PDF documenten. http://www.setasign.de/products/pdf-php-solutions/
Een andere optie is: Zend_PDF. Helaas bied deze echter nog geen ondersteuning voor tabellen.
Verschillende oplossingen
bovenstaande lijst bespreken
De pdf-classes werken met een syntax, waarbij je een blok op een pagina aanmaakt (coordinaten + afmetingen) en die vult met tekst. Voor redelijk statische layout, zoals een factuur, is dat goed werkbaar.
Daarnaast zijn er mogelijkheden om met html een layout aan te maken en die naar de pdf te exporteren. Zo is er voor Fpdf de uitbreiding html2fpdf beschikbaar. TCPDF kan van huis uit al omgaan met htmlopmaak.
Mijn (ivo P) ervaring met html2fpdf is, dat de ondersteuning van html meer gezien moet worden als "met een html syntax is de layout te regelen, mits je je houdt aan de syntax die de tool ondersteunt." Hierbij moet je denken aan beperkingen, dat < b > wel begrepen wordt, maar < strong > niet. Ook CSS wordt niet of beperkt begrepen. Dit heeft ook te maken met de beperkte snelheid van ontwikkelen van deze tool: hij is al een paar jaar oud, toen html ook "anders" was.
TCPDF is uitgebreider qua ondersteuning van html en kan ook met CSS overweg.
Alternatieven
Hoewel het dus goed mogelijk is om in PHP een PDF document aan te maken en op te slaan, is het veel en best lastig werk waar veel debugging aan te pas komt. Je zult de PDF immers iedere keer aan moeten maken en moeten bekijken om te zien of er nog foutjes in zitten.
Mijn ervaring (Berry) leert mij dat je beter af bent om het niet in PHP te proberen. Er zijn legio oplossingen om PDF bestanden te genereren via de commandline, waardoor je die met PHP aan kunt roepen. De oplossing die ik tegenwoordig gebruik is pdflatex. Dat heeft het nadeel dat je LaTeX moet leren, maar wanneer je dat onder de knie hebt, kan het je dagen tijd schelen en de output ziet er altijd goed uit. Het tweede voordeel is dat je tekst gewoon in een simpel bestand kunt dumpen en dat je je geen zorgen hoeft te maken over de plaatsing van die tekst.





