Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create own XP printer driver

How would I create my own XP printer driver which will do the following:

  • print to file (probably XPS format)
  • put this file into a password protected ZIP file
  • email the zip file to a configured email address
like image 889
CJ7 Avatar asked Jun 18 '10 04:06

CJ7


People also ask

How do I create a virtual printer driver?

Yes, it's possible to create virtual printers. Please open Devices and Printers on the Start Menu, click on Add a printer, select Add a local printer, then select Use an existing port FILE: (Print to File), after that select a printer driver you'd like and finish the wizard.

Will new printers work with Windows XP?

This software is often supplied on a disk by the printer's manufacturer, but most printers will work with the drivers supplied with Windows XP. The driver software provided by the manufacturer may add extra features, such as giving you information about the ink levels.


3 Answers

What you need is not a printer driver. One named it Print Monitor. It is a DLL, which will be loaded in Spooler.exe process. The DLL gives Spooler at the initialisation phase a logical names of ports like LPT1:, FILE:, SPSPort: etc. The optput prepared with a printer driver must be send in any way to a destination device. This work does print monitors like "Standard TCP/IP Port" or "Local Port".

To write printer monitor you need download and install Windows Driver Kit (WDK or some time ago DDK see http://www.microsoft.com/whdc/devtools/WDK/default.mspx). More information about writing printer monitor see http://msdn.microsoft.com/en-us/library/ff563806(v=VS.85).aspx. Print Monitor is a DLL with some exported function (see http://msdn.microsoft.com/en-us/library/ff549405(v=VS.85).aspx). I recomment you to start with modifying of Local Monitor example LocalMon which full source sode you find after installing of WDK (see http://msdn.microsoft.com/en-us/library/ff556478(v=VS.85).aspx).

The most practical problem with writing of printer monitor is requirement of writing a real multithreaded DLL. You must be very carefull, understand and use EnterCriticalSection in all you functions. For debugging of printer monitor you should connect Visual Studio Debugger to the process Spooler. The rest is the same as writing of a standard windows Win32/Win64 DLL running.

UPDATED: One more small remark. If you don't want that the printer driver do anything with the data sent to the printer you can use generic printer driver. You will find it under "Generic" manufacture, printer with the name "Generic / Text Only". Examine some driver settings which you has (like CR LF settings)

like image 168
Oleg Avatar answered Oct 03 '22 13:10

Oleg


While I can't offer any specific advice, if I wanted to do what you describe, the first thing I would do is read through the source for PDFCreator — it's a Windows print driver which can spit out PDFs.

like image 31
David Wolever Avatar answered Oct 05 '22 13:10

David Wolever


Combine these programs, first cpri (for access through your code to a printer device)

It's in C language

http://sourceforge.net/projects/cpri/

then you can use

http://sourceforge.net/projects/pdfcreator

to get a virtual printer to generate the pdf, xps format output

like image 26
Hernán Eche Avatar answered Oct 05 '22 13:10

Hernán Eche