miPDFconvert is a virtual PDF printer designed to convert printed documents into PDF files on Windows. It integrates seamlessly as a printer in your system, allowing you to print any document to this virtual device and save or forward it as a PDF.
Key Features:
Virtual Printer Integration: Appears as a standard printer in Windows, enabling direct PDF conversion from any application.
.NET Runtime Support: Includes the .NET 8 Desktop Runtime for smooth operation without external dependencies.
Target Application Configuration: Configure the software to automatically send PDFs to a specified application or use a Save As dialog.
Winget Deployment: Easily install and deploy using the Windows Package Manager with commands like winget install mipdfconvert.
Target Audience and Benefits:
Ideal for developers, IT professionals, and businesses requiring automated PDF generation. Users benefit from seamless integration into existing workflows, saving time and effort in document conversion. The tool's flexibility and free availability (with optional commercial Ghostscript licensing) make it a cost-effective solution for various needs.
miPDFconvert stands out as a robust, open-source tool for those seeking reliable PDF printing capabilities with minimal setup complexity.
README
miPDFconvert
A virtual PDF printer for Windows. Install it and a new printer named miPDFconvert
appears in Windows. Anything you print to it is converted to a PDF, which is then either
handed to a configurable target application or offered to you through a Save As dialog.
miPDFconvert is a derivative work of clawPDF
(and, through it, PDFCreator) and uses the
mfilemon print port monitor. It is released
under the GNU AGPL v3 — see Licensing.
How it works
Application ──► "miPDFconvert" printer ──► print port monitor (miPortMon)
│ PostScript spool file
▼
miPDFconvertBase (launcher)
│
▼
miPDFconvert ──► Ghostscript ──► PDF
│
┌───────────────────────────────┴───────────────────────────────┐
▼ ▼
TARGET_APPLICATION is set: TARGET_APPLICATION is empty:
the PDF is passed to that app a "Save As" dialog is shown
Requirements
Windows 10/11 (x64 or ARM64).
Ghostscript — required for the PostScript → PDF conversion. Download and install it
from the official site:
https://www.ghostscript.com/releases/gsdnld.html
Install the AGPL release (or obtain a commercial license from Artifex). Either the
build works — Ghostscript is invoked as a separate process, so its
bitness does not have to match the application.
.NET 8 Desktop Runtime (bundled/installed by the setup if missing).
Installation
Via package manager
winget:
winget install mipdfconvert
Chocolatey:
choco install mipdfconvert
> Ghostscript (32-bit or 64-bit) still needs to be installed separately (see Requirements). Newly submitted versions can take a few days to appear while they pass winget/Chocolatey moderation.
Manual
Install Ghostscript (see above).
Run the installer miPDFconvertSetup.exe. During setup you can optionally choose a
target application that should automatically receive the generated PDF — the selected
path is written to TARGET_APPLICATION in miPDFconvert.dll.config (leave it empty for a
Save As dialog; changeable later).
Print to the miPDFconvert printer from any application.
Configuration
Settings live in miPDFconvert.dll.config (next to miPDFconvert.exe in the install
directory), under ``:
Key
Default
Description
TARGET_APPLICATION
(empty)
Path or name of an application that should automatically receive the generated PDF as a command-line argument. A relative path/bare file name is resolved against the install directory first. Leave empty to get a Save As dialog instead.
CREATE_DOCUMENT_FILES
false
If true, keep the temporary PostScript file in %TEMP%.
Set TARGET_APPLICATION to the program that should open the freshly created PDF. The PDF
is written to a temporary file and passed as the first argument, so anything that accepts a
file path works — for example a PDF viewer, an archiving tool, or your own application:
The installer also offers an optional page to pick a target application; the chosen path
is written to this setting during installation (leave it empty for the Save As dialog).
The target application is brought to the foreground automatically (including single-instance
apps such as browser-based viewers). If TARGET_APPLICATION is empty, miPDFconvert falls
back to a Save As dialog.
Building from source
Prerequisites:
Visual Studio 2022 Build Tools with the C++ (v145) toolset (for the native print
monitor) and the .NET desktop workload. Override with -PlatformToolset if you have a
different version installed (e.g. v143/v144).
Build everything (native DLLs → SetupHelper → apps → installer) with the included script:
.\build.ps1
Useful switches: -SkipNative (skip the C++ projects), -SkipSetup (binaries only),
-PlatformToolset v144 (override the C++ toolset). The finished installer is written to
miPDFconvertSetup\Release\miPDFconvertSetup.exe.
> Microsoft PostScript driver files: The virtual printer uses Microsoft's inbox
> PostScript class driver (pscript5.dll, ps5ui.dll, pscript.hlp, pscript.ntf).
> These are not redistributed in this repository — build.ps1 copies them from the
> local Windows driver store into lib\miMonitor\... automatically before packaging the
> installer. Only the project's own ghostpdf.ppd is tracked in the repository.
Code signing (optional)
Release builds can be Authenticode-signed; signing is off by default. To sign the
project's own binaries and the installer (with timestamp):
The certificate subject is taken from -SignSubject or the MIPDF_SIGN_SUBJECT
environment variable and is intentionally not stored in the repository. Signing uses
signtool.exe (auto-located from the Windows SDK) and the Certum timestamp server. The
installer and uninstaller are signed by Inno Setup through a sign tool named certum
that must be configured locally (Inno Setup IDE → Tools → Configure Sign Tools);
build.ps1 -Sign activates it by passing /DSIGN to ISCC.
Logging
A runtime log is written to %ProgramData%\miPDFconvert\miPDFconvert.log.
Licensing
miPDFconvert is licensed under the GNU Affero General Public License v3 — see
LICENSE. Because it combines AGPL/GPL components, the complete corresponding
source code must be made available to recipients (including users interacting with it over
a network, per AGPL §13).
Ghostscript (PDF engine, installed separately, invoked as an external process) — AGPL-3.0 or commercial (Artifex)
log4net — Apache-2.0
> Note on Ghostscript: miPDFconvert does not bundle Ghostscript; it must be installed
> separately by the user. If you choose to redistribute the Ghostscript binaries with your
> own distribution, the AGPL (or a commercial Artifex license) applies to Ghostscript as well.
This project is not affiliated with or endorsed by clawSoft, pdfforge, or Artifex Software.
Author
Wolfgang Mitterbucher — Software Engineering & Digital Identity, Leonding (Austria)