[php] cpdf. lange zinnen.

Pagina: 1
Acties:

  • Erikie
  • Registratie: September 2000
  • Laatst online: 07-09 14:24

Erikie

www.erikie.nl

Topicstarter
Ik kom er niet meer uit. Ik kan de functie niet vinden. ff stukje code :

cpdf_text($cpdf, "$ArrayLine[$a]", $Xpos,$Ypos,0,0,3);

Harstikke leuk, maar mijn probleem is, : in de $ArrayLine staan erg lange zinnen. (naja, laten we zeggen 200 tekens lang). Als ik dit dan in pdf bekijk (acrobat) dan zie ik dat ie die zinnen niet afkapt, en op de nieuwe regel begint. Ik moet op 1 of andere manier een functie zien te vinden waar het eind van de pagina voor deze functie geldt. Ik heb alle cpdf functie's al uitgezocht, maar ik kom er gewoon domweg niet uit...

ff snelle link van t probleem (moet je wel acrobat hebben geinstalleerd).

http://62.163.108.235:666/workshop_tool/index.php

Wieowie kan zijn ervaringen uitspreken over cpdf en linebreaks (als ze zo heten).

traktor scratch!


Verwijderd

En het regeleinde zit altijd op dezelfde plaats? (na hetzeflde aantal tekens dus ongeveer?)

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 07-09 20:07

HenkS

Da_king alias HenkS

dat probleem heb ik dus ook op mijn autosite, mensen kunnen dus bij een auto bijzonderheden opgeven, maar soms doen ze dat met komma's tussen de woorden en absoluut geen spaties erbij, dus lijkt het 1 lang woord... dus dan wordt de opmaak beetje verneukt...

nu kun je natuurlijk wel wordwrap gaan gebruiken, maar hoe weet je dan wanneer.... want een lang woord moet gewoon wel kunnen, en niet dat je toevallig een woord zoals benzine ofzo, op het einde staat, en dit dan in tweeen wordt gehakt... want dit kan dan rustig gewoon op een nieuwe regel beginnen...

  • Erikie
  • Registratie: September 2000
  • Laatst online: 07-09 14:24

Erikie

www.erikie.nl

Topicstarter
een wordwrap? op de array string in php, of is daar een aparte functie voor in ClibPDF??

traktor scratch!


  • Bas_f
  • Registratie: Januari 2001
  • Laatst online: 25-08 14:27
Ik heb ooit ook es zo iets gehad, alleen niet met PDF.
Ik heb als standaard 80 chars per regel genomen, en vanaf char 80 ga je achteruit zoeken (strrpos) naar een spatie, of scheidings tekens.
Als je bij char 0 bent en niks hebt gevonden wordt 't gewoon hard afkappen bij char 80.

Ik hoop dat je er iets aan hebt.

...


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Met de functie cpdf_stringwidth zou je kunnen kijken of je tekst al te breed wordt. Door telkens een woord toe te voegen en de lengte te controleren weet je precies welk woord er niet meer bij zou moeten horen en op de volgende regel gezet zou moeten worden.

Deze functie werkt met werkelijke afstand en niet met aantal karakters, hierdoor kun je wel meer i's dan m's op een regel zetten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • eborn
  • Registratie: April 2000
  • Laatst online: 12:50
Er is toch een functie voor in PHP? Dan geef je een regellengte mee en dan kapt hij het voor je af. Even zoeken...

Gewoon de wordwrap functie zie ik :)
http://www.php.net/manual/en/function.wordwrap.php

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Die functie breekt af op het aantal letters. Zodra je niet een fixedwidth font gebruikt is dat erg lelijk.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Erikie
  • Registratie: September 2000
  • Laatst online: 07-09 14:24

Erikie

www.erikie.nl

Topicstarter
Op maandag 13 mei 2002 10:12 schreef Janoz het volgende:
Met de functie cpdf_stringwidth zou je kunnen kijken of je tekst al te breed wordt. Door telkens een woord toe te voegen en de lengte te controleren weet je precies welk woord er niet meer bij zou moeten horen en op de volgende regel gezet zou moeten worden.

