PHP pdf generálás oldalanként

PHP-vel kellene pdf-et generálnom, változó adattartalommal. Már a generálás során tudnom kellene, épp hányadik oldalnál tartok, ugyanis változó az oldalszerkezet. Jelenleg csak utólagos ellenőrzésekkel és újragenerálásokkal tudok dolgozni, ami elég időigényes lehet.

Dompdf-et használok a helyes ékezetek miatt, de ha más eszközzel egyszerűen oldható meg a probléma, az is érdekel.

Valami olyan műveletre lenne szükségem, ami egy-egy rész html kódot képes renderelni előre, és így meg tudja saccolni, mi a függőleges mérete.

De ha valakinek van működő másféle megoldása, azt is örömmel venném. (Gondolom, vannak páran még, akik jelenleg hasonlóakkal foglalkoznak.)

Hozzászólások

ugy erted nem lapszamozas kell? ha jol emlexem fpdf-el te mondod meg mit hova irsz es hanyadik oldalon tartasz.

neked aztan fura humorod van...

Igen, nem csak lapszámozás kell. És ha tudnám, hányadik oldalra akarok írni, akkor oldaltörést be tudnék szúrni. Nekem pont az a problémám, hogy nem tudom, meddig írhatom egymás után a tartalmat, úgy, hogy még az oldalon belül maradjak, és mikor lépek át új oldalra. Persze ennél bonyolultabb, mert oldalváltás előtt még van fix tartalmam, amit az oldal aljára kell írni, és aminek mindenképp ki kell férnie.

fpdf-el vagy valamelyik forkjaval (pl tfpdf) probald meg. hogy hova irsz az oldalon azt is te mondod meg, es ki is tudod olvasni hogy miutan beirtal valami hogy hol tartasz, te mondod meg mikor nyitsz uj oldalt, stb. bonyolultabb mind a dompdf de a feladat is bonyolultabb.

neked aztan fura humorod van...

Első körben én is a wkhtmltopdf-et javaslom, használtam már párszor.
Az oldaltörés nem tudom hogy van, eddig nekem nem volt rá szükségem, de itt írnak valamit: https://stackoverflow.com/questions/42005819/how-to-insert-a-page-break… 
Vannak hozzá composerrel letölthető csomagok (https://packagist.org/packages/knplabs/knp-snappy), mert maga a wkhtml nem egy PHP-ban írt dolog.

Ha ennél profibb cucc kell, akkor még évekkel ezelőtt használtam az Eclipse Birt-öt.
JAVA kell a futtatáshoz, meg néhány nap tanulás és tervezés, de a 10 év alatt több tízezer telefonszámlát generált le :)
És persze mindent be tudsz állítani.

Vagy én fogalmaztam félreérthetően, vagy csak nem értem, amiket írtok, de a fentiekben én nem találtam megoldást.

Álljon hát itt egy picit konkrétabban a probléma:

Számlaképet kell generálnom, és nem tudom, hogy melyik tétel melyik oldalra kerül. Márpedig a számla oldalainak képe eltér egymástól.

1 - Egy odalra annyi tételt kell tennem, amennyi kifér.

2 - A tételek mérete nem egyforma.

3 - A tételek után vannak összegzések, lábléc, aminek kötelezően még rá kell férnie az adott oldalra.

4 - Az oldalszámot már minden oldalon ismernem kell.

Egy tétel kiírása közben nem tudom, hogy még az adott oldalon vagyok-e, vagy sem. Ezt kellene tudnom, hogy hova kell oldaltörést betennem. Ha már tudnám, hogy mi hova kerül, nem lenne probléma, de pont ez a gond, hogy nem tudom, hogy az adott tartalom a pdf-be formázva mennyi helyet fog foglalni.

Ezeken a problémákon nem tudom, hogyan segít bármelyik pdf konverter. Vagy van bennük olyan művelet, amivel úgy tudok hozzáadni html tartalmat a pdf-hez, hogy közben mondja, épp hányadik oldalra kerül?

