[PHP/PDF] Welke class raden jullie aan

Pagina: 1
Acties:
  • 6.984 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • gnirts_modnar
  • Registratie: Juni 2007
  • Laatst online: 19-04 08:52
Hallo,

Ik ben voor een tweetal projecten opzoek naar een class om PDF's te generen met php. Ik heb het internet afgezocht, en heb een viertal serieuze kandidaten kunnen selecteren. Ik vroeg mij af, voordat ik er helemaal in duik, wat jullie ervaringen zijn met de vier methoden. Even ter zijde, ik zal het voornamelijk voor facturen, afleverbonnen en proforma's gaan gebruiken.

In de eerste plaats hebben we FPDF, klinkt goed en is vrij simpel te hanteren maar is sinds 2004 niet meer bijgewerkt, dus wellicht enigszins out-dated.

Ten tweede ezPDF van R&OS. Dit ziet er qua mogelijkheden prima uit, maar misschien iets te complex, en ik kwam bij mijn zoektocht over het internet maar weinig gebruikers tegen.

Ten derde HTMLdoc, ik heb de werking en de functionaliteit hier nog niet helemaal van meegekregen, maar ik vermoed dat het een soort html parser is.

Tenslotte heeft php zelf een pdf extensie volgens php.net pdflib, veel mogelijkheden. Maar het lijkt erop dat er de nodige troubles mee zijn (php.net).

Ik vroeg mij af wat jullie voor dit soort toepassingen gebruiken, en wat een beetje de way to go is.

Om het een beetje spannend te houden zou ik graag o.b.v. een template pdf werken met eigen lettertypen. Het template is in ieder geval mogelijk met fpdf, de lettertypes weet ik niet. Maar dat zou wel weer zeker moeten kunnen met pdflib.

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Lettertypes kunnen ook met fpdf, dat had je natuurlijk ook even kunnen nakijken. Zelf gebruik ik fpdf, lekker klein en makkelijk.

Maar ik zou gewoon kijken wat jij wilt hebben, en kijken welke engine het beste bij jouw wensen past. Als het alleen lettertypes is kan je gewoon kiezen neem ik aan.

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • MrData
  • Registratie: Februari 2000
  • Laatst online: 25-07-2022
Ik heb in het verleden FPDF gebruikt, en die kan gewoon aan wat jij wil doen. Je kunt een bestaand PDFje pakken, en daarovereen je content in de pagina's plaatsen.

Ik kan me nog wel wat gedoe herinneren met type 1 fonts, maar als je met truetype fonts gaat werken moet het goed komen.

"We set sail on this new sea because there is new knowledge to be gained and new rights to be won." - John F. Kennedy - USS Valiant NCC-74210 dedication plaque


Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Ik heb gelukkig wel wat ervaring met de een en ander inmiddels en moet zeggen dat mijn voorkeur voor simpele documenten echt uit gaat naar de HTML => PDF converters.

Voordeel hier aan is dat je je opdrachtgever niet al te spannende layoutwijzigingen kunt laten maken m.b.v. een rich text editor c/q wat CSS(2) en dat gewoon weer door de generator heenschopt.

Voorbeelden van goede converters zijn:
http://www.digitaljunkies.ca/dompdf/about.php
en http://www.princexml.com/

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • gnirts_modnar
  • Registratie: Juni 2007
  • Laatst online: 19-04 08:52
Ja natuurlijk kan ik zelf kiezen, maar ik heb een beperkte blik op php classes voor pdf'en, en misschien bestaat er een soort lingua franca voor dit soort dingen. Vandaar dat ik deze vraag hier neer leg.

Acties:
  • 0 Henk 'm!

  • Duroth
  • Registratie: Juni 2007
  • Laatst online: 27-04-2016

Duroth

No rest for the tweaked

Bij mij op het werk hebben ze daar nog wel wat moois voor liggen, een vrij simpele HTML => PDF converter. De interne werking hiervan ken ik niet (de functies verwijzen naar een php-file op een afgeschermd indern domeintje), maar ik kan morgen even kijken of het beestje ook een naam heeft. Standaard fonts geven geen probleem, tables ook niet, voor zover ik heb gezien werken zelfs DIV-jes prima. Het is dan wel een HTML parser, maar voor zover ik heb gezien doet het zijn werk prima.

* Duroth zal morgen eventjes kijken.

Acties:
  • 0 Henk 'm!

  • MrData
  • Registratie: Februari 2000
  • Laatst online: 25-07-2022
