[PHP/MySQL] Rapportgenerator

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

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Guru Evi
  • Registratie: Januari 2003
  • Laatst online: 11-06 13:22
Ik ben bezig met een (kleine) uitbreiding op phpESP: http://sourceforge.net/projects/phpesp/ en een van de problemen is het volgende:

Ik wil een rapport van een survey uitlezen en dat lukt perfect op een webbrowser. Nu zou de client daar ook graag een gewoon geprint rapport in een boekje willen van zien (en ze hebben daar reeds een dure printer voor aangeschaft die naast een kleurenlaserprintje ook nog eens een boekje vouwt en met nietjes in elkaar krijgt.

Het probleem dat ik dan heb is dat grafieken en/of tekst van de ene pagina op de andere pagina overloopt en dat wordt dus lelijk, blokken tekst en grafieken die opgesplitst worden. Daarnaast moet het ook geautomatiseerd worden zodat een simpel rapportje geen uur bewerking meer moet krijgen in Word/WordPerfect/OpenOffice, zeker niet als last-minute data wordt upgedate etc.

Dus wat ik dus wil doen is mijn tekst en grafieken opdelen in blokken (zoals in een tijdschrift wordt gedaan) en vervolgens moet ik afhankelijk van het aantal lijnen tekst dat nog overschiet de afbeeldingen licht aanpassen (vergroten/verkleinen) de blok laten overlopen naar een volgende pagina of de marges licht aanpassen (dat is hoe ze het nu doen in een tekstverwerker).

Het probleem is: ik ken geen enkel formaat die dat zomaar even dynamisch doet noch weet ik wat ik moet zoeken qua algoritmes. De output moet vb. PDF, OpenDocument of gewoon HTML zijn die ik kan uitprinten. De pagina's zou ik ook willen aanpassen qua grootte (Letter, Legal, A4, A5) maar meestal zijn ze gewoon Letter qua formaat.

Ik had eraan gedacht om de blokken onder te verdelen in XML maar ik weet geen enkele tekstverwerker die dat rechtstreeks kan inlezen en vervolgens doet wat ik wil.

Heeft iemand een idee voor mij? Of bestaat er een programma, class, algoritme ... die dit doet voor mij (Liefst opensource, hoeft niet os te zijn maar het moet tenminste lopen op Linux/Unix en data kunnen lezen uit MySQL).

Pandora FMS - Open Source Monitoring - pandorafms.org


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
je zou het met een pdf-class kunnen proberen. je kunt dan (volgens mij) namelijk aan het object vragen wat je aanmaakt hoeveel pagina's er zijn, etc.
Met html zul je zoiets volgens mij niet redden. Er is in het verleden wel eens iemand geweest hier in een draadje die een class had geschreven die op basis van het font de ruimte in pixels ging meten die je output in beslag nam, maar die heeft hij volgens mij nooit perfect gekregen. (maar je zou even kunnen zoeken met de search)

Acties:
  • 0 Henk 'm!

  • ReLexEd
  • Registratie: Juli 2000
  • Laatst online: 09-04 11:13

ReLexEd

2 ReLexEd or not 2 ReLexEd???

Zoals Marty al aangaf... De PDF-optie is the way to go...

Vaker met het bijltje moeten hakken dat jij nu hebt liggen ;)

Tip: http://www.fpdf.org/

Vrij makkelijk in te passen library die ook nog eens een aantal handige tutorials op de site heeft staan, die al een aardig eind in de richting zitten van wat je wilt bereiken...(http://www.fpdf.org/en/script/script21.php)

Suc6!

Acties:
  • 0 Henk 'm!

  • Guru Evi
  • Registratie: Januari 2003
  • Laatst online: 11-06 13:22
Misschien leg ik me verkeerd uit.

Het is geen rapport in de vorm van tabellen met data. Het is een rapport zoals je zou geven aan een board of zo met stukken geschreven tekst over de interpretatie van de data en vervolgens een grafiekje erbij en een paar tabellen met comments van users.

Ik heb ook gekeken naar PDF en er zijn inderdaad functies om pagina's af te breken en op de volgende pagina te herbeginnen en nog allemaal leuke dingen die ik ook zal nodig hebben maar ik vind geen enkele functie terug die dynamisch mijn blokken tekst, grafieken etc. kan positioneren op een pagina, als de pagina te lang wordt, gaat ie ofwel uit zijn marges (wat niet altijd proper is/kan) ofwel gaat ie verder op de nieuwe pagina.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|------------------------------|
|            Rapport           |
|               Blaat            |
|           Grafiek             |
...                                |
|              data             |
|  en dus kunnen we bla bl |
|------------------------------|

|------------------------------|
| a bla bla bla bla bla      |
|                                |
|                                |
...
|                                     |
|                                     |
|------------------------------|


Zie je wat er gebeurt?
Nu zou ik ergens op een bepaalde manier moeten teweten komen als er een pagina vb. enkel maar 3 rijen tekst meer overheeft dat deze op een of andere manier de grafieken licht verkleint of de pagina iets schaalt of de marges iets kleiner maakt.

Dat soort dingen ofwel moet de volledige blok met tekst (meestal 1/4 - 1/8 van de pagina) misschien beter op de volgende pagina gezet worden maar dan zit ik weer met een lelijk stuk wit.

Ik heb even rondgevraagd en er zijn blijkbaar drukprocessen die grote drukkerijen gebruiken om verschillende vertalingen en issues van het magazine mooi te laten passen binnen hun 33 pagina's vb. en geen grote stukken wit te hebben of stukken tekst die verdwijnen. Maar meestal is dat ontwikkeld speciaal voor een bepaald proces maar dat is niet het probleem, de algoritme's enzo worden ook niet eventjes uitgegeven en dus zoek ik iemand die mij hierover tips kan geven hoe het dan wel gedaan wordt of ergens een site of informatie die het uitlegt.

[ Voor 4% gewijzigd door Guru Evi op 01-04-2006 06:47 ]

Pandora FMS - Open Source Monitoring - pandorafms.org


Acties:
  • 0 Henk 'm!

Anoniem: 49227

Wat je zou kunnen bekijken is LaTeX. Als je hier een PDF van maakt dan wordt er rekening mee gehouden de plaatsing van tabellen/grafieken/etc. Vervolgens kan je er in de tekst naar verwijzen.

Je kan er wel niet mee lezen uit een database, maar je kan met een php-scriptje natuurlijk wel tex ipv HTML eruit gooien.

[ Voor 19% gewijzigd door Anoniem: 49227 op 01-04-2006 10:24 ]