When a document is "printed" by a virtual printer, instead of physically printing it on paper or other material the underlying software processes the images of its pages in some other way, often resulting in a file being produced or the images being transmitted.
virtual printer
In the early 1960s the B5500 Master Control Program (MCP) operating system included virtual printers, called "Printer Backups" in the form of Printer Backup Tapes (PBT) and Printer Backup Disks (PBD). IBM's VM/370 operating system allows users to spool a virtual printer (or punch) file to another user, who can read it as input. This provides a basic means of file transfer.
VMware advise "Starting with version 15 of Workstation Pro, the version of VMware Tools bundled with VMware Workstation Pro no longer delivers VMware Virtual Printer functionality. You must install the VMware Virtual Printer application separately in the guest operating system to make the printers on the host visible in the virtual machine. "
However my demand is more specific. I just want to create a virtual printer that can be added into the system and can be accessed from any application. On clicking print command, a dialog looks like a real printer pops out and generates a PDF on printing. Then some more actions, like pushing the PDF to my server, are performed.
Use the WDK (Windows Driver Kit) to create a Unidrv UI plugin. This will allow you to specify UI during the print (for your printer dialogue). The reason why you'd want to show UI here is because it's one of the only printer driver components that runs in the user session (the same process as the printing application). The XPS pipeline and port monitor are both session 0.
Sorry it's probably not very obvious, but as I say, it's a high level overview (and unfortunately driver development is still very complex beyond a simple print to file). Version 4 printer drivers are becoming a lot easier to develop, but unfortunately with the removal of port monitor support and other improvements, it makes it a lot harder to develop anything requiring post processing.
I have a list of all printers available in WinXP. I need the code (ideally .NET) to filter out all the virtual printers from this list. Is it possible to do? I analyzed all the properties of Win32_Printer wmi class but can't see any suitable one.
I don't think it's possible, at least with any certainty. The whole point of a virtual printer is to imitate a real one as closely as possible, so any differences you can identify are basically just bugs in the virtual printer.
If my understanding of a "virtual printer" is correct. You could check the WMI property "PrintProcessor" and ignore "winprint". To my knowledge this will ignore all of Windows 7 software based printer options. Here is some sample code to demonstrate that. Returns the printer name.
I have a project to collect hardware informationand after testing the HiTech answer I see some of old printers (for example HP 2014 on Windows 10) that connect with LPT have WINPRINT PrintProcessor and these printers are connected diectly to computer and not virtual. So I combined the Local, Network and PortName properties (on offer Jerry Coffin answer) to find more accurate local and network printers(not virtual printers).
All the virtual printers I surveyed (including Fax) have this property set to 1. This is reasonable: making multiple copies is non-sensical for them. In contrast, all physical printer drivers can print multiple copies, and have this property at 999 or 9999.
I bought workstation pro with the virtual printer feature listed and I was using it, and now they push 17.5 which has security fixes and a fix for the bridge networking among other things and they remove a feature they sold me as part of Workstation pro 17... That is not right, they can remove it in VMWare 18 which would be a different product, sold with a different feature set, but not in a dot release.
Also there is another issue coming up - in older VMWare applications with an old operating system - like Win 3.1 or XP, I still was able to use the printer that was installed under the main system with 64bit drivers. That ship is now sailed, and those older system - which I still have to use for some applications - have no printer capability anymore
In Windows registry I see references to all 3 mirrored printers that worked in previous versions of Fusion (12 or 13.pre5?). Btw, two of the printers are network only and one is USB but no VM shows any printer connected in USB settings.
In macOS Sonoma System Settings / Privacy & Security, VMWare Fusion has Full Disk Access. I looked for another settings in macOS that might block Fusion from looking at the Mac's installed printers but didn't find any.
However workarounds do exist. The easiest is to switch to bridged networking. Any reasonably modern printer can be configured using wireless printing discovery, or you can use traditional mechanisms to configure printers just as if you were a physical machine. If using NAT networking, enable printer sharing on the Mac. The VM should them be able to discover it as a networked printer.
Hmmm....Or now that I have printers install in bridge mode, I'll switch back to NAT for security and only switch to bridge mode to print (then switch back to NAT). Windows 11 doesn't require restarting for that. Each switch took about 15 seconds in my Win11 VM.
Just removing printing capabilities is a non-sens.
I reverted back to 13.n from 13.5 and will stick to this version.
This is non-sense.
Also Wifi from within the VM is not a solution, all Airprint or WiFi printers do not offer as many printing options as the native printer driver. It's a subset of the printer capabilities.
If using the IPP driverless printing available in Windows or Linux doesn't appeal to you, there's nothing stopping you from installing vendor printer drivers in your VM and manually configuring them to talk to the printer of your choice over the network.
Thinprint wasn't a bed of roses either because it used a generic driver with a ppd file - just like IPP driverless printing. In some cases it didn't give you all the available goodies for the printer either. I remember having to tweak ppd files in order to get some printer feature I wanted in an ThinPrint defined printer
I know your situation may be different, but I gave up the hassle of installing and maintaining proprietary printer drivers for my Macs once I got reasonably modern printers that support AirPrint/Window/IPP driverless printing. They've given me all the features that I need and can't think of one that I need that I've missed (and yes, I do some photo printing on my Epson printers).
All commands start with !!DEBUG: and are followed by the command you want to execute. For instance, sending!!DEBUG:action_disconnect will disconnect the printer. Sending !!DEBUG without command will show a helpmessage with all the available commands:
The virtual printer is a pseudo printer that can only be recognized on a network. The virtual printer has various print options, such as feeding tray selection and duplex printing, which you can set in advance. You can set those options beforehand. If you use the virtual printer under UNIX, Solaris, and other operating systems, various print functions are possible without your having to manually enter the usual print commands.
It's super useful to use the virtual printer when developing plugins. The virtual printer prints pretty fast which is nice. Sometimes I want to tweak the speed of it and also don't want to wait for its virtual hotend to reach temp. Did a little googling but have not found a clear answer.
Heatup speed can't be tweaked, but simulated printing speeds can be increased just like real speeds via F parameters/commands. There's no upper limit (at least no intentional one). You might also want to play around with devel.virtualPrinter.throttle in config.yaml, see also the development settings docs.
I want to add a few fake printers that will send the jobs directly to /dev/null. That way, I can watch the "completed jobs" list in CUPS interface and observe if my software is using the correct printer for each job.
One solution is to install cups-pdf. It adds a virtual printer that writes PDF files. There are several tutorials on the web about how to install and configure it; since I use Gentoo, I've read Gentoo-wiki, which also mentions Sabayon wiki.
cups-pdf virtual printer has a configuration file in /etc/cups/cups-pdf.conf, and by default all PDF files are written to /var/spool/cups-pdf/$USER/. On Debian-based distros, such as Ubuntu, the default path was changed to $HOME/PDF/.
Footnote: if the user is using Gnome, or printing through a GTK+ application, then there is already a "Print to File" pseudo-printer at the print dialog. Thus, why should the user still want to add a virtual PDF printer? Here are a few reasons:
Now go to the CUPS web frontend and add a new printer. As destination, use socket://localhost:9/, as printer choose something that looks featureful, for example the "HP 2500C Foomatic/pcl3". That's all there is to it.
Sumatra PDF has only ever included a PDF viewer browser plugin for Firefox (now deprecated and no longer installed), an optional Windows Desktop Search iFilter and a thumbnail preview handler. No virtual printer has ever been part of Sumatra PDF.
Maybe there is a way to tweak ghostscript further, but I started looking elsewhere, and thanks to Roddie's suggestion, I've changed my tack and definitely prefer the "non virtual-printer" method of unoconv + ImageMagick (mentioned in my comment to Roddie's answer)... The image quality from ImageMagick is great! ..
35fe9a5643