Automatisch een bon printen vanuit PHP
Probleem:
Ik loop tegen een probleem aan. Misschien bestaat er al een oplossing? Ik zat zelf te denken aan een meta tag die dan binnen een bepaalde tijd een bestand uitvoert waar de print code in verwerkt is. Ik wil printen naar een meta III bonnenprinter onder een Windows 10 Pro, Wamp server. Echter er komt aldoor het schermpje van Windows om de printer te selecteren en dat moet weg. Hopelijk heeft iemand een idee.
Bedoeling:
Het gaat erom dat er een bestelling wordt opgenomen aan de tafel, zodra er op bevestigen is gedrukt moet er bij de bar een bonnetje geprint worden waar dan de bestelling (drinken en eten) op staat. Alles werkt al twee jaar van mijn zelf geschreven kassa programma, echter willen ze nu deze extra optie erbij. Tot heden had ik het zo dat je op de knop printen moest drukken en dan kon je de juiste printer kiezen en dan werd er geprint. Maar die tussenstap van printer kiezen wil ik dus kwijt en de bon gelijk laten printen zonder dat je nog een printer moet kiezen.
Situatie:
Het gaat om een mini camping met restaurant, dus ze hebben twee typen printers aangesloten, een voor de camping (A4 formaat) en een voor restaurant bezoekers (Bonnenprinter) en alles loopt via hetzelfde kassaprogramma, aangezien camping gasten ook het restaurant bezoeken en aan het eind van hun verblijf de rekening betalen van de camping en het restaurant.
De vraag:
Hoe omzeil ik de Windows melding om printer te selecteren vanuit php.
Het ligt eraan of je een netwerkprinter hebt, en op welke manier deze bestanden accepteert. Ik lees hier en daar dat sommige printers via FTP bereikbaar zijn, zodat deze de pdf kunnen afdrukken.
De A4 printer zit op het netwerk via WiFi en de Meta III via USB direct op de kassa computer. Met een tablet wordt er langs de tafels gelopen. Dus met tablet bestelling opgenomen, bestelling bevestigen, dan dient de usb Meta III bonnenprinter op de kassa computer de bestelling uit te printen.
Misschien kent de bonnenprinter of de software een API, maar dan moet deze dat wel ondersteunen en een eigen IP-adres hebben.
Persoonlijk vraag ik me af of PHP wel de beste zet is voor een POS-systeem.
Yep, ik snap je volkomen! Maar ja de gebruikers denken altijd ik wil dit dus het kan, maar andere apparatuur aanschaffen is er niet bij. Dus ik moet het doen met de bestaande configuratie. In het ergste geval moeten ze toch op een knopje drukken om de Meta III printer te kiezen.... Heb zelf al zitten puzzelen en proberen met mijn eigen label printer om die direct aan te sturen vanuit Php, tot heden geen succes. Zelfs met een meta tag komt Windows met Welke printer?????
Edit:
Het integraal quoten van het eerst voorgaande bericht is niet nodig.
Gewijzigd op 13/01/2020 10:07:57 door - Ariën -
Bestaat er iets als CUPS onder Windows?
Via Linux kan dat in elk geval
Toevoeging op 13/01/2020 10:04:02:
gaat in mijn geval om netwerk printers. Mogelijk maakt dat het gemakkelijker
Richt je eens op commandline binairies die eenvoudig iets naar je vast ingestelde printer kan sturen.
Als je de Server editie van Windows hebt, zou het volgens mij wel kunnen:
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/print-command-reference
Gewijzigd op 13/01/2020 10:14:46 door - Ariën -
https://www.websitesupport.info/hc/en-us/articles/360024709193-Bypass-the-Print-Dialog-Box-in-Chrome
Chrome kiosk gaat ook niet, wel een goeie optie maar er zijn, lees er moeten, twee printers in Windows geconfigureerd zijn, 1(Netwerk/ Wifi) om rekeningen op A4 uit te printen en een voor de kleine kassa bonnetjes(USB).
De command line opties ga ik nog eens uit proberen, eerst zien of ik een fictief ip adres aan een usb poort kan plakken....
Zal me daar morgen verder in verdiepen, was vandaag al vanaf vanochtend 05:00uur tot 15:15 uur aan het werk voor de baas....
Gewijzigd op 13/01/2020 16:00:16 door Paul Balen
Ik ben alleen bang dat Windows 10 Pro die commandline-opdrachten niet kent. Met Windows Server heb je meer vrijheid in server-zaken.
Dat is dus wat ik van de week wil gaan proberen, en kijken welke wel of niet werken onder Windows 10 Pro. In het verleden regelmatig tegen gekomen dat het voor een Windows Server versie systeem is en dat sommige van de commando's ook op de "lichtere" versie van Windows werken. Kwestie van uit proberen.... nee heb ik en een ja kan ik misschien krijgen/vinden :)
Gewijzigd op 13/01/2020 17:15:35 door Aad B
- Ariën - op 13/01/2020 16:02:50:
Ik ben alleen bang dat Windows 10 Pro die commandline-opdrachten niet kent. Met Windows Server heb je meer vrijheid in server-zaken.
Hebben we het hier over de normale Opdrachtpromt, dan zou ik eens kijken of PowerShell zoiets heeft, lijkt me stug als dat niet zo is.
Ik heb nu een aantal handleidingen weten te vinden met alle commando's die ik naar de metaspace t3 kan sturen. Dat wordt nog wel een puzzeltje heb ik gezien.
Daarnaast heb ik drivers gevonden om de printer rechtstreeks aan te sturen vanaf tablet, android en/of IOS, smarttelefoon etc. Net de vraag gesteld aan de eigenaren van de printer of er een netwerk poort op zit. Dit model printer heeft of een seriële extra ingang of een netwerkpoort naast de USB aansluiting. Misschien zelfs het geluk dat ik hem via draadloos (WiFi) netwerk aan kan sturen vanuit een tablet of smarttelefoon.
Ga hier verder mee aan de slag en zie of ik dan zonder al te veel omwegen direct kan printen zonder dat Windows er tussen door komt om een printer te kiezen en dan pas te kunnen printen.
Nogmaals bedankt voor de vele tips en het meedenken, met de gegeven info van jullie allen kom ik denk ik nu wel een stap dichter bij wat ik wil gaan doen.
Kun je niet gewoon via sockets een printer rechtstreeks via het netwerk instrueren? :/
CUPS zit daar nog wel tussen, maar ook zonder zou dat moeten kunnen.
Voor de labelprinter heb ik het taaltje van die printer uitgezocht. En daar stuur ik dan een lap ASCII naar toe met de juiste codes voor opmaak en posities en uiteraard de tekst.
Ik denk dat het een stuk ingewikkelder wordt als je de clients het printen laat doen. Want dan moet de client (tablet) de printer kunnen benaderen en weten wat voor merk printer het is ivm de drivers.
PHP kan wel vanaf de server met netwerk-apparatuur praten. (curl etc?)
Via usb wordt het lastiger.
Of je moet via de command line dingen aantrappen.
Opgelost met de volgende stappen:
Naast de tabel waar bestellingen in weg geschreven worden een tweede tabel toegevoegd met printbestelling.
Op het hoofd scherm staat bovenin een knop Alles is geprint die groen is als er niets in de tabel printbestelling staat.
Is er een bestelling opgenomen dan komt deze zowel in de tabel bestellingen als in de tabel printbestelling.
De knop Alles is geprint verandert van groen naar rood met de tekst Print Bestelling
Klik je op de knop dan komt er een scherm die met body onload=javascript:window.print(); return false;
Gelijk het Windows printer scherm laat zien om de juiste printer te kiezen.
Zodra deze is afgedrukt dan wordt de tabel printbestelling geleegd en verandert de knop op het hoofd scherm weer van rood naar groen.
Deze methode werkt nu voor mij, misschien dat er nog tips en goede ideeën zijn dan hoor ik het graag!
In ieder geval een ieder hartelijk bedankt voor het meedenken hier op dit forum.
Gewijzigd op 08/02/2020 07:48:23 door Paul Balen
Voor een klant heb ik een systeem geschreven op basis van fPDF dat PDF bestanden genereert, die worden middels FTP lokaal gehaald en daar m.b.v. een gratis programmaatje (PDFtoPrinter.exe) naar de printer gestuurd. Beetje omslachtig, maar werkt feilloos.