2013-12-09 39 views
0

我有麻煩入門建立一個打印監控/打印處理器爲使用Windows的Visual Studio 2012旗艦版與WDK 8.基本上,這就是我要完成的:創建打印監控/打印處理器

  • 創建打印監視器(一些應用程序可以打印到),將產生與應打印的內容(如默認XPS打印機或PDF打印機)的文件,然後調用打印處理程序
  • 創建打印處理程序,它將解析生成的文件並對其執行某些操作(檢查是否存在某些文本,在線上載文件等)

我覺得像打印處理部分不應該太硬,但與打印監視器開始就是我被困在。我會在VS12中做什麼?我看到「打印機驅動程序V4」,「打印機驅動程序V4物品包」和「打印機XPS渲染過濾器」的選項。我應該使用其中一種模板嗎?如果是,我會在其中做些什麼?任何指向我的方向正確的方向將不勝感激!

編輯:

只是一些更多的澄清 - 我只需要從打印輸出的文本,但只得到文本的輸出導致沒有輸出從來源一樣,我從各種渠道閱讀Firefox等,因爲它們將文本打印爲字形。

我將使用打印處理器解析爲關鍵字的文本,然後上傳信息到Web服務器在特定的格式。打印監視器只需從任何正在打印的應用程序中捕獲並保存文本信息。

+0

讓我們從頭開始。你說你想生成一些打印數據並處理它。打印數據的種類很多,您需要哪一種將決定您應該如何繼續。例如,你只需要帶圖形的文本或文本?你會想要在屏幕上顯示這個輸出嗎?您需要退出編寫代碼並澄清您的目標。 –

+0

對不起,不太清楚!從技術上講,我只需要打印輸出中的文本,但是我從各種來源讀到,獲取純文本輸出導致Firefox等來源無輸出,因爲它們將文本打印爲字形。我不需要在屏幕上輸出它;我將解析關鍵字文本,然後以特定格式將該信息上傳到Web服務器。 – Steve

回答

1

,正如你在評論中指出,某些應用程序如Firefox打印使用字形索引,而不是字符。事實上,很多人都會這樣做,而且這種情況越來越普遍。你需要的是打印驅動程序。好消息是,微軟已經爲您寫了它,併爲您提供了WDK中的示例源代碼。首先查看this以瞭解您的選擇。 Unidriver可能稍微簡單一些,但Postscript驅動程序具有生成輸出的優勢,可以很容易地將其轉換爲PDF或其他保留文本信息的格式(而不是柵格頁面圖像會丟失所有文本信息)。就我而言,甚至不考慮XPS;這只是一場全方位的災難。

要處理字形索引,您需要將代碼添加到驅動程序的OEMTextOut函數中,該函數使用字體的cmap表將字形索引轉換回字符代碼。我不瞭解任何解析字體文件的公共領域庫,因此您可能必須編寫自己的代碼才能執行此操作。 (提示:如果您僅支持OpenType/TrueType字體,則將覆蓋所有打印應用程序的99%)。

獲取微軟樣本代碼來構建,安裝和運行主要是簡單的,但如果你是新來的WDK和安裝打印驅動程序,就花費了一週或更多的只是計劃。字形索引翻譯部分要複雜得多,你應該計劃花費更多的時間。