Deze functie werkt met werkelijke afstand en niet met aantal karakters, hierdoor kun je wel meer i's dan m's op een regel zetten.
Yes, hiermee ga ik het proberen, alleen hoe zet ik dan de rest van de woorden op de volgende rij?! met cpdf_continue ofzo?! en dat per woord invoegen, dan moet ik dus in de array op spatie's controleren?! pfoe.. wordt een dagtaak :)

traktor scratch!


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Mwah valt mee. Je kunt het beste zelf een functie 'printEenBlokjeTekst' maken die als parameters het document, de tekst de breedte en de startpositie meekrijgt. Vervolgens neem je met een tokenizer oid telkens een woord uit de tekst. Telkens kijk je of de buffer tot nu toe + het volgende woordt langer is dan de vooraf ingestelde waarde. Als dit niet het geval is plak je het volgende woord aan de buffer en neem je een nieuw woord uit de text. Als dit wel het geval is print je de buffer en ga je verder op de volgende regel met idd cpdf_continue (dacht ik... anders ff in de manual kijken).

Aan het eind zou je de huidige y positie terug kunnen geven zodat je weet tot waar de tekst gekomen is en je dus weet waar je volgende tekstblok moet beginnen.

Je zou zelfs wat font opties mee kunnen geven aan de tekst zodat je in de functie ook de text_start en text_end functies kunt zetten. Je hoef dan uiteindelijk in je programma alleen maar aanroepen naar die nieuwe functie te doen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Erikie
  • Registratie: September 2000
  • Laatst online: 07-09 14:24

Erikie

www.erikie.nl

Topicstarter
beetje ouwe koe uit de sloot gehaald, (1 week) maar ik heb t op deze manier gedaan.

Ik heb gewoon de tekst in een array gestopt, en m dan laten exploden.. Zo kan ik per array[variable] counten hoeveel letters ie bevat. Als het dan onder een standaardwaarde (zeg 200) zet, plak m er dan achter aan, daarna mag ie m met cpdf_continue de volgende regel vullen..

thenks!


code : (ps, ik weet zeker dat t veel gemakkelijker kan, maar t werkt :) )
PHP:
1
<?for ($SearchLine = 0 ; $searchLine <= count($ArrayLine)+1; $SearchLine++){                                //*    if ($ArrayLine[$SearchLine] == "geb_verw.csv"){                                                     //*        $StartLine=$SearchLine;                                                                         //*        break;                                                                                            //*    }                                                                                                    //*}                                                                                                        //*for ($SearchLine = 0 ; $searchLine <= count($ArrayLine)+1; $SearchLine++){                                //*    if ($ArrayLine[$SearchLine] == "functie_buiten.csv"){                                                 //*        $EndLine=$SearchLine;                                                                             //*            break;                                                                                            //*    }                                                                                                    //*}                                                                                                        //*                                                                                                        //*for ($a = ($StartLine + 1); $a <= ($EndLine); $a++){                                                    //*                                                                                                        //*        $AllLine = $AllLine.$ArrayLine[$a];                                                                //*                                                                                                        //*}                                                                                                        //*$Words = explode(" ",$AllLine);                                                                            //*$CountWord = count($Words);                                                                                //*                                                                                                        //*cpdf_set_leading($cpdf, 12);                                                                            //*cpdf_set_font($cpdf, "Helvetica", 8, "WinAnsiEncoding");                                                //*cpdf_text($cpdf, "", 26.5*$cm,26.5*$cm,0,0,3);                                                            //*                                                                                                            //*for ($Max = 0; $Max <= $CountWord; $Max++){                                                                //*    $Chars = $Chars + strlen($Words[$Max]);                                                                //*    $Zin = $Zin.$Words[$Max]." ";                                                                        //*    If ($Chars >= 80){                                                                                    //*        $Zin=str_replace ('functie_buiten.csv', '' , $Zin);                                                //*        cpdf_continue_text($cpdf, $Zin);                                                                //*        $Chars = 0;                                                                                        //*        $Zin = "";                                                                                        //*        }                                                                                                    //*}                                                                                                        //*$Zin=str_replace ('functie_buiten.csv', '' , $Zin);                                                        //*    cpdf_continue_text($cpdf, $Zin);    ?>

traktor scratch!

Pagina: 1