/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
文档照片打印处理是一款操作上非常简便,各功能在界面上显示的非常清楚,为用户提供照片打印的辅助工具,在打印前可对图像进行亮度、对比度、色调等调整,用户能够预览到其效果,满意之后就能开始打印了。
文档照片打印处理支持将文档打印成图片的工具,ImagePrinter可以将文档“打印(虚拟打印)”成BMP、PNG、JPG、PDF等格式的文件,安装后会成为系统的默认打印机。

1、图片拖入到窗口
2、调整亮度和对比度
3、可以直接打印或保存修改的图片
1、驱动层(Driver)一种。好像是修改Render plug-in什么的。没做过。
2、打印假脱机(splooer)层两种。
(1)自定义打印处理器(PrintProcessor),一般是修改DDK中genprint的例子。将自定义的代码加入到PrintDocumentOnPrintProcessor中。
(2)在监视(Monitor)层。
打印假脱机(splooer)层两种的两种实现方法驱动层一般都用微软统一驱动程序(UniDrv)。
通过打印测试页可以了解安装的打印驱动的各个方面:驱动程序、端口等。也可以通过打印机的属性查看。
ImagePrinter是用的自定义端口的形式实现虚拟打印。
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,并返回结果。

EPSON Easy Photo Print官方版(爱普生照片打印软件) v2.32 最新版打印工具
/ 35M
爱普生Epson L3150一体机驱动(解决打印机与电脑连接) 免费版打印工具
/ 52M
爱普生打印机清零软件中文版(爱普生通用清理工具) v4.30 免费版打印工具
/ 795K
爱普生EpsonL1300废墨清零软件(从新设置打印机) v1.0 绿色版打印工具
/ 2M
爱普生L3118打印机驱动最新版(扫描驱动) v2.61 官方版打印工具
/ 111M
爱普生1390清零软件免费版(打印机清零工具) v1.0 官方版打印工具
/ 771K
pos58热敏打印机驱动官方通用版(打印机调试工具) 免费版打印工具
/ 728K
Pantum奔图M6500扫描打印驱动软件v1.3 官方版打印工具
/ 51M
EPSON Easy Photo Print专业版(爱普生照片打印软件) v2.32 电脑版打印工具
/ 35M
CODESOFT2015注册版(附激活码获取方法) 免费版打印工具
/ 98M
EPSON Easy Photo Print官方版(爱普生照片打印软件) v2.32 最新版打印工具
/ 35M
爱普生Epson L3150一体机驱动(解决打印机与电脑连接) 免费版打印工具
/ 52M
爱普生打印机清零软件中文版(爱普生通用清理工具) v4.30 免费版打印工具
/ 795K
爱普生EpsonL1300废墨清零软件(从新设置打印机) v1.0 绿色版打印工具
/ 2M
爱普生L3118打印机驱动最新版(扫描驱动) v2.61 官方版打印工具
/ 111M
爱普生1390清零软件免费版(打印机清零工具) v1.0 官方版打印工具
/ 771K
pos58热敏打印机驱动官方通用版(打印机调试工具) 免费版打印工具
/ 728K
Pantum奔图M6500扫描打印驱动软件v1.3 官方版打印工具
/ 51M
EPSON Easy Photo Print专业版(爱普生照片打印软件) v2.32 电脑版打印工具
/ 35M
CODESOFT2015注册版(附激活码获取方法) 免费版打印工具
/ 98M
EPSON Easy Photo Print官方版(爱普生照片打印软件) v2.32 最新版打印工具
爱普生Epson L3150一体机驱动(解决打印机与电脑连接) 免费版打印工具
爱普生打印机清零软件中文版(爱普生通用清理工具) v4.30 免费版打印工具
爱普生EpsonL1300废墨清零软件(从新设置打印机) v1.0 绿色版打印工具
爱普生L3118打印机驱动最新版(扫描驱动) v2.61 官方版打印工具
爱普生1390清零软件免费版(打印机清零工具) v1.0 官方版打印工具
pos58热敏打印机驱动官方通用版(打印机调试工具) 免费版打印工具
Pantum奔图M6500扫描打印驱动软件v1.3 官方版打印工具
EPSON Easy Photo Print专业版(爱普生照片打印软件) v2.32 电脑版打印工具