pdf maken met php

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

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een html forumlier gemaakt met een text vak erop..
Nu wil ik daar wat invoeren en dat outputten in een pdf bestand. alles werkt op 1 ding na en dat is dat alle tekst die ik invoer in het tekstvak achterelkaar komt te staan. Hoe is dit op te lossen? ik gebruik clibpdf. Ik heb op allerlei sites gezocht naar hoe ik regels kan afkorten maar ik kom er niet uit.
Ik heb de php.net manuel helemaal uitgezocht...

Ik heb het stuk script gepost iets verder naar beneden hier in de topic

[ Voor 28% gewijzigd door Verwijderd op 29-08-2005 14:00 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

En nu? Verwacht je dat wij je code voorje gaan schrijven? Laat eens wat relevante eigen code zien, geef wat meer uitleg over wat je gezocht/gevonden/geprobeerd hebt. Op deze manier is je topic een scriptrequest, en die kunnen we hier niet gebruiken. ;)

Lees ook P&W FAQ - De "quickstart" even door en pas je startpost even aan. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op maandag 29 augustus 2005 @ 13:56:
Ik heb een html forumlier gemaakt met een text vak erop..
Nu wil ik daar wat invoeren en dat outputten in een pdf bestand. alles werkt op 1 ding na en dat is dat alle tekst die ik invoer in het tekstvak achterelkaar komt te staan. Hoe is dit op te lossen? ik gebruik clibpdf.
even mijn script erbij voor de duidelijkheid:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
//paginainstellingen
$linkermarge=20; //aantal kolommen geteld vanaf links(rand vh papier)
$hoogte=842; // aantal regels
$breedte=595; // aantal kolommen
$lettertype="Courier";
$lettergrootte=14;
$test=$_POST['test'];
$titel=$_POST['titel'];

$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, $hoogte, $breedte, 1.0);
//
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Blad 1");
//trek een horizontale lijn
cpdf_moveto($cpdf, 20, 792);
cpdf_lineto($cpdf, 580, 792);
cpdf_stroke($cpdf);
//tekst gedeelte
cpdf_begin_text($cpdf);
cpdf_set_font($cpdf, $lettertype, $lettergrootte, "NULL");
cpdf_set_text_rendering($cpdf, 0);
//plaats tekst
cpdf_text($cpdf, $_POST['titel'], $linkermarge, 800);
cpdf_text($cpdf, $_POST['test'], $linkermarge, 760);
cpdf_end_text($cpdf);
cpdf_finalize_page($cpdf, 1);
cpdf_finalize($cpdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($cpdf);
cpdf_close($cpdf);
?>

[ Voor 10% gewijzigd door NMe op 29-08-2005 14:08 . Reden: Als je een script post voor de duidelijkheid, zet het dan ook liever duidelijk tussen [code]-tags neer. :) ]


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-09 12:54
Je zou kunnen proberen om je stuk text uit je formulier op te splitsen. Dat houdt in dat je zelf nog moet gaan uitrekenen wanneer je op een nieuwe regel moet gaan beginnen. Ik heb het zelf eens ooit opgelost door de text te op te splitsen en in een array te stoppen. Door middel van een for loop en de cpdf_continue_text() functie, regel voor regel weer weg te schrijven. Deze clibpdf doet het iig niet zelf.

Acties:
  • 0 Henk 'm!

Verwijderd

De oplossing ligt inderdaad in het vervangen van lione breaks binnen je tekstvak ("\n" waarschijnlijk) in line breaks die deze lib begrijpt. De oplossing hierboven kan, maar misschien is een simpele search-and-replace functie simpeler en sneller.

Succes :)

Acties:
  • 0 Henk 'm!

Verwijderd

-NMe- schreef op maandag 29 augustus 2005 @ 13:58:
En nu? Verwacht je dat wij je code voorje gaan schrijven? Laat eens wat relevante eigen code zien, geef wat meer uitleg over wat je gezocht/gevonden/geprobeerd hebt.
Ofwel..... zou je misschien wat van je eigen code kunnen laten zien, en heb je al verschillende topic over dit onderwerp doorzocht? Het is namelijk niet de bedoeling dat we je de code geven maar wel meehelpen oplossen.

