PHP generálta vektorgrafikus kép mérethelyes vágása

 ( plt | 2018. február 12., hétfő - 10:40 )

Egy hobbi weboldalamon generálok vektorgrafikus képeket, ahol cél, hogy a kinyomtatott változat mérethelyes legyen.
Nehézség a feladatban, hogy a képek egy 210mm*420mm-es téglalapba férnek bele, azaz széltében A4, hosszában A3 a méretük.
Elvileg egy A4-es nyomtatón kinyomtathatóak lennének, maximum két darabban.

Jelenleg a képeket SVG-ben és PDF-ben tudom előállítani, de egyiknél sem tudom elérni, hogy a nyomtató darabolja, és ne átméretezze a képet.
A görbék generálása összetett, így az nem járható út, hogy eleve A4-es méretre vágva generáljak részgörbéket. Valamint, ha valakinek van A3-as nyomtatója, attól sem venném el a lehetőséget, hogy az egészet egyben kinyomtathassa.

Innentől érdekelnének a megoldási ötletek. (Ha lényeges, a pdf generálásához Tcpdf és Fpdf könyvtárakat használok.)

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Szerintem muszáj lesz memóriában szétvágni azt a képet. SVG-ben létezik olyan, hogy a határoló dobozt a tartalomtól kisebbre veszed, opcionálisan fehér négyzetet tehetsz a lelógó rész fölé és végleg eltűnik. Ezt eljátszod 2-szer, egyszer az egyik, másodszor a másik felét takarod le, és megvan a két képed. Amúgy meg biztos ki lehetne számolni egyenként minden görbére, hogy a két oldal határán épp hol érne véget, biztos szebb lenne így, de mindegy.

Ezután lehetőségek:
1. https://www.w3.org/TR/2004/WD-SVG12-20041027/multipage.html
2. Tedd bele egy 2-oldalas PDF-be azt a 2 db SVG-t.
3. Két SVG-t tegyél ki a HTML oldalra, query stringben add át, hogy épp melyik felét kéred a PHP-tól. De kétszer fogod elvégezni a számítást szerver oldalon. Vagy szerver oldalon egyszer számolsz, és JS-ben csinálod a kitakarásos trükköt.

Matematikailag ki lehetne számolni a görbék szétvágását, de az nagyon güris lenne.
A kitakarás jó ötlet, köszönöm! Azt már most is el tudom érni, hogy egy A4-es pdf-be csak annyit látok a görbékből, amennyi elfér az A4-es oldalon.
Ezek után, ha eltolom, és a következő oldalon meg a másik felét mutatom, az jó.
Nem szép megoldás, de ez legalább működhet.
A csúfsága, hogy A3-as nyomtató esetén is rákényszerítem a kétszeri nyomtatásra, vagy csinálok egy A3-as verziót is.
Reméltem, hogy van olyan kód PDF-ben, ami kötelezi a nyomtatót, hogy a szélességet ne változtathassa - legalábbis defaultban ne.

A PDF teljesen oldal-orientált, nagyon aprólékosan minden oda van pozícionálva valahova, amit neked nem fog semmilyen printer okosan transzformálni.

Egy esetet kivéve. Ha legenerálod az A3-at, akkor azt valaki majd ki tudja nyomtatni szépen A3-ban. De ha A4 nyomtatójuk van, akkor egyrészt annak muszáj margó nélkülinek lennie, másrészt a kliens programnak tudnia kell ezt a fajta szétosztást. De én pl. a saját nyomtató beállításaimban ilyet nem látok, és a nyomtatóm is hagy némi margót. Tehát hol fog működni, hol nem. Ha már van margó, akkor a 2xA4-es megoldás már egyszerűen nem úgy néz ki, mint az 1xA3-as.

"Ha legenerálod az A3-at, akkor azt valaki majd ki tudja nyomtatni szépen A3-ban."
Kivéve akkor, ha az A3 lapon a margókon kívül kéne nyomtatni, mert akkor is összenyomott lesz az egész, ha arányosan akarja kinyomtatni, vagy lesznek lelógó részek.

A lényeg: ha A3/A4-re tervezünk ÉS desktop nyomtatásra, akkor mindenképpen hagyni kell margót.
Sajnos nyomtatótól függ, hogy mekkora a margó, a nyomtatódriver tartalmazza ezt az információt.

A PDF kliens feladata eldönteni azt, hogy mit küld ki a nyomtatóra. Az Adobe képes tile-olni a nagyméretű dokumentumokat:
https://helpx.adobe.com/acrobat/kb/print-posters-banners-acrobat-reader.html

Ezt a problémát nem generálói oldalon kell megoldanod szerintem.

Ez tök jó. De ha tényleg lapszéltől lapszélig ér a rajz, akkor a margók miatt 2 helyett 4 darab A4-es lapra fog kiférni a cucc. Azt is lekezeli, vagy annyival összenyomja?

Beállíthatod, hogy mennyi legyen az overlap, százalékban. Nyomtat a papírra vágójeleket, aminek a segítségével pontosan levághatod a margókat az összeillesztéshez.
Persze ekkor tényleg 4 lap kell hozzá, de ilyen ez a desktop nyomtatás. Ez nem nyomdatechnika, sose feledjük el.

Esetleg nézd meg a pdfposter-t. Parancssoros, és ha jól rémlik, vágójeleket is rak...

----------
Were antimatter present, its detection would be quite simple and straightforward. The most rudimentary detector suffices: simply place it down and wait. If the detector disappears, antimatter has been discovered - get out fast!