bigoldie: Reden van deze opmerking? Om maar te zeggen dat pdf-generen niet nutteloos is.
Tja, het spijt me, maar ik blijf zelfs na jouw 'succes verhaal' nog zeggen dat direct PDF genereren nutteloos is. Kennelijk is het niet duidelijk wat ik met 'direct' bedoelde en waarom het dan nutteloos is, dus hier dan maar een beetje uitleg.
Allereerst: met 'direct' bedoel ik dat je een document genereert in termen van pdf: je bent zelf aan het programmeren met als direct doel om een pdf op te bouwen.
Waarom is dit dan nutteloos? Je code is voor een enorm deel niet herbruikbaar als je een ander output formaat nodig hebt. Je code is namelijk bezig met het genereren van pdf en houdt daarbij, tenzij je een briljante programmeur bent, niet rekening met mogelijke uitbreiding naar andere output formaten. Je bindt je applicatie dus direct aan pdf. In de toekomst is er een grote kans op code duplicatie als je een ander output formaat wilt.
Directe bindngen moet je altijd voorkomen als het enigzins mogelijk is. Je wilt bijvoorbeeld niet dat je tekstverwerker alleen maar kan printen naar bijvoorbeeld een HP Deskjet. Je wilt niet dat je processor alleen in een Asus moederbord werkt. Ook wil je niet dat de webbrowser die jij gebruikt alleen kan communiceren met een specifieke webserver (of andersom). Ik heb deze voorbeelden bewust gekozen: in alle gevallen is er namelijk een standaard interface waardoor de verschillende onderdelen kunnen communiceren, maar toch niet direct van elkaar afhankelijk zijn.
Bij het genereren van PDF is dit ook zo. Er bestaan mogelijkheden om je applicatie niet direct te verbinden aan PDF. Waarom die dan niet benutten?
Zoals al eerder in dit topic is opgemerkt moet je dus proberen om de zaken te scheiden. Jouw programma is alleen geinteresseerd in het produceren van een rapport. Of dat rapport nu uiteindeljk aangeboden gaat worden in een van de formaten pdf, postscript, rtf, word, open-office doc, png, html pagina of wat dan ook is, maakt voor je applicatie (meestal) niets uit. Beter is het daarom om het produceren van een bepaald output formaat te scheiden.
Hoe kan je dit dan realiseren? Een mogelijke oplossing is dat je applicatie een rapport (of de data voor een standaard rapport) in een XML formaat produceert. XML is ideaal voor het uitwisselen van data tussen software componenten. Wat voor XML formaat moet je dan kiezen? Goede vraag. Liefst wil je natuurlijk een soort standaard, want daar is vast goed over nagedacht en daar bestaan wellicht al allemaal tools en APIs voor.
Uiteindelijk wil je dit XML formaat natuurlijk toch nog gaan presenteren. Dit kan je doen door het het transformeren naar bijvoorbeeld XHTML of XSL Formatting Objects. Deze transformatie kan je implementeren in XSLT. XHTML kan je natuurlijk direct bekijken in een browser, XSL Formatting Objects kan je door een processor laten omzetten naar concrete output formaten die een gebruiker wil krijgen: PDF of Postscript bijvoorbeeld. FOP kan dit klusje voor je opknappen. Op deze manier worden ook boeken geproduceerd, dus ik kan je garanderen dat dit een krachtige oplossing is!
Ik lever dus vooral kritiek op het direct produceren van PDF omdat je de mogelijkheden van je applicatie onnodig beperkt. Met enige investing in het verkrijgen van kennis van betere technieken kan je je applicatie omtoveren in een systeem waar de taken en verantwoordelijkheden prachtig gescheiden zijn. Dit zorgt ervoor dat je applicatie flexibel is en goed voorbereid is op de toekomst.
Je zou eens moeten weten hoeveel muggen me gestoken hebben tijdens het tikken van dit verhaal

.