Misschien wat vriendelijker mag ook wel.... :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op maandag 29 augustus 2005 @ 14:25:
[...]


Ofwel..... zou je misschien wat van je eigen code kunnen laten zien, en heb je al verschillende topic over dit onderwerp doorzocht? Het is namelijk niet de bedoeling dat we je de code geven maar wel meehelpen oplossen.

Misschien wat vriendelijker mag ook wel.... :)
Ik heb mijn eigen code gepost...
En ik heb dit hele forum al afgezocht...:)

maar ja... hierboven staat mijn code :P

Acties:
  • 0 Henk 'm!

Verwijderd

twas meer een reactie op de admin's die af en toe een beetje geirriteerd over komen omdat niemand de faq's lezen.

maar om terug te komen op je probleem.. ik mag er vanuit gaan dat je dat niet hebt opgelost. kwam ik iets tegen wat een beetje op de oplossing van fpdf (wat ik gebruik) lijkt.

http://nl3.php.net/manual/en/function.cpdf-continue-text.php


Misschien is het wat.

[ Voor 21% gewijzigd door Verwijderd op 29-08-2005 14:37 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op maandag 29 augustus 2005 @ 14:34:
twas meer een reactie op de admin's die af en toe een beetje geirriteerd over komen omdat niemand de faq's lezen.

maar om terug te komen op je probleem.. ik mag er vanuit gaan dat je dat niet hebt opgelost. kwam ik iets tegen wat een beetje op de oplossing van fpdf (wat ik gebruik) lijkt.

http://nl3.php.net/manual/en/function.cpdf-continue-text.php

Misschien is het wat.
Deze functie die heb ik er wel inzitten en ook geprobeert. maar je zou voor elke regel dit comando moeten geven.
dus je zou ook voor elke regel een apart tekstvak moeten maken. of zie ik dat verkeerd... Als je er bv een verhaal inplakt dan ga je niet regel voor regel in het tekstvak plakken...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 29 augustus 2005 @ 14:34:
twas meer een reactie op de admin's die af en toe een beetje geirriteerd over komen omdat niemand de faq's lezen.
Eigenlijk was ik eerder kortaf omdat ik niet zoveel tijd had, maar wel nog even dit topic wat bij wilde sturen, zodat het wat beter van start kon gaan. Had inderdaad wat vriendelijker gekund, maar goed, it did the trick. :P
Ik ben trouwens geen admin. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • ATS
  • Registratie: September 2001
  • Laatst online: 18-09 15:14

ATS

Is het mogelijk om LaTeX op dat systeem te draaien? In dat geval zou je gewoon een .tex bestand kunnen outputten met je php script, pdflatex eroverheen halen en de pdf outputten. LaTeX heeft geen enkele moeite om zelf uit te zoeken waar de breaks in een paragraaf tekst thuis horen.

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op maandag 29 augustus 2005 @ 14:43:
[...]

Eigenlijk was ik eerder kortaf omdat ik niet zoveel tijd had, maar wel nog even dit topic wat bij wilde sturen, zodat het wat beter van start kon gaan. Had inderdaad wat vriendelijker gekund, maar goed, it did the trick. :P
Ik ben trouwens geen admin. :P
Ik heb t tog begrepen en mn post aangepast hehe :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ATS schreef op maandag 29 augustus 2005 @ 14:45:
Is het mogelijk om LaTeX op dat systeem te draaien? In dat geval zou je gewoon een .tex bestand kunnen outputten met je php script, pdflatex eroverheen halen en de pdf outputten. LaTeX heeft geen enkele moeite om zelf uit te zoeken waar de breaks in een paragraaf tekst thuis horen.
nee dat is niet mogelijk :(
Ik had zelf ook een COM script gevonden online waarmee je in internet exlorer kon browsen naar word en excel documenten. en dat die dan in pdf worden getoond.
Maar dit is allemaal niet mogelijk helaas.. zou het mogelijk zijn met een loopje waarin in tekens tel en als het aantal tekens gehaald word dat een regel vol is dat ik dan die automatich naar een nieuwe regel verwijs??

Acties:
  • 0 Henk 'm!

  • grizzlybear
  • Registratie: Oktober 2001
  • Laatst online: 20-09 14:39
Ik gebruik html2pdf om vanuit php mijn gegenereerde pagina om te zetten naar PDF. Dat werkt heel aardig. In combinatie met mijn richtext editor, kun je mooie rapporten en zo generen. Misschien een idee?

Acties:
  • 0 Henk 'm!

Verwijderd

om weer even terug te vallen op fpdf :) http://www.fpdf.org/

dit is denk ik wat je zocht:
http://www.fpdf.org/en/script/script49.php

met het resultaat:
http://www.fpdf.org/en/script/wordwrap.pdf

@-NMe- ok, ok mod dan ;)

