Logging raw data from usb printer and using print spooler - c#

I know similar question have been asked before like here and a few other places.
but I want to ask something about the basic concepts.
So, i have been assigned a project i have to make a "usb logger". The main function of the project is to capture data transmitted from PC to Usb printer on the logger software so raw data of each printout can be saved into a file for logging and analysis.
I was told that i can use a third party tool like usbpcap but I suggested why dont we get directly data from print spooler. as far as i know print spooler maintains a queue of the data to be printed.
before i start working on this project i want to ask a few basic questions
1) what is raw data in this scenario ?
2) can I achieve this by getting directly from spooler or is there another way.
3) which one will require more pc resources communicating with usb port or spooler?
I just need to understand the domain completely. (i will be developing this project using C#)
Thanks

If what you need to do is capture the entire output in raw form, the easiest way to do that is with a port monitor. A port monitor sits between the spooler and the physical output device and writes the raw data to that device, so it's the natural place to capture such data.
What you need to do is install the Windows WDK and take a look at the sample port monitor. You should be able to use that with very few modifications. Mainly, you just need to add code to write the data to a file somewhere in addition to writing it to the printer. You also need to change all the code dealing with the registry since the sample assumes it is the default port monitor and writes to registry keys reserved for Windows.
Just be aware the version 4 print drivers (ie, Win8) do not support custom port monitors. However, Win8 still supports v3 print drivers, which should cover any printer currently out there.

Related

How to store fingerprint scans on my computer instead of inside the scanner?

I would like to know if there are fingerprint scanners which doesn't save locally their fingerprint data, but they just send raw data to he attached computer.
If yes, which type of scanner should I use? I would prefer to use c# as programming language of the handling application, but as long as handling fingerprints on pc is possible I will learn any language you'll raccomand me
All the fingerprint scanners that I have seen, allow you to save the fingerprint data (locally). Without doing adverts for any readers, the following "desktop" device groups work for a fact, as I have them:
digitalpersona (4000, 4500, 5100), Futronic devices (FS80h, FS88,..), UPEK EikonTouch (I can't locate the model number of the one that I am using.). There are larger, more expensive devices such as the Cross Match L SCAN Patrol, Suprema RealScan-G10, etc. from which iamges can also be read and saved.
The important thing is that SDKs are provided that allow you to interact with the readers: capture fingerprint image data which you can then save to a file or to a database. I am not sure about C# though: my exposure to SDKs is limited to C and Java.

Is there a way to programatically burn an ISO to USB?

I need to be able to make a self extracting image which will burn itself to a USB stick.
I'm thinking if there is a freeware tool (something like Rufus or MagicISO) which supports command line I may be able to put some kind of shell wrapper to detect the USB flash drive, and give it a GUI where the user can confirm they want to create an bootable ISO to that drive.
The self extracting file will also have to contain the ISO. The end result I am after is something like the Windows 10 Media Creation tool.
I would like to do this with C# .Net - it will be to run on a Windows platform.

I need an API that background prints PDFs in ASP.NET.WEBAPI

I'm working on a web-based KIOSK for in-house print jobs. We're a non-profit making small print publications. I've got a prototype created of portal that allows us to manage our publications (mainly PDFs), our print queues (mainly windows printers). I've been able to write C# code to use the FoxIt Reader to silently print PDFs from a RESTFUL API web service. It works. But in testing, I found serious limitations with the FoxIT Reader. Primarily, you can't specify how many copies to print, along with other basic settings. While it works, we often print in volume (50 or a hundred copies of multi-page PDFs. I could put in a loop to print the PDF N-times, but that's just ridiculous as it sends an ungodly amount of data and print jobs to the printer.
Anyways, I'm having difficulties locating a library (preferably open source) that gives me options for printing PDFs, specifiying things like # of copies, color / B&W, PRINTER MANAGES Color, etc.
I've been googling for a couple of days. I'm coming up empty. Those libraries I do come across are meant to work as WinForms foreground applications. What I need is an API that can Print PDFs as a background process (think windows service).
And just to be clear, by "Print PDF" I do not mean create a PDF. I mean take an existing PDF and sent it to a printer with options (# of copies, color/B&W, printer manages color, paper size, actual size vs. fit to paper size, orientation, etc.)
I really need some help. I'm coming up empty. Can anyone recommend an API that would help in this situation? The whole key I'm trying to avoid is FOREGROUND printing. I need to be able to spawn a print job as a background process, not interactive-user.
(My RESTFUL API web service takes an ID of a publication along with the quantity, page size, color mode (BW/Color)) and presently spawns a background print using FoxIt Reader. It does work. But without the options to specify quantity, page size, color/bw, PRINTER MANAGES Color, it's really useless for production.)
thanks in advance.
Please check out CLPrint. You have to either call the EXE directly or just place the PDF into a directory, but you can also specify the print options like you need. You should be able to run the process as any user.
http://www.terminalworks.com/command-line-printing
http://www.terminalworks.com/command-line-printing/downloads/documentation/CLPrintGuide.pdf (Page 6 are the command line options that I believe are relevant for you)

C# RAW Printing

I have a requirement whereby I need to be able to send an image to a printer.
The problem I have is that the target printer (and type) is not necessarily know at the time of printing and we could be sending to a zebra/intermec label printer or a standard HP office jet.
One further complication is that we have hundreds of printers to manage.
I do not want to have to install hundreds or printers and have to manually install a new printer every time we add one to the network. We maintain a list of IP Addresses and ports.
I have been considering installing a default printer (zebra, intermec, officejet) for each of the printer types.
When printing (using PrintDocument) I can send a print to the default printer of that type but mark the output as "PrintToFile". I believe this would then give me the raw print data (PCL?).
My thought process is that I should then be able to simply send the raw data to the printer? Unfortunately this does not seem to work and the raw text is simply printed.
Can anybody offer some advice/help?
Thanks in advance.
Raw files will not be sharper than the JPG files on printing, for me the best solution is to convert the RAW file in JPG

How to print to barcode printer from windows-mobile 2005?

I need to print to barcode printer (zebra) from windows-mobile 2005 (motorola hc700)
I search any sdk...not fount how to print.
thank's for any help
Check out the new mobile SDK from Zebra. It works with BlackBerry and Windows Mobile
ZebraLink Multiplatform SDK
This is based on my experience from 2006.
I had to use sockets in C# to send ZPL code to the printer. The "ZPL Code Generator" was hard-coded specifically to the one label format we needed; however, a template file with strategically placed search-and-replace strings would have been a better solution. There was a ZPL guide included with the printer and I'm sure you can get one from their website.
The Windows drivers were awful at the time and only produced garbage output. A couple developers before me had other approaches and both failed after a few weeks.
Edit:
Link to MSDN .Net Sockets. When
From my project, the port you should use is 6101. But that may be specific to the QL320.
The ZPL guides from Zebra are pretty good and I had little reason to devote the language to memory because it was just one small project.
Also, your printer may use EPL instead of ZPL but Zebra's guide for that is equally good. Either way, if the text you are sending to the printer is relatively constant, just create a file that correctly prints when streamed to the printer and then put in "replace me" blocks for your app to put in the dynamic values.
I'm also assuming that you are accessing this via a network. If your connecting it directly to the device, this changes slightly (I believe it gets mapped to COM port for most devices).
All that, and no mention of
http://www.zebra.com/id/zebra/na/en/index/products/software/label_design_software/label_vista.html
We developed our label code by creating the labels in label vista and using telnet to send them to the printer for printing. Repeat until you have it like you want, then code it.

Categories

Resources