A Tex pedig teljesen ismeretlen számomra, azt nem tudom, a fentieken segítene-e. Lehet, mert - ha jól tudom - abban bármit is, meg még ezt azt is meg lehet csinálni, de ha lehetne, szeretném kicsit kevesebb időráfordítással megoldani a problémát.

 A tételek után vannak összegzések, lábléc, aminek kötelezően még rá kell férnie az adott oldalra.

Azaz ha nem férne ki akkor kisebbre vennéd a sorközt vagy a betűméretet?
BIRT-ben például nem kell ismernem az oldalszámot, csak megmondom neki, hogy hova írja ki, milyen formában, stb.
Olyat is meg lehet adni,  hogy a tételeket bontsa automatikusan ketté és a másik oldalon is legyen rajta a tételekhez tartozó fejléc, stb.
Vagy az összegzés legyen ott minden oldal alján. Profi cucc és ajánlott oktató videókat nézni hozzá.

Lehet tényleg nem értjük mit szeretnél? :)
 

akkor kisebbre vennéd a sorközt

Na, lehet, itt csúszunk el. A megjelenést nem én definiálom. Megkapom html template-ben, hogy így nézzen ki, milyen egy tételsor, milyen az összegzés, milyen a fejléc, a lábléc.

Nekem kellene belőle pdf-et összeraknom, de nem módosíthatom már. Csak annyi a befolyásom, hogy egy oldalra hány tételt teszek. Ezt jelenleg próbálgatással vagyok kénytelen eldönteni, mivel egy-egy tétel beszúrásakor nem tudom, hogy az még ráfér-e erre az oldalra, vagy sem. Tehát beszúrok annyit, amennyit épp gondolok, legenerálom a pdf-et, és ha megfelelő az oldalszám, akkor örülök, ha nem, akkor elkezdek elvenni a tételekből, mert átcsúsztak az oldalon. Emiatt n-szer kell generálnom a pdf-et. Ez azért elég gáz.

Egyáltalán nem szép megoldás, és erősen pazarlás is, de:

 

Állíts be egy fix sormennyiséget ami SOHA nem tölti ki az egész lapot (pl ha max 3 soros lehet egy tétel neve, és 30 sor fér a oldalra, akkor max 10 tétel/oldal).

Így ha minden tétel 1 soros akkor az oldal harmada lesz a számla, viszont ha minden tétel 3 soros akkor is elfér újragenerálgatás nélkül...

igy mostmar en sem ertem miert kell tudnod hogy hanyadik oldalra irsz.

a dompdf-ben az a jo, hogy ha valami nem fer ki akkor folytatja a kovetkezo oldalon, de a header es footer mindig "kifer" az adott oldalra. ettol fuggetlenul ha a tartalomnak a kovetkezo oldalon kell kezdodnie akkor azt is meg lehet neki mondani

neked aztan fura humorod van...

Ha jól láttam, a dompdf még az össz oldalszámot sem tudja generálás közben. Azt csak valami php-s trükkel lehet utólag, a generálás után visszaírni a pdf-be. Az aktuális oldalt tudja, de az össz oldalt már nem.

Amúgy, lehet, hogy igazad van, és ha tudnék jó fejlécet és láblécet definiálni, akkor nem kellene tudnom, mit hova írok. Ezt megnézem részletesebben, köszönöm.

Köszönöm, bár az én verziómban kicsit másként van már, de működik. Az oldalszámot ez legalább megoldotta.

Az utolsó problémám most az, hogy a header változó méretű lehet, tartalomtól függően, css-sel meg csak fix méretet tudok definiálni, és inline php-val sem tudom lekérni a fejléc valós méretét.

PDFLibet hasznaltam anno erre. Pantone, papirprofil is be volt allitva, mehetett direktben a nyomdaba amit generaltam vele.