Het mooie van FPDF vind ik (misschien kunnen die andere pakketten dat ook wel) toch wel dat je bestaande PDF's als template kan gebruiken. Die HTML converters moeten dan wel verrekte goed zijn in het parsen van stylesheets en dergelijken voordat je een beetje mooie documenten kunt maken. Maar als het gaat om facturen en dergelijken is dat misschien niet zo heel belangrijk.

"We set sail on this new sea because there is new knowledge to be gained and new rights to be won." - John F. Kennedy - USS Valiant NCC-74210 dedication plaque


Acties:
  • 0 Henk 'm!

  • Duroth
  • Registratie: Juni 2007
  • Laatst online: 27-04-2016

Duroth

No rest for the tweaked

@MrData:

Vandaar dat ik morgen eventjes kijk hoe de CSS support is van het script. Als die (redelijk) volledig is, kan je er letterlijk alle kanten mee uit, en zou je ook een HTML template kunnen maken in plaats van een PDF template.

Acties:
  • 0 Henk 'm!

  • gnirts_modnar
  • Registratie: Juni 2007
  • Laatst online: 19-04 08:52
Ja ik vermoed ook dat css support voor een dergelijk project misschien nogal kan tegen vallen, zeker als je kijkt dat de gemiddelde webbrowser niet standardscompliant is.. laat staan een html => pdf parser.

@Duroth:

Ja hartstikke bedankt, ben benieuwd naar het resultaat.

Acties:
  • 0 Henk 'm!

  • dream0r
  • Registratie: Oktober 2001
  • Niet online
Je zou ook even kunnen kijken naar de Zend Framework PDF component. Ik heb er zelf echter geen ervaring mee.

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
troubles met de pfdlib van php zelf? daar heb ik nog niet van gehoord, het is wel de beste optie omdat die als module kan draaien en daarom sneller is.

Acties:
  • 0 Henk 'm!

  • djiwie
  • Registratie: Februari 2002
  • Laatst online: 17-09 16:35

djiwie

Wie?

Punt is dat je er officieel voor moet betalen bij commercieel gebruik... ;) (Zie hier voor de details.) Ook ben je dan afhankelijk van een module die over het algemeen niet standaard aanstaat. FPDF bestaat puur uit PHP.

* djiwie gebruikt overigens FPDF naar volle tevredenheid.

Acties:
  • 0 Henk 'm!

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22-09 13:50

TheDane

1.618

't Bedrijf waar ik werk heeft toevallig net deze week een of andere freelance Amerikaan voor een export-to-PDF project ingehuurd (omdat ik 't niet (snel genoeg) kan :P )

Hij gebruikt zelf ook FPDF, maar een of andere aangepaste, customized versie. De mock-up die hij ons liet zien op basis van de specs was meer dan impressive. Geneste tabellen, background images, allemaal geen probleem (in zijn class).

De standaard FPDF distributie heeft wel tamelijke beperkingen. Ik kon er zelf in ieder geval niet alle specs mee behalen.

Acties:
  • 0 Henk 'm!

  • gnirts_modnar
  • Registratie: Juni 2007
  • Laatst online: 19-04 08:52
Nouja PDFlib valt dus duidelijk af vanwege de kosten voor het gebruik, ik hoor hier iedereen over fpdf, dat zal dan waarschijnlijk wel te way-to-go zijn. Iemand nog ervaringen met R&OS?

Acties:
  • 0 Henk 'm!

  • djiwie
  • Registratie: Februari 2002
  • Laatst online: 17-09 16:35

djiwie

Wie?

TheDane schreef op donderdag 10 januari 2008 @ 02:21:
De standaard FPDF distributie heeft wel tamelijke beperkingen. Ik kon er zelf in ieder geval niet alle specs mee behalen.
Maar het is wel goed uitbreidbaar, ik heb zelf een tijdje terug voor een project de tabelcode nogal aangepast en dat ging prima. Ook staan er redelijk wat voorbeelden online. :)

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 22-09 15:11
Ik ga altijd voor FPDF.
Naast pdflib heb ik geen ervaring met je overige 2 suggesties. PDFlib vnid ik zelf veel te omslachtig en traag.

Omdat FPDF gewoon een PHP-classe is kun je deze ook zelf uitbreiden.
Ik heb wel enige problemen gebahd met het genereren van Russische PDFjes in UTF8, maar de extensie UFPDF (oid) bood daarin een aardige oplossing.
Enige wat ik er in mis is een goede methode om bestaand PDFjes in te lezen en aan te passen.

