Python týden Geek tričko zdarma
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Pouze tento sleva až 80% na kurzy Python

Diskuze: PHP s tiskárnou

Aktivity (2)
Avatar
bingoplayer
Člen
Avatar
bingoplayer:15.10.2018 10:04

Ahoj,
chtěl bych poradit jak nejrychleji a nejsnadněji naprogramovat script v PHP, který by uměl na základě http požadavku vytisknout soubor. Používáme ve skladu mobily pro čárové kódy apod. a k tomu je použitý klasický responzivní web. Ve webu/aplikaci přibylo tlačítko na "Vytisknou návody" a když na něj skladník klikne, tak se odešle http požadavatek na http://192.168.x.x/print.php?…[]=XX&id[]=XX­&id[]=XX

V parametrech je číslo objednávky a pole id položek v objednávce, ke kterým se má vytisknout návod.
Vše běží na Windowsech s XAMPPem.

Zkusil jsem: Udělal jsem tedy v print.php jednoduchý kód, který využíval soffice (libreoffice - obdoba OpenOffice) s pomocí kterého lze tisknout přes cmd. V PHP jsem použil funkci exec a tiskl jsem. Vše relativně funguje (když pominu nějaké problémy soffice) až do doby, kdy dva a více skladníku zašlou http požadavek. Pak se přeruší původní tisk a začne se tisknout podle nového požadavku.
Vytvořil jsem si i dávkový soubor, který frontu hlídal, tj. aby nikdo nepředbíhal, ale je to nespohlivé (hodně proměných na sobě závislých = nespolehlivý systém).

Chci docílit: Máte nějaký tip jak to udělat lépe? PHP se obávám budu muset držet. Zdrojové soubory pro tisk mohou být odt (pro mě nejlepší možnost), PDF nebo PDF spojené do jednoho souboru = netisknou se zvlášť návody dle produktů ale přes PHP merge si spojím všechny do jednoho souboru.

Kdyby tiskárny zvládaly tisk přes wifi a měly svoji IP, tak můžu použít PHP funkci fsockopen a vše by krásně fungovalo, ale to bohužel tiskárny nemají. Kdyby existoval program, který by k tiskárnám připojených přes USB k PC, dokázal virtuálně vytvořit síťovou adresu s IP, tak by to můj problém vyřešilo a mohl bych použít fsockopen, ale taková varianta asi není.

Hledal jsem i php_printer.dll pro PHP 7, ale bez úspěchu.

Editováno 15.10.2018 10:04
 
Odpovědět 15.10.2018 10:04
Avatar
Vladislav Ladicky:15.10.2018 10:53

Ak tlačiareň nemá tlač po sieti, nebude najmenší problém predradiť pred ňu malý, lacný print server s paralelným portom? A tlačiť po sieti naň? Niečo ako tento ?

 
Nahoru Odpovědět 15.10.2018 10:53
Avatar
bingoplayer
Člen
Avatar
bingoplayer:15.10.2018 11:20

Nejspíše by to bylo možné řešení, ale vzhledem k tomu, že těch tiskáren je docela dost, tak bych se chtěl pustit spíše cestou softwarovou abychom nemuseli nakupovat X dalších zařízení.

 
Nahoru Odpovědět 15.10.2018 11:20
Avatar
Odpovídá na bingoplayer
Vladislav Ladicky:15.10.2018 12:07

Neviem však o spoľahlivom riešení pre zastaralé tlačiarne. Pripojené cez paralelný port na Windows, či čo. Navyše, vyriešenie večných problémov s tlačou pre x užívateľov naraz za 50 éčok za každú zdieľanú tlačiareň, mi nepripadá ako prehnaná cena. Koľko hodín si sa a tým už bez úspechu sral? Koľko ešte budeš? Keď si to zrátaš na plate, už to asi stálo viac ako 50 eur a ani to dobre nefunguje.

 
Nahoru Odpovědět 15.10.2018 12:07
Avatar
bingoplayer
Člen
Avatar
bingoplayer:15.10.2018 12:59

Asi na tom něco bude a půjdu do toho. Jen pro upřesnění, s pomocí zařízení ziskám klasickou IP (ve vnitřní síti).
Zvolil bych tento typ pro USB:
https://www.czc.cz/…3548/produkt

Co mě mate je věta v popis produktu:
Zařízení může spolupracovat s až čtveřicí USB zařízení, jako jsou skenery, jednotky flash, reproduktory a webkamery, pomocí USB doku připojeného k serveru.

Mám to chápat tak, že pokud připojím USB hub, tak můžu napojit na printserver až 4 tiskárny? Na fotografiích vidím totiž pouze jeden konektor pro USB. Tiskárny poté budou na stejné IP ale jiné portu?

 
Nahoru Odpovědět 15.10.2018 12:59
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:15.10.2018 13:57

Otazkou je, proc je tve reseni nespolehlive? Mas tam vytvorenou databazi uloh? Nebo to posilas prilis rychle, prilis moc na tiskarnu? Stare i nove tiskarny maji limit pameti.
A proc tisk neprevezme windows planovac tisku? Ten by sam mel hlidat, co na tiskarnu a kdy posle. Mozna ho mas v nastaveni vypnuty. Mozna, ze to z cmd ignoruje planovac a posila primo na tiskarnu.

Print server, jako program na pc, obsluhuje vsechny tiskarny, ktere ma zadane.
Myslim si, ze ta veta znamena, ze dokaze zpracovat data ze 4 usb. Jakym zpusobem, to treba zkusit. Jestli to ma 4 usb porty nebo dat na jeden rozbocku.

 
Nahoru Odpovědět 15.10.2018 13:57
Avatar
bingoplayer
Člen
Avatar
bingoplayer:19.10.2018 11:34

Tak PrintServer je na cestě, doufám že pomůže. Jinak k print serveru je potřeba připojit HUB, aby uměl obsloužit 4 zařízení.

Ta nespolehlivost vzniká na straně soffice.exe (LibreOffice), což jsem si ověřil a bez velkých zásahů s ní nehnu. Vše jsem logoval a data se předavají jak mají (z mé časti kódu).

 
Nahoru Odpovědět 19.10.2018 11:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.