How to create a virtual printer in Windows?

40,028

Solution 1

When I did it (which about 12 years ago) I started with the postscript driver sample, replaced all the postscript-specific stuff (in my case, to write to a bitmap instead of generating postscript commands).

I also wrote a custom print monitor (the driver writes to the spooler, which write to a monitor): my monitor wrote to a file instead of e.g. to the parallel port.

However, printer driver architecture and/or the set of sample drivers may have changed since then.

Solution 2

You can look to the 'minidriver' development in the from Microsoft (Microsoft MDT), that might help depending on your exact needs. If the port you need to deal with (ie: you are going to take the data from an existing printer driver and want to process) you could look to the source code for RedMon. It doesn't support Vista/Win7 but might point you in the right direction.

Solution 3

This book maybe help you Developing Drivers with the Windows® Driver Foundation

A list of my links

  1. http://www.codeproject.com/KB/system/driverdev.aspx
  2. http://www.microsoft.com/whdc/ddk/winddk.mspx
  3. http://jungo.com/wdusb.html
  4. https://msdn.microsoft.com/en-us/library/ff554651.aspx
  5. http://channel9.msdn.com/posts/Rory/Driver-Development-and-Much-More-With-Mike-Calligaro/

Solution 4

One of the drivers you mention is open-source (GPL), maybe you could explore its source or adapt it: http://www.pdfforge.org/products/pdfcreator/download

Solution 5

Someone else already mentioned PDFCreator. Here's a more specific link to their code that's creating the printer, port and monitor. Despite being in VB, I can follow it as someone more used to C++, so I guess you can too. modPrinter.bas does the leg work. modMain.bas, from about line 28 onwards, calls into modPrinter.bas.

Share:
40,028

Related videos on Youtube

Terminus
Author by

Terminus

Updated on March 28, 2020

Comments

  • Terminus
    Terminus over 2 years

    I want to create a virtual printer driver for Windows. How and where can I start properly? The WDK has some printing drivers examples that do not seems a good introductory. MSDN also doesn't seems to be very helpful for a novice.

    There are a lot of virtual printers for Windows out there (mostly they generate PDFs), I wonder if someone could tell my how can I do the same?

    Any links to the elaborating documentations are appreciated in advance.

    Thanks.

    • John Saunders
      John Saunders about 13 years
      You might get more help if you said what problem you have that is not addressed by the sample drivers.
    • Terminus
      Terminus about 13 years
      They are a good starting point if you want to develop "real" drivers but they are not as helpful if all you need are "virtual", non-hardware based drivers. The bitmap sample is the most helpful, though.
  • Terminus
    Terminus over 13 years
    Unfortunately (most of it?) is written in Visual Basic. If there were one written in C/C++... :-).
  • ChrisW
    ChrisW over 13 years
    That may not be the printer driver; its directories like "Version 0.9.8\Printer\Adobe\WinXP2k3-x86\English" are empty, so far as I can see, except for a readme. Maybe the VB is some kind of front end to GhostScript, available separately.
  • ChrisW
    ChrisW over 13 years
    The contents of "Version 0.9.8\Printer\Adobe\WinXP2k3-x86\English\readme.txt" is "psui.dll", "pscript5.dll", and "pscript.hlp"; these filenames suggests to me that these driver files too were created from the postscript sample driver.
  • ChrisW
    ChrisW over 13 years
    Yes, the 'virtual' (non-hardware) part is the monitor not the driver. The driver controls the format of the output (not the output's location/destination)
  • Terminus
    Terminus about 13 years
    Userspace only in post-Vista -- I need to support Windows 2000.
  • Terminus
    Terminus about 13 years
    Well, I already have that book. The problem is not developing drivers, the problem is finding specific information relevant to developing the kind of Virtual Printer drivers that I want.
  • Mooing Duck
    Mooing Duck over 8 years
    Link #4 is now broken unfortunately. What was that?
  • Mooing Duck
    Mooing Duck over 8 years
    Would be more helpful to link to the source instead of the company that funds it

Related