If I have a printer hooked directly to a pc (a kiosk with a printer), how would I go about creating the ability for a web page ( web app) to print a jpg to the kiosks printer with no user intervention other than clicking a button on the page?
If I have a printer hooked directly to a pc (a kiosk with a printer), how would I go about creating the ability for a web page ( web app) to print a jpg to the kiosks printer with no user intervention other than clicking a button on the page?
Share Improve this question edited Jan 7, 2015 at 23:40 John Saunders 162k26 gold badges251 silver badges402 bronze badges asked Oct 15, 2008 at 23:21 JeremyJeremy 46.4k71 gold badges213 silver badges352 bronze badges4 Answers
Reset to default 8This has been asked several times already, and the result is always that you can't do it via normal web technologies (HTML + Javascript). The best you can do is open the print dialog, and that is by design. What you can do since you control the kiosks is create some kind of browser extension (like a flash object, .Net hosted control, java applet, etc) and make that available to your page, so that it handles the printing part for you.
I solve this problems in 2 different ways:
- Using ActiveX
- Creating a protocol like myprint://PRINT_DATA
if you created an application that hosted the web browser control (rather than using a web browser directly) you could control the printing process much more directly.
(assuming using Windows + IE is possible)
here are some example articles that might help:
Configure a WebBrowser Control
Using the Web Browser Control in your C# Applications
and the ever changing MSDN docs for the WebBrowser class, which has the Print method.
From the print method remarks: "You can use this method to implement a Print button similar to the one in Internet Explorer. This method prints the current document without requiring further user input."
The other ments cover a scenario where you want to print on the puter of the web browser.
However, if you want to print to a printer connected to the web server (ie, the machine running the web application), you can use regular C# printing with the following twist: http://support.microsoft./kb/184291/
In my context, my kiosk runs both the web server and the web browser, so that solved my problem.