FPDF, pdf genereren met variabelen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco ----

Marco ----

13/06/2012 09:07:42
Quote Anchor link
Hallo allemaal,

Op dit moment werk ik aan een huurovereenkomst. Met FPDF gebruik ik de volgende classes om een pdf te genereren:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$pdf
= new PDF();
$pdf->AliasNbPages()
$pdf->AddPage()
$this->MultiCell()
$pdf->Cell()
$pdf->Output()
?>


Dit werkt allemaal prima met afbeeldingen, positioneringen en variabele waarden zoals tijden, data en prijzen.
Nu zou ik graag willen dat er drie standaard teksten komen (voor 3 verschillende typen verhuur) die in ons CMS aan te passen zijn met een WYSIWYG html editor. Binnen die standaard teksten moeten dan nog de variabelen komen voor tijden, data etc. Probleem is nu dat ik geen idee heb hoe ik HTML direct om kan zetten naar PDF met FPDF en hoe ik kan werken met variabelen in de standaard teksten die aangepast kunnen worden in de editors. Heeft iemand tips en/of ideeën hoe ik dat het beste kan realiseren?
 
PHP hulp

PHP hulp

24/12/2024 04:14:53
 
Elwin - Fratsloos

Elwin - Fratsloos

13/06/2012 10:50:11
Quote Anchor link
Tussen de scripts op de site van FPDF (http://fpdf.org) staan een aantal scripts om HTML om te zetten voor de FPDF class.
Het geeft een redelijk resultaat, maar verwacht niet dat je een website zomaar in PDF kan zetten ermee. Er is wel wat tweaking en dergelijke nodig.
 
Marco ----

Marco ----

13/06/2012 11:19:04
Quote Anchor link
Bedankt Elwin, ik had niet goed genoeg gekeken op fpdf.org.
Zo te zien moet het omzetten van HTML wel lukken. Het gaat niet om een website maar om het genereren van een huurovereenkomst. Dan zit ik nu alleen nog met de standaardteksten die aangepast kunnen worden in een html editor, met in die tekst nog eens variabelen.

Voorbeeld:
De materialen kunt u afhalen op $afhaaldatum na x uur en dient u retour te brengen op op $retourdatum voor x tijd.

Dit is slechts een heel klein voorbeeld van een standaardtektst waar de variabelen in komen te staan. Is dat te combineren met een WYSIWYG HTML editor?
 
Elwin - Fratsloos

Elwin - Fratsloos

13/06/2012 11:24:53
Quote Anchor link
De vraag is of je het met een WYSIWYG-editor moet doen. Als je de tekst niet hoeft op te maken met bold of iets dergelijks, zou ik er een gewone input van maken en opslaan als VARCHAR of TEXT.
In de tekst kan je dan variabelen in zetten die je met bijvoorbeeld str_replace() aanpast en dan in FPDF gebruiken. Voor de duidelijkheid zou ik echter geen $ gebruiken om een variabele aan te geven in die tekst, maar bijvoorbeeld een %.
 
Marco ----

Marco ----

13/06/2012 11:28:40
Quote Anchor link
Aan zoiets zat ik inderdaad ook te denken. Ik wil namelijk graag dat de teksten van huurovereenkomsten door iedereen eenvoudig aan te passen zijn. Aan de HTML editor zat ik te denken omdat het mij dan eenvoudiger lijkt om met bijvoorbeeld paragrafen te werken. Ik ga er mee aan de slag!
 
Q S

Q S

13/06/2012 11:31:24
Quote Anchor link
Wellicht dat je het met MPDF moet proberen

http://www.smaizys.com/php/mpdf-html-to-pdf-introduction/
 
Marco ----

Marco ----

13/06/2012 11:36:39
Quote Anchor link
Ik zal eens kijken naar MPDF kijken. Het heeft mij aardig wat moeite gekost om een goede opmaak neer te zetten met FPDF. Dat staat nu verder goed alleen de opzet zoals ik nu heb niet flexibel genoeg. Waarschijnlijk gaat het nu wel gewoon lukken met FPDF :-)
 
Marco ----

Marco ----

15/06/2012 11:30:15
Quote Anchor link
Met FPDF kom ik er wel aan uit. Ik heb nu een WYSIWYG editor in ons CMS om standaardteksten aan te maken. Als variabelen binnen die teksten wil ik gebruiken: [VARIABELE] om dat vervolgens te vervangen voor een bepaalde waarde.

Als voorbeeld: Verhuurdatum: [VERHUURDATUM] moet omgezet worden naar bijboorbeeld Verhuurdatum: 16 juli 2012 maar nu wordt er met onderstaande code van gemaakt Verhuurdatum: [16 juli 2012]. Weet iemand hoe ik dat kan verhelpen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$string
= $afhaalbasis['bev_standaardtekst'];
$patterns = array();
$patterns[0] = '[VERHUURDATUM]';
$patterns[1] = '[AFHAALDATUM]';
$patterns[2] = '[AFHAALTIJDBEGIN]';
$replacements = array();
$replacements[0] = $dag[$tmp_huurdag[0]]." ".$huurdag." ".$maand[$tmp_huurmaand[0]]." ".$huurjaar;
$replacements[1] = $afhaaldag." ".$maand[$tmp_afhaalmaand[0]]." ".$afhaaljaar;
$replacements[2] = '16:00';
$html = preg_replace($patterns, $replacements, $string);
?>
 
