You can use one of the patched/forked versions of DOSBox that support printing. There are a few.
One I've recently started using is Taewoong's enhanced "ykhwong" version (as of writing, it was last updated Oct. 12. 2011):
Direct3D with pixelshaders, OpenglHQ, Innovation, Glide, zip/7z
mount, Beep, NE2000 Ethernet, Graphis user interface (menu), Save/Load
states, Vertical sync, CPU flags optimization, Various DOS commands
(PROMPT VOL, LABEL, MOUSE, etc) and CONFIG.SYS commands (DEVICE,
BUFFERS, FILES, etc), Continuous turbo key, Core-switch key, Show
details (from menu bar), Nice DOSBox icon, Font patch (cp437), MAKEIMG
command, INTRO, Ctrl-break patch, DBCS support patch, Automatic mount,
Printer output, MT-32 emulation (MUNT), MP3CUE, Overscan border,
Stereo-swap, SDL_Resize, MemSize128, Internal 3dfx voodoo chip
emulation, Amstrad & PS/1 sound emulation, Fluidsynth soundfont
support, Timidity++ backend support, CGA w/ Monochrome Monitor
Support, Improve PC Speaker emulation accuracy patch, etc.
It allows redirecting LPT1 (through LPT3) to an actual LPT port, a printer file (.prn), or to the virtual printer. The valid options in the Parallel/Dongle dialog are
If you set it up to send to the virtual printer, it can "print" to a graphic file (.PNG, .BMP, .PS), or to a Windows printer on the host (it pops up Windows a print dialog):
You can trick Windows by using the USB printer as a dummy "network" printer connected to LPT1.
Share the USB printer
Use a share-name easy to remember, such as "Printer".
Connect the shared printer as LPT1
NET USE LPT1: \\[Computer-Name]\Printer /PERSISTENT:YES
Use the following steps: