DOSBox 无法打印到现代打印机怎么办?
DOSBox 本身不直接支持 USB、网络或 PDF 打印机,它只能把 DOS 程序的打印输出写到文件或 LPT 端口。要让 DOS 程序在现代打印机上出纸,需要借助打印重定向工具,把 DOS 的打印任务捕获后转发给 Windows 打印机。DOSPRN 就是这类工具之一,官方说明它支持 USB、网络打印机、打印服务器和 PDF 打印机,且不依赖打印机类型。
先判断问题出在哪一层
DOS 打印链路通常有三层,任何一层不匹配都会导致无输出:
- DOS 程序层:程序把内容发往 LPT1/LPT2 或 PRN。
- DOSBox 层:DOSBox 把 LPT 端口映射到文件、物理端口或空设备。
- Windows 打印层:Windows 驱动把任务送到 USB/网络打印机。
常见失败原因是第 3 层:很多激光和喷墨打印机功能很强,却无法准确打印简单文本;一些低价“win-printer”(GDI 打印机)根本不支持文本模式,DOS 直接输出会失败或乱码。DOSPRN 的作用就是绕过这个限制,把 DOS 打印任务重定向到这些现代打印机。
用 DOSPRN 重定向打印任务
DOSPRN 以共享软件形式分发,官方提供下载、手册和 FAQ。基本流程如下:
1. 安装并确认打印机可用
先在 Windows 里正常安装目标打印机(USB、网络或 PDF 打印机均可),并打印测试页确认 Windows 层没问题。
2. 配置 DOSPRN 捕获 DOS 打印任务
DOSPRN 会捕获 DOS 应用程序发出的打印任务,再转发到 Windows 打印机。你需要在工具中选择目标打印机,并让它接管 DOS 的打印端口。
3. 让 DOSBox 的 LPT 指向该端口
在 DOSBox 配置中把 LPT1 映射到 DOSPRN 使用的端口或设备。这样 DOS 程序发往 LPT1 的内容就会进入 DOSPRN,再由它转给 Windows 打印机。
4. 验证
从 DOS 程序里执行一次打印,观察是否出纸、内容是否正确。若不出纸,先检查 DOSPRN 是否捕获到任务,再检查 Windows 打印队列。
常见卡点与排查方向
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 完全无输出 | 端口映射错误,或 DOSPRN 未接管 LPT | 确认 DOSBox LPT 设置与 DOSPRN 端口一致 |
| 出纸但乱码 | 打印机不支持文本模式,或字符集不匹配 | 用 DOSPRN 转发而非直接文本模式;检查语言字符支持 |
| win-printer 无法打印 | GDI 打印机不支持 DOS 文本模式 | 必须经重定向工具转换,不能直连 |
| 网络/PDF 打印机无反应 | 目标打印机选择错误 | 在 DOSPRN 中重新指定正确的 Windows 打印机 |
DOSPRN 官方特别提到,如果 DOS 程序使用本地语言而打印机在文本模式下不支持该语言,DOSPRN 也能作为辅助解决字符显示问题。
DOSBox 内置打印 vs 外部重定向
- DOSBox 内置:适合把打印输出保存为文件,或映射到真实 LPT 端口。对现代 USB/网络打印机支持有限。
- 外部重定向工具(如 DOSPRN):适合需要直接出纸到 USB、网络、打印服务器或 PDF 打印机的场景,能绕过 win-printer 和 GDI 设备的文本模式限制。
如果你的目标只是留存打印内容,DOSBox 内置映射到文件就够了;如果要真正在现代打印机上出纸,尤其是遇到 win-printer 或非英语字符问题,就需要 DOSPRN 这类工具。