Come creare una stampante virtuale in Windows?

Voglio creare un driver di stampante virtuale per Windows. Dove dovrei iniziare? Il WDK ha alcuni esempi di driver di stampa, ma nulla che io possa usare. MSDN non sembra essere molto utile.

Ci sono un sacco di stampanti virtuali per Windows (in genere generano PDF), come fanno?

Sono apprezzati tutti i link alla documentazione che mi sembra di perdere.

Grazie.

Quando l’ho fatto (che circa 12 anni fa) ho iniziato con l’esempio del driver postscript, ho sostituito tutto il materiale specifico per postscript (nel mio caso, per scrivere in un bitmap invece di generare comandi postscript).

Ho anche scritto un monitor di stampa personalizzato (il driver scrive sullo spooler, che scrive su un monitor): il mio monitor ha scritto su un file invece che sulla porta parallela.

Tuttavia, l’architettura del driver di stampa e / o il set di driver di esempio potrebbero essere cambiati da allora.

Puoi guardare allo sviluppo del ‘minidriver’ nel Microsoft (Microsoft MDT), che potrebbe aiutarti a seconda delle tue esigenze. Se la porta di cui hai bisogno (ad esempio: stai per prendere i dati da un driver di stampa esistente e vuoi elaborarli) puoi guardare il codice sorgente di RedMon. Non supporta Vista / Win7 ma potrebbe indirizzarti nella giusta direzione.

Uno dei driver che hai menzionato è open-source (GPL), forse potresti esplorarne l’origine o adattarlo: http://www.pdfforge.org/products/pdfcreator/download

Qualcun altro ha già menzionato PDFCreator. Ecco un link più specifico al loro codice che sta creando la stampante, la porta e il monitor. Nonostante sia in VB, posso seguirlo come qualcuno più abituato al C ++, quindi immagino che puoi farlo anche tu. modPrinter.bas fa funzionare la gamba. modMain.bas , dalla riga 28 in poi, chiama in modPrinter.bas.

Crea un Monitor porta di stampa, associa quella porta a una stampante e otterrai i dati che il driver di stampa invia alla porta.

un esempio funzionante di come è fatto in Cpp e java può essere trovato qui: http://www.mms-computing.co.uk/uk/co/mmscomputing/device/printmonitor/index.php