單機遊戲下載單機遊戲下載基地
最新遊戲|熱門遊戲|遊戲大全|遊戲專題
備份還原硬件驅動係統優化搜索查找鍵盤鼠標磁盤工具數據恢複係統其它數據備份係統重裝
當前位置:首頁係統工具係統優化 → 文檔打印成圖片(ImagePrinter) v2.1 綠色版

文檔打印成圖片(ImagePrinter) v2.1 綠色版

  • 文檔打印成圖片(ImagePrinter)截圖0
< >
文檔打印成圖片(ImagePrinter)下載
好玩 好玩 0
坑爹 坑爹 0
  • 應用語言:英文
  • 應用大小:920KB
  • 更新時間:2014-11-26 10:57
  • 發行時間:
  • 應用類型:普通
  • 應用標簽: 打印
ImagePrinter是一個虛擬打印機,可以將文檔打印(虛擬打印)成BMP、PNG、JPG、PDF等格式的文件,功能類似於文檔轉換器,安裝後會成為係統的默認打印機。ImagePrinter的體積隻有900多KB,可以讓低版本的office支持將文檔打印成圖片。虛擬打印機有三種定製方[更多]
應用介紹

ImagePrinter是一個虛擬打印機,可以將文檔“打印(虛擬打印)”成BMP、PNG、JPG、PDF等格式的文件,功能類似於文檔轉換器,安裝後會成為係統的默認打印機。ImagePrinter的體積隻有900多KB,可以讓低版本的office支持將文檔打印成圖片。

虛擬打印機有三種定製方法:

1、驅動層(Driver)一種。好像是修改Render plug-in什麼的。沒做過。

2、打印假脫機(splooer)層兩種。

 (1)自定義打印處理器(PrintProcessor),一般是修改DDK中genprint的例子。將自定義的代碼加入到PrintDocumentOnPrintProcessor中。

  (2)在監視(Monitor)層。

打印假脫機(splooer)層兩種的兩種實現方法驅動層一般都用微軟統一驅動程序(UniDrv)。

通過打印測試頁可以了解安裝的打印驅動的各個方麵:驅動程序、端口等。也可以通過打印機的屬性查看。

ImagePrinter是用的自定義端口的形式實現虛擬打印。

虛擬打印機驅動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,並返回結果。

相關應用
下載地址

文檔打印成圖片(ImagePrinter) v2.1 綠色版

    熱門評論

    最新評論

    發表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    (您的評論需要經過審核才能顯示)

    配置需求

    推薦專題

    DLL修複工具DLL修複工具

    關於飛翔 | 聯係我們 | 大事記 | 下載幫助(?) | 廣告聯係 | 版權聲明 | 網站地圖 | 友情鏈接

    Copyright 2010-2013 單機遊戲下載 (R) 版權所有 飛翔下載所有遊戲及軟件下載資源來源互聯網,並由網友上傳分享。如有侵權,請來電來函告之。
    飛翔忠告:抵製不良色情、反動、暴力遊戲 合理安排遊戲時間 享受健康生活 鄂公網安備:42011102003115號 【鄂ICP備13011873號-1】