[ Voor 53% gewijzigd door frickY op 10-01-2008 13:25 ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-09 14:28
gnirts_modnar schreef op donderdag 10 januari 2008 @ 11:39:
Nouja PDFlib valt dus duidelijk af vanwege de kosten voor het gebruik, ik hoor hier iedereen over fpdf, dat zal dan waarschijnlijk wel te way-to-go zijn. Iemand nog ervaringen met R&OS?
Die van R&OS gebruiken wij hier. Opzich prima, het werkt gewoon en heeft wel duidelijke documentatie. Wij maken er placemats mee op A3 formaat met allerlei foto's, kolommen tekst, tabellen enzovoorts en het werkt gewoon. Of het de ideale manier is weet ik niet, daarvoor heb ik niet voldoende vergelijk en technische kennis.

Acties:
  • 0 Henk 'm!

  • BBrunekreeft
  • Registratie: Mei 2004
  • Laatst online: 23:52

BBrunekreeft

Dus...

frickY schreef op donderdag 10 januari 2008 @ 13:23:
Ik ga altijd voor FPDF.
...
Enige wat ik er in mis is een goede methode om bestaand PDFjes in te lezen en aan te passen.
Kijk eens naar FPDI.
Daar kom je al een aardig eind mee.

Acties:
  • 0 Henk 'm!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Grappig! Ik ben toevallig net klaar met het implementeren van een nieuwe class. Voorheen gebruikte ik FPDF, maar vind het prettiger om simpelweg HTML output aan een class te voeren die dat dan omzet naar PDF. Ik heb die een gevonden, al wordt niet alle CSS opmaak herkend. Het werkt heel redelijk naar tevredenheid en vooral heel simpel.

http://www.digitaljunkies.ca/dompdf/

PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$tmpfile = tempnam("/tmp", "dompdf_");
file_put_contents($tmpfile, $smarty->fetch()); // Replace $smarty->fetch()
                                                // with your HTML string

$url = "dompdf.php?input_file=" . rawurlencode($tmpfile) .
       "&paper=letter&output_file=" . rawurlencode("My Fancy PDF.pdf");

header("Location: http://" . $_SERVER["HTTP_HOST"] . "/$url");
?>

....is inprincipe alle code die je nodig hebt om een PDF bestand te genereren op basis van een HTML bestand.

Acties:
  • 0 Henk 'm!

  • gnirts_modnar
  • Registratie: Juni 2007
  • Laatst online: 19-04 08:52
Interessante optie, beetje dezelfde werking als HTMLdoc zeker? weet iemand zo het verschil tussen beide, ik heb net even de demo op hun site geprobeerd, ziet er redelijk goed uit.

Acties:
  • 0 Henk 'm!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Zo te zien wel ongeveer ja. Voor domPDF heb je alleen wel PHP5 nodig. HTMLdoc werkt met PHP4, aan de code te zien.

Acties:
  • 0 Henk 'm!

Verwijderd

Het lijkt erop dat ik de enige ben die R&OS EZPDF Gebruik? (8>

Op DomPDF na heb ik andere heb ik niet erg veel ervaring met andere klassen
'Die van' R&OS gebruik ik onder andere voor offertes, prijslijsten en passagierslijsten.


+ Pros
Vooral vanwege de tabellen omdat deze zelf een regel kiezen en wanneer ze het einde van de pagina bereiken, vanzelf op een nieuwe pagina komen.
MySQL results 'pleur' je zo in een tabel.
Ook de optie om tabelrijen om-en-om te kleuren is cool.

EZ toevoegen van gekleurde vlakken, polygonen, cirkels, lijnen, \n , afbeeldingen kun je EZ toevoegen.

Betrouwbaar, ik heb geen rare resulaten gehad.


- Cons
De drie standaard letter typen zijn wat weinig.
Ik heb .afm bestanden proberen in te voeren maar dat lukte niet meteen.

De kleuren worden aangehouden in (#,#,#) [R,G,B] *
waarbij # niet maximaal 0-255 is maar 0.0-1.0
Dat wordt dus omrekenen als je je huisstijl aan wilt houden


Dus:
Het is maar net hoe complex je het maakt, ik vind de complexiteit wel meevallen.
Converten van HTML en CSS vind ik toch tricky eerlijk gezegd.
Ik ben tevreden en zal niet snel overstappen naar iets anders.


* dit is geen poging tot reguliere expressies :P

[ Voor 8% gewijzigd door Verwijderd op 10-01-2008 17:07 . Reden: ik kan niet tiepen ]


Acties:
  • 0 Henk 'm!

  • djiwie
  • Registratie: Februari 2002
  • Laatst online: 17-09 16:35

djiwie

Wie?

Bram77 schreef op donderdag 10 januari 2008 @ 15:24:
Voor domPDF heb je alleen wel PHP5 nodig. HTMLdoc werkt met PHP4, aan de code te zien.
Is dit nog een issue dan?

Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 21-09 20:37
Bram77 schreef op donderdag 10 januari 2008 @ 14:54:
PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$tmpfile = tempnam("/tmp", "dompdf_");
file_put_contents($tmpfile, $smarty->fetch()); // Replace $smarty->fetch()
                                                // with your HTML string

$url = "dompdf.php?input_file=" . rawurlencode($tmpfile) .
       "&paper=letter&output_file=" . rawurlencode("My Fancy PDF.pdf");

header("Location: http://" . $_SERVER["HTTP_HOST"] . "/$url");
?>
Dit ziet er wel erg eng uit moet ik zeggen. Behalve dat ik niet snap wat het nut van die redirect naar dompdf.php is weet niet wat dompdf.php doet. Maar controleert die ook of input_file daadwerkelijk iets is waar de gebruiker bij mag en dat je niet allemaal rare bestanden als input_file op kan geven?


Kan je met FPDF + FPDI ook meerdere pdf bestanden (met transparante gedeeltes) over elkaar heen leggen?

[ Voor 6% gewijzigd door robbert op 11-01-2008 01:38 ]


Acties:
  • 0 Henk 'm!

  • gnirts_modnar
  • Registratie: Juni 2007
  • Laatst online: 19-04 08:52
Ja daar ben ik zelf ook erg benieuwd naar, ik moet eerlijk bekennen dat ik nog behoorlijk twijfel tussen het gebruik van een parser oplossing of een class / mod.

Op de een of andere manier heb ik het niet zo op de parsers, ik ben toch bang dat als je dan echt iets wil met html of css, dat het dan weer niet ondersteunt wordt. Daarnaast kan je daar geen eigen lettertypes gebruikem. (tenzij je natuurlijk sIFR in je html gooit... ;))Anderzijds moet ik wel zeggen dat die test die je kan gebruiken op domPDF er erg goed uitzag, en ook bijzonder effecient lijkt te zijn omdat je niets anders hoeft te doen dan je normaal doet.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 22-09 15:11
In ASP heb ik overigens goede ervaringen met ABCpdf. Daar kun je ook HTML naar schrijven en hij begrijpt aardig wat CSS. Is een betaalde oplossing, maar niet duur. Helaas nog niets gelijkwaardigs voor PHP gevonden.

@BBrunekreeft
FPFI wel eens gekijken, maar werkte toen belabberd. Had ook het gevoel dat het verschrikkelijk CPU-intensief was.

Acties:
  • 0 Henk 'm!

  • Dennahz
  • Registratie: November 2001
  • Laatst online: 22:19

Dennahz

Life feels like hell should.

Momenteel ben ik bezig met een systeem waarbij ik ook facturen in PDF moet kunnen genereren. Ik heb een aantal classes geprobeerd maar telkens moest je alles weer positioneren etc etc. Ik ga nu eens domPDF proberen om van een HTML automatisch een PDF te genereren. :)

* Dennahz zal zijn ervaringen tzt hier wel delen... handig voor latere terugzoekers ;)