[ Voor 8% gewijzigd door Verwijderd op 29-08-2005 15:08 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
grizzlybear schreef op maandag 29 augustus 2005 @ 14:52:
Ik gebruik html2pdf om vanuit php mijn gegenereerde pagina om te zetten naar PDF. Dat werkt heel aardig. In combinatie met mijn richtext editor, kun je mooie rapporten en zo generen. Misschien een idee?
deze maakt gebruik van de fPDF libary en deze mag ook niet gebruikt worden..
Hoe kan ik een tekstvak opdelen in regels zonder dat een gebruiker er iets van merkt...
of is dit niet mogelijk?

P.S ik ben een beginnende php scripter... ben net 2 weken er mee bezig...

Acties:
  • 0 Henk 'm!

Verwijderd

"mag je niet gebruiken" moet je dit voor school doen ofzo?

[ Voor 28% gewijzigd door Verwijderd op 29-08-2005 15:10 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op maandag 29 augustus 2005 @ 15:09:
"mag" moet je dit voor school doen ofzo?
Ik ben op stage daar moet ik het voor maken.

het lukt allemaal redelijk op dat afkorten van de regel na :(

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 09:55

Bosmonster

*zucht*

FPDF is geen module ofzo, maar gewoon een verzameling scripts. Er hoeft dus niks voor geinstalleerd te worden.

Handige is dat FPDF wat meer gebruikstoepasselijk gericht is.. en dit soort dingen dus met een enkel commando te doen zijn ipv dat je het zelf helemaal met een imho zeer ontoegankelijke api (pdflib) in elkaar moet gaan proberen te bouwen.

[ Voor 3% gewijzigd door Bosmonster op 29-08-2005 15:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

gelukkig dat ik nog ff refreshde voor ik mijn post had geplaatst helemaal met bosmonster eens:

Include_once "fpdf.php"; en klaar is Xerjer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb dit: een pagina met een texvak en een submit button.
Als ik wat typ in het tekstvak dan maakt die er een pdf van....
dit werkt ook allemaal wel maar ik zoek alleen een commando om een regel af te korten zodat alles wat ik in een tekstvak typ alles achterelkaar op 1 regel komt....

Acties:
  • 0 Henk 'm!

  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 03-08 17:53

Yoozer

minimoog

Verwijderd schreef op maandag 29 augustus 2005 @ 15:19:
dit werkt ook allemaal wel maar ik zoek alleen een commando om een regel af te korten zodat alles wat ik in een tekstvak typ alles achterelkaar op 1 regel komt....
Dit is een beetje tegenstrijdig met wat je eerst postte, maar als je een enkele lange regel wil veranderen in meerdere korte regels zou ik zoeken op het begrip "word wrap".
http://nl2.php.net/manual/en/function.wordwrap.php

Om met PDF te werken zou je elk stukje in een array kunnen stoppen en dan door die array kunnen loopen als je maar 1 regel per keer (lijkt me overigens vreemd, maar goed) mag/kan schrijven.

teveel zooi, te weinig tijd


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op maandag 29 augustus 2005 @ 15:17:
gelukkig dat ik nog ff refreshde voor ik mijn post had geplaatst helemaal met bosmonster eens:

Include_once "fpdf.php"; en klaar is Xerjer
dat is allemaal veel te uitgebreid....
zou er dan echt nix eenvoudigers zijn??

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Yoozer schreef op maandag 29 augustus 2005 @ 15:24:
[...]

Dit is een beetje tegenstrijdig met wat je eerst postte, maar als je een enkele lange regel wil veranderen in meerdere korte regels zou ik zoeken op het begrip "word wrap".
http://nl2.php.net/manual/en/function.wordwrap.php

Om met PDF te werken zou je elk stukje in een array kunnen stoppen en dan door die array kunnen loopen als je maar 1 regel per keer (lijkt me overigens vreemd, maar goed) mag/kan schrijven.
Alles wat er in het textvak gepost is word via dit commando in de pdf gezet:

code:
1
cpdf_text($cpdf, $_POST['textvak'], $linkermarge, 760);

die 760 is om de plek aan te geven op de pagina waar die moet beginnen.
Maar hij ziet de in het tekstvak geposte tekst als 1 regel daarom print die in de pdf alles achter elkaar... helaas..

wordwrappen werkt ook niet.. anders had ik dat allang geprobeert...

[ Voor 6% gewijzigd door Verwijderd op 29-08-2005 15:33 ]


Acties:
  • 0 Henk 'm!

  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 03-08 17:53

Yoozer

minimoog

Verwijderd schreef op maandag 29 augustus 2005 @ 15:32:
code:
1
cpdf_text($cpdf, $_POST['textvak'], $linkermarge, 760);

die 760 is om de plek aan te geven op de pagina waar die moet beginnen.
Maar hij ziet de in het tekstvak geposte tekst als 1 regel daarom print die in de pdf alles achter elkaar... helaas..

wordwrappen werkt ook niet.. anders had ik dat allang geprobeert...
Tuurlijk werkt dat. Je moet alleen eerst de $_POST['textvak'] ("text" is geen Nederlands woord, "tekst" wel) door de wordwrap jagen, en daarna de stukjes in een array zetten. Dan is het gewoon een kwestie van

PHP:
1
2
3
4
for(i=0,i<count($arrayTekstVak), i++)
{
cpdf_text($cpdf, $arrayTekstVak[i], $linkermarge, 760);
}

(even uit de kop, geen mogelijkheid om 't te controleren)

[ Voor 5% gewijzigd door Yoozer op 29-08-2005 15:39 ]

teveel zooi, te weinig tijd


Acties:
  • 0 Henk 'm!

Verwijderd

en?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het lukt nog niet helemaal...

Ik zei al ik ben net begonnen net scripten :P ik ben nu dus bezig met die wordwrap...
Het gaat allemaal niet zo heel erg snel maar tot nu toe gaaat het redelijk.. alvast bedankt voor alle hulp
En ik hoop dat het nu gaat werken en werkt het niet dan post ik weer reply :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dat wordwrappen lukt niet echt :S
zou iemand me daarmee op weg kunnen helpen

Acties:
  • 0 Henk 'm!

Verwijderd

Dit zou moeten werken nu kan het zo zijn dat hij de br's print of de \n's maar daar moet je er dan 1 van weg halen.

Als het niet lukt laat het ff weten.

PHP:
1
2
3
4
5
6
   $newtext = wordwrap($text, 20, "<br />\n");

  for(i=0,i<count($newtext), i++)
   {
       cpdf_text($cpdf, $newtext[i], $linkermarge, 760);
   }


Als je wilt zien hoe een array eruit ziet kan je deze het besten printen als volgt:
PHP:
1
2
3
  echo "<pre>";
     print_r($array); 
  echo "</pre>";


Als je een array op een andere manier uit wilt lezen dan met eeen for loop kan het ook zo:
PHP:
1
2
3
foreach ($array as $key=>$value){
   echo $key." - ".$value."<br>";
}


Hoop dat je hier wat mee verder komt, nog een handige tip als iets je niet lukt gewoon een nieuwe pagina met een klein voorbeeldje maken en daar testen dan verneuk je je eigen code niet.

[ Voor 103% gewijzigd door Verwijderd op 30-08-2005 14:21 ]

Pagina: 1