Project is on hiatus because I no longer work for the library I created this project for. So I do not currently have a way to test with physical printers in a live environment.
Leap Printer was started to automatically select between two printers when printing from III's Polaris ILS. This project is aimed at the browser based portion of the ILS aka LEAP.
The library I am currently working for prints transit/checkout slips to a receipt printer and hold slips to a HP printer.
Transit/checkout slips need to be printed to a receipt printer w/ portrait orientation. Hold slips need to be printed to 8.5x11 paper w/ landscape orientation.
To achieve the above behavior the program captures print jobs sent to a local printer.
The printer uses port \\.\pipe\PolReceipt with the Text/Generic driver. The printer's name is "Virtual Printer".
The software captures the data, parses it to determine what is being printed, and then formats and sends the data to the appropriate physical printer.
I'm in the middle stages of this C# project. The project is currently run through the console (command prompt) w/ a system tray icon to properly exit the program.
The final print is sent to either "Microsoft XPS Document Writer" or "Microsoft Print to PDF" printer for testing. XPS handles receipt printer slips while PDF handles hold slips.
The program looks for keywords to determine the printer, paper size and orientation.
Visual Studio 2017 project: LeapPrinter.zip
The program can be started by executing the LeapPrinter.exe in "LeapPrinter\bin\Debug" or load the Visual Studio project file.
If you want to change the default printers then start the program like so: leapprinter "name of receipt printer" "name of letter size printer". Example: leapprinter "EPSON TM-T88V Receipt" "HP LaserJet 4100 Series PCL6"
The Debug folder also contains html files that are used for testing.
Chrome, Internet Explorer 11, and Microsoft Edge have all produced good receipts when using the test HTML files.
Firefox does not currently work because the printer uses the text/generic driver and the font Leap uses isn't fixed-width. Found this out here (superuser.com). If the HTML files use fixed-width then everything works.