Twitter


Acties:
  • 0 Henk 'm!

  • Atari Paul
  • Registratie: November 2002
  • Laatst online: 22-09 12:57
Ik weet dat het niet geheel aansluit op de vraag van de TS, maar ik maak nu al jaren gebruik van FOP (je hebt Java nodig om het te kunnen draaien).

Maar het voordeel is dat je zowat alles kunt doen, je maakt bijvoorbeeld in Openoffice het document zoals je wilt dat het er uit gaat zien, en vervolgens kun je het exporteren met een XSL-FO filter.

Het aangemaakt FO bestand kun je dan gewoon bewerken met PHP en vervolgens laten parsen door FOP.

Ik gebruik het al een aantal jaren en moet zeggen dat ik er nog nooit mee in de problemen ben gekomen (behalve misschien dat het niet erg snel is).

Stability ?? My Atari still has it :)


Acties:
  • 0 Henk 'm!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
robbert schreef op vrijdag 11 januari 2008 @ 01:28:
[...]

Dit ziet er wel erg eng uit moet ik zeggen. Behalve dat ik niet snap wat het nut van die redirect naar dompdf.php is weet niet wat dompdf.php doet. Maar controleert die ook of input_file daadwerkelijk iets is waar de gebruiker bij mag en dat je niet allemaal rare bestanden als input_file op kan geven?
Het controleren van het input file is natuurlijk niet de verantwoordelijkheid de domPDF class.