Marco Peters

Marco Peters

15/06/2012 11:44:46
Quote Anchor link
Beste Marco,

je dient je patterns aan te passen. Je maakt gebruik van regular expressions, waarbij het eerste en het laatste teken altijd genegeerd worden. Hieronder de code zoals het zou moeten werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$string
= $afhaalbasis['bev_standaardtekst'];
$patterns = array();
$patterns[0] = '^[VERHUURDATUM]^';
$patterns[1] = '^[AFHAALDATUM]^';
$patterns[2] = '^[AFHAALTIJDBEGIN]^';
$replacements = array();
$replacements[0] = $dag[$tmp_huurdag[0]]." ".$huurdag." ".$maand[$tmp_huurmaand[0]]." ".$huurjaar;
$replacements[1] = $afhaaldag." ".$maand[$tmp_afhaalmaand[0]]." ".$afhaaljaar;
$replacements[2] = '16:00';
$html = preg_replace($patterns, $replacements, $string);
?>
 
Marco ----

Marco ----

16/06/2012 10:59:40
Quote Anchor link
Bedankt voor je reactie, Marco.
Ik heb het even geprobeerd maar het werkt nog niet helemaal. Waarom het fout gaat begrijp ik niet.

Hieronder staat wat ik heb geprobeerd met de bijbehorende resultaten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$string
= "Verhuurdatum: [VERHUURDATUM]<br>
Deze kunt u afhalen op [AFHAALDATUM] tussen [AFHAALTIJDBEGIN] en....."
;

$patterns = array();
$patterns[0] = '^[VERHUURDATUM]^';
$patterns[1] = '^[AFHAALDATUM]^';
$patterns[2] = '^[AFHAALTIJDBEGIN]^';
$replacements = array();
$replacements[0] = $dag[$tmp_huurdag[0]]." ".$huurdag." ".$maand[$tmp_huurmaand[0]]." ".$huurjaar;
$replacements[1] = $afhaaldag." ".$maand[$tmp_afhaalmaand[0]]." ".$afhaaljaar;
$replacements[2] = '16:00';
$html = preg_replace($patterns, $replacements, $string);

die($html);
?>

Resultaat: vrijdag 15 juni 2012erhuurdatum: [vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012]
vrijdag 15 juni 2012eze kunt u afhalen op [vrijdag 15 juni 201214 00:00:00 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 201214 00:00:00 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 2012] tussen [vrijdag 15 juni 201214 00:00:00 2012vrijdag 15 juni 2012vrijdag 15 juni 2012vrijdag 15 juni 201214 00:00:00 2012vrijdag 15 juni 201216:0016:00vrijdag 15 juni 201216:00vrijdag 15 juni 201216:0016:0016:00] en.....

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$string
= "Verhuurdatum: [VERHUURDATUM]<br>
Deze kunt u afhalen op [AFHAALDATUM] tussen [AFHAALTIJDBEGIN] en....."
;

$patterns = array();
$patterns[0] = '[VERHUURDATUM]';
$patterns[1] = '[AFHAALDATUM]';
$patterns[2] = '[AFHAALTIJDBEGIN]';
$replacements = array();
$replacements[0] = $dag[$tmp_huurdag[0]]." ".$huurdag." ".$maand[$tmp_huurmaand[0]]." ".$huurjaar;
$replacements[1] = $afhaaldag." ".$maand[$tmp_afhaalmaand[0]]." ".$afhaaljaar;
$replacements[2] = '16:00';
$html = preg_replace($patterns, $replacements, $string);

die($html);
?>

Resultaat: Verhuurdatum: [vrijdag 15 juni 2012]
Deze kunt u afhalen op [14 00:00:00 2012] tussen [16:00] en.....

Zoals het tweede resultaat zou het uiteraard moeten zijn zonder '[]'. Weet iemand hoe ik dit op kan lossen?
Gewijzigd op 16/06/2012 11:00:14 door Marco ----
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

16/06/2012 13:06:23
Quote Anchor link
gebruik preg_quote('/[VERHUURDATUM]/') enz., [] zijn speciale regex karakters.
 
Marco ----

Marco ----

16/06/2012 13:17:06
Quote Anchor link
Opgelost als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$string
= "Verhuurdatum: [VERHUURDATUM]<br>
Deze kunt u afhalen op [AFHAALDATUM] tussen [AFHAALTIJDBEGIN] en....."
;

$patterns = array();
$patterns[0] = '[VERHUURDATUM]';
$patterns[1] = '[AFHAALDATUM]';
$patterns[2] = '[AFHAALTIJDBEGIN]';
$replacements = array();
$replacements[0] = $dag[$tmp_huurdag[0]]." ".$huurdag." ".$maand[$tmp_huurmaand[0]]." ".$huurjaar;
$replacements[1] = $afhaaldag." ".$maand[$tmp_afhaalmaand[0]]." ".$afhaaljaar;
$replacements[2] = '16:00';
$brackets = array('[', ']');
$replaced = preg_replace($patterns, $replacements, $string);
$html = str_replace($brackets, '', $replaced);

die($html);
?>


Bedankt voor jullie reacties
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.