PDF nyomtatás Linux parancssorból vagy PHP-ból

Fórumok

Sziasztok!

PDF fájlokat kellene PHP-ból kinyomtatni. A web szerver linux gépen fut.
Teszt alanyunk az irodai Canon iR2230 nyomtató.
Google két megoldást mondott: egyik az lpr parancs hívása, másik a phpprintipp library, ami korábbi munkahelyemen már működő megoldás volt, csak ott nem én állítottam be, hanem egy hozzáértő :)
Ubuntu szerverre feltelepítettem a drivert (UFR II), hozzáadtam a nyomtatót a hozzá való PPD fájllal.
lpr -P canon teszt.pdf
parancsot meghívva a nyomtató felizzik, majd fény és hagjelzéssel, illetve a kijelzőn megjelenő "HIBA" felirattal közli, hogy valami nem tetszik neki. Részleteket nem közöl.
Annyit látok, hogy oldalszámnak 0-t ír, mintha nem tudná a kapott adatokat feldolgozni.
Korábban windows gépről ipptool-lal teszteltem közvetlenül IPP-n kereszül, hasonló eredménnyel. Úgy kizárólag JPEG, TIFF, és korábban "nyomtatás fájlba" által generált prn fájlokat hajlandó kinyomtatni. Linux parancssorból jelenleg a jpg se akar menni, cups teszt fájlokat se akarja kinyomtatni.

Nem vagyok se linux se nyomtató szaki. A nyomtatónak tudnia kellene a PDF fájlokat alapból értelmezni? Nem kell hozzá se nyomtató driver, se pdf kezelő program, ami nyomtassa?
Én hagyok ki valamit? A nyomtató sz*r? Van valami áthidaló megoldás? Pl. valami parancssori pdf nyomtató program?

Köszi előre is

Hozzászólások

Az "lpr" arra szolgál, hogy a nyomtató spoolerbe bele tudd önteni a nyomtatandó anyagot. Ez a spooler klasszikusan vagy a BSD-féle lpd, vagy újabban a CUPS. Ez utóbbi rendszereket kell úgy konfigurálni, hogy a beleöntött anyagból képes legyen előállítani a nyomtatónak megfelelő adatformátumot (tipikusan Postscript vagy PCL) nevezzük ezt a konverziót elvégző terméket "filternek" vagy "nyomtatódrivernek". Aztán persze az is lényeges, hogy olyan formátumú anyagot önts rá, amiből ez a filter tud dolgozni. (Ez tipikusan Postscript)

Tehát:

a.) alakítsd át a forrásanyagot (jelen esetben: PDF-et) Postscriptté (erre csillió konzerv megoldás van) és a Postscriptet küldd rá az lpr-re. Ha a nyomtató ért Postscriptet, akkor készen is vagy, ha nem ért Postscriptet, akkor a printer spoolerbe (lpd, cups) fűzz bele egy filtert (drivert) ami átalakítja ez a beérkező Postscript adatfolyamot olyanra, amit a nyomtató képes megérteni. (pl. PCL)

b.) üthetsz két legyet egy csapásra, és a PDF->Postscript konverziót is beleépítheted a spoolerbe, már csak azért is, mert a Postscript->PCL konverziót jellemzően a Ghostscript nevű szoftverrel szokás megoldani, az pedig képes - némiképp limitáltan ugyan - de PDF-ből táplálkozni.

Kiegészítés:

Ha CUPS van, akkor egyes lépéseket egyszerre meg tudsz lépni, tehát a fenti b.) variáció gyakorlatilag "out of box" fennáll. Ezt mondja a manual:


CUPS understands many different types of files directly, including text, PostScript, PDF, and image files. 
This allows you to print from inside your applications or at the command-line, whichever is most convenient!

Na próbálkoztam az ubuntu saját driverével (pxlmono) és az alul linkelt oldalról letölthető ppd fájllal is, de semmi eredmény.
Másik canon nagy nyomtatót (ir 2025i) se tudtam beállítani, az meg hülyeségeket meg hibaüzenetet nyomtat. Canon úgy látszik bajos.
Találtam egy USB-s HP lézernyomtatót, azt a hp-setup programmal be tudtam állítani, nyomtatja szépen a pdf-et, demónak jó lesz ez is.

De jövőben majd kelleni fog a tudás, hogy lehetőleg minden nyomtatót be tudjunk állítani. Esetleg tudnál pár részletet mondani a filterek spoolerbe fűzéséről, vagy hogy hol találok erről érthető infót?
Köszi a segítséget!

Update: .ps fájllal is próbálkoztam, de azt se szerette. Ezek szerint postscript se nyerő?

ha cups van a gépen, az alapból tud pdf-et nyomtatni.
Ha mégsem, akkor esetleg meg lehet próbálni -Tpdf kapcsolót.
CUPS doksi itt.

Én is kapcsolódnék a témához, mert úgy gondolom, hogy értetek hozzá. Van egy Océ VarioPrint 2065 hálózati nyomtató, amivel eddig nem volt baj, mert Windows-os gépekről használtuk és az olcsó PCL nyomtatási lehetőséget tudta. De lassan Linuxra váltunk (XP támogatás lejár), a PostScript támogatás pedig drága hozzá. Hogyan lehet megoldani a PCL driver (PPD) átírásával, hogy nyomtatni lehessen rá? A leendő rendszer Novell SuSE lesz.

Ha tud PCL-t, akkor nem kell atirni semmit, mert a) a rendszer alapbol rendelkezik a megfelelo PPD-vel (esetleg egy kompatibilis tipusssal), vagy b) kiszeded a windowsos driverbol a megfelelo PPD-t, es feltelepited a cups-ra.

Az ilyen majdnem noname tipusok titka amugy, hogy valojaban valami nagy gyarto eszkoze lapul meg a borzalmas nev mogott, erdemes utanajarni, kis szerencsevel van egy kompatiblilis Samsung/Canon/HP/... eszkoz, ami minden rendszerben megtalalhato.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

hú köszi az eddigi infókat, de már csak hétfőn tudom kipróbálni a dolgokat, addig is okosodok cups témában
itthoni samsung nyomtatót sikerült beüzemelni a splix driver telepítésével apt-ból
az irodai géphez is írnak valamit:
http://www.openprinting.org/printer/Canon/Canon-imageRunner_2230
elvileg alapból benne van, webes felületen kiválasztható, megpróbálom azzal vagy a letölthető ppd fájllal