Het dompdf.php bestand zorgt er simpelweg voor dat je niet zelf in je code een object instantie hoeft aan te maken. Je kunt ook direct de class aanspreken.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
require_once("dompdf_config.inc.php");

$html =
  '<html><body>'.
  '<p>Put your html here, or generate it with your favourite '.
  'templating system.</p>'.
  '</body></html>';

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");


Maar om onduidelijke reden wilde dat bij mij alleen werken bij kleinere bestanden. Een bestand van meer dan +/- 200KB resulteerde in een lege pagina.

Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 21-09 20:37
Bram77 schreef op vrijdag 11 januari 2008 @ 10:25:
Het dompdf.php bestand zorgt er simpelweg voor dat je niet zelf in je code een object instantie hoeft aan te maken
Stel ik ga als gebruiker naar
code:
1
http://jouwdomein.nl/dompdf.php?input_file=/een/bestand/wat/ik/niet/mag/zien.html&output_file=secret


Wat doet die dan?

[ Voor 3% gewijzigd door robbert op 11-01-2008 11:42 ]


Acties:
  • 0 Henk 'm!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Dat moet dan ook afgeschermd worden in .htaccess. Alleen locale toegang.

Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 21-09 20:37
Bram77 schreef op vrijdag 11 januari 2008 @ 11:42:
Dat moet dan ook afgeschermd worden in .htaccess. Alleen locale toegang.
Hoe gaat dit dan nog werken:
PHP:
1
header("Location: http://" . $_SERVER["HTTP_HOST"] . "/$url");

Conclusie, de eerste oplossing van je is nogal onveilig.

[ Voor 20% gewijzigd door robbert op 11-01-2008 11:52 ]


Acties:
  • 0 Henk 'm!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Als dat vanaf de localhost wordt uitgevoerd is dat toch geen probleem?

edit: Het is overigens niet mijn oplossing. Het is een simpele copy/paste vanaf de domPDF site.

[ Voor 41% gewijzigd door Bram77 op 11-01-2008 12:02 ]


Acties:
  • 0 Henk 'm!

  • robbert
  • Registratie: April 2002
  • Laatst online: 21-09 20:37
Bram77 schreef op vrijdag 11 januari 2008 @ 12:01:
Als dat vanaf de localhost wordt uitgevoerd is dat toch geen probleem?
Enig idee wat
PHP:
1
header("Location: url")

doet?

Die redirect je client naar die locatie. Dan kun je toegang tot dompdf.php wel leuk voor enkel localhost toestaan, maar dan hebben je gebruikers ook geen toegang tot dompdf.php. Dus wordt je applicatie nogal nutteloos.

[ Voor 4% gewijzigd door robbert op 11-01-2008 12:05 ]


Acties:
  • 0 Henk 'm!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Misschien begrijp ik htaccess dan niet helemaal. Je zou toch zeggen dat wanneer een bestand wat op de zelfde server staat dompdf.php aanspreekt, wordt gezien als een bestand wat vanuit localhost aanspreekt?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Nee, je snap header() juist niet. Een response header gaat naar de client. ;)

{signature}


Acties:
  • 0 Henk 'm!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Op die manier :) Hmmm, dat maakt het wel lastig ja. Is er geen manier om de server het bestand uit te laten voeren?

Acties:
  • 0 Henk 'm!

  • gnirts_modnar
  • Registratie: Juni 2007
  • Laatst online: 19-04 08:52
Oke, ik ben net bezig geweest met domPDF en nu al problemen, krijg geen png file in het bestand. De website zegt echter dat er wel png ondersteuning is. Ik denk dat ik toch maar naar fpdf ga kijken. Ik houd jullie op de hoogte, lijkt me handig voor mensen die later nog op zoek zijn naar iets dergelijks.

Acties:
  • 0 Henk 'm!

Verwijderd

Is er helemaal niemand die R&OS gebruikt :?

Acties:
  • 0 Henk 'm!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
Het gemak van een HTML pagina als bron gebruiken en de rest aan de class overlaten is wel erg comfortabel. R&OS is prachtig en waarschijnlijk de meest uitgebreide. Maar ik kies dan toch voor het comfort van domPDF.
Pagina: 1