If you ever have written Printer driver using Windows WDK - this project is for you! It is also relatively small and easy project, if you know Windows WDK well.
## Deliverables
Using Windows WDK you'll need to create a virtual printer that will:
1. Allow printed documents to be printed to PS or EMF formats (This is done in WDK already)
2. Create printer callback .NET C# interface, that will allow multiple applications and users at the same time print different documents, and receive corresponding output files through a callback interface calls (In other words allow printer to work in terminal service environment or Citrix). For instance, I have 2 applications MS Word and MS Excel running on the same in different user sessions. User Bill prints [login to view URL] document to it. User John sends [login to view URL] file as well. Printer spools the job, and when rendering is done, Bill will receive output of [login to view URL] through callback COM, and John will receive output of Excel.xls. So each user will receive only its own print jobs.
3. Make printer to notify implementer of callback interface of the following printer events:
? Document print started
o Document Name
o User name
o Printer Handle
o PrintJobID or handle
o PrinterSetting ([login to view URL])
? Call back OnPageBegin - let manage code to provide a Stream object where the content of
o PrintJobId or Handle
o Page number
o Output stream
o Output Stream format (is it possible to have an option to switch between PS and EMF?)
? Call back on PageEnd
o PrintJobId or Handle
o Page number
o [login to view URL] - page content
? DocumentEnd
o PrintJobId or Handle
4. Provide a sample C# code to post or upload produced output to a simple webpage.
5. Using callback at #3 provide a sample C# code to store each individual page as BMP
6. Using callback at #3 provide a sample C# code to change printer settings for the callback
7. Provide printer implementations for 32bit and 64bit operating system
8. Create MSI installation packages allowing user to install the printer from UI
9. Make sure printer supports Windows 2000, Windows XP and Vista, Windows 7, Windows Server 2008 (SP1 and R2), Windows Terminal Server
10. Bonus feature (20% of the total project price): Make printer to produce searchable PDF files of each printed page.
11. Bonus feature (10% of the total project price): Make printer to produce multipage TIF file of the whole document.
12. Bonus feature (30% of the total project price): Make printer to extract printed text from the printed document (if original document is not an image)
13. Bonus feature (10% of the total project price) : Create Admin pushable MSI files