ImagePrinter(虚拟打印机) 可以将文档“打印(虚拟打印)”成BMP、PNG、JPG、PDF等格式的文件,安装后会成为系统的默认打印机。ImagePrinter的体积只有900多KB,让低版本的office支持将文档打印成图片的工具。
软件特色
输出文件支持BMP、PNG、JPG、PDF等格式。
软件体积小巧,总共只有900多KB大小。
向下兼容,支持各种低版本Office软件。
安装之后可以设置为系统的默认打印机。
使用说明
ImagePrinter是在Port监视器端的虚拟打印机。
(1)在系统开机时,顺序调用以下函数:DllMain---》InitializePrintMonitor---》iEnumPorts(2次,后一次参数都是NULL)---》iOpenPort;
(2)在打印文档时,顺序调用以下函数:iStartDocPort---》iWritePort(很多次)---》iEndDocPort。
以下是DDK的翻译(根据对代码的理解,有删减):
(1)初始化打印监视器
当spooler调用LoadLibrary来加载的打印监视器DLL,系统立即调用DLL的DllEntryPoint函数。可以在此时LisableThreadLibraryCalls,这样创建和删除线程时,不必非得这个通知DLL。
每一个DLL都导出一个初始化函数,可以供spooler在调用LoadLibrary后调用。Language monitor DLL和port monitor server DLL导出InitializePrintMonitor2函数。port monitor UI DLL的导出InitializePrintMonitorUI函数。(总共有3中Monitor)。
这两个初始化函数的作用是返回其他函数(EnumPorts,OpenPort,StartDocPort等所有以下用的函数)的指针,这样spooler就可以调用它们了。初始化函数也可以执行load time的初始化操作。
InitializePrintMonitor2函数返回一个监视器实例句柄。monitor应分配本地内存来存储自定义的一些信息,并以此句柄为标识来分配内存。
当spooler第一次启动时(一般是开机时,如果你开机启动了spooler服务的话),它会载入所有已安装的monitor DLL的。所有Monitor的初始化函数调用后,打印后台处理程序调用每个port monitor的EnumPorts函数,其中列举了monitor支持的端口。monitor支持一个端口,如果端口已被添加到monitor的数据库。然后打开每个支持的端口。
(2)打开和关闭端口
spooler 通过调用language monitor的OpenPortEx函数打开端口;相对应的Port monitor调用OpenPort函数,language monitor只返回从Port monitor的OpenPort获得的句柄。如果没有language monitor,就直接调Port monitor的OpenPort函数。打开一个端口后不关闭的话,不能再打开。
端口一经打开,打印后台处理程序就可以调用其他函数来打印作业了。这些函数使用OpenPort返回的句柄作为输入。什么时候端口关闭呢:系统关机,没打印任务。..。
(3)打印打印作业
每个打印作业以StartDocPort开始,以EndDocPort结束。当print processor 调用的spooler的StartDocPrinter EndDocPrinter的函数时,这两个函数被调用。在这两个函数调用中间,不定量的WritePort, ReadPort, and GetPrinterDataFromPort函数被调用。
这些函数都需要用到OpenPortEx(或OpenPort)返回的句柄( port handle)作为输入参数。
当spooler调用language monitor 的WritePort函数,以将数据流发送到端口时,这些函数一般只增加一些特定的语言信息到接收到的数据流上,如PJL命令然后将它传递给相关的port monitor的WritePort功能。
ReadPort函数是用于获取双向打印机硬件的状态信息。Language monitor 通过调用SetPort将信息发送到spooler,获得状态信息。spooler不能调用ReadPort的函数。
如果打印硬件是双向的,language monitor和port monitor 都应该实现GetPrinterDataFromPort函数。language monitor的GetPrinterDataFromPort函数以注册表值的名称为输入,获得该名称的值(通常由调用相关的端口监视器的WritePort和ReadPort功能),并返回值给调用者。port monitor 的GetPrinterDataFromPort函数应该接受一个I / O控制代码作为输入,调用DeviceIoControl返回控制代码给port driver,并返回结果。
TT语音PC版是一款十分好用的游戏语音聊天工具,让玩家能够结识更多游戏伙伴,轻松组队畅玩各种各样的游戏。TT语音PC版支持语音交流,让玩家在游戏中的配合更为默契,更有组队开黑、线上K歌、玩...
Calibre是一款非常好用的跨平台电子书管理器,支持用户管理不同格式电子书。Calibre能够无缝对接多种电子书阅读器,并能在网络上自动抓取电子书籍的元数据,还能下载最新的报纸和杂志。软件操作...
斗鱼直播伴侣是专业好用的直播辅助软件,为用户提供视频直播和赛事直播服务,涵盖了户外、娱乐、综艺、体育等多种直播内容。斗鱼直播伴侣拥有出色的视频录制功能,支持实时、高性能的视频和音频...
优酷视频打造了直观简洁的界面,让用户轻松找到并浏览各类视频内容。优酷视频提供了电影、电视剧、综艺等多种类型的视频资源,能够满足用户多样的观看需求,还支持高清、超清等多种清晰度的设置...
爱奇艺视频是一款非常实用的视频播放软件,提供了电影、电视剧、综艺等多种类型的视频内容,海量的视频资源,用户随时想看就看。爱奇艺视频软件界面设计简洁,方便用户找到喜欢的视频资源,还支...
德语助手是简单实用的德语学习软件,德语助手以德语词典为基础,提供了词典、动词变位、德语例句查询等不同功能,轻松满足德语学习者的不同需求。软件操作简单易上手,还有智能写作、批改纠错等...
发表评论
共0条
评论就这些咯,让大家也知道你的独特见解
立即评论以上留言仅代表用户个人观点,不代表系统之家立场