2011-01-31 237 views
17

我正在開發一個內部谷歌瀏覽器擴展程序,它需要一種方法來啓動將當前頁面打印到打印機。我不想讓默認的打印對話框出現(所以,javascript:window.print()是沒有問題的)。谷歌瀏覽器擴展程序:無聲打印頁面

據我所知,這是不可能的只是與JS + HTML插件,所以我也打開使用NPAPI插件(與虛擬MIME類型)。我只關心Windows平臺。

如果可能的話,我也開放各種黑客/解決方法,雖然標準的解決方案會很好。

如果您認爲這不可能,請告訴我您是否知道記錄的任何功能請求?

任何建議/澄清歡迎..

+1

你有沒有完成擴展?這正是我正在尋找的... – 2014-05-09 14:26:02

+0

不,我無法進行無聲打印。 ( – 2014-05-12 10:40:20

回答

0

有跡象表明,採取當前網頁的快照各種擴展(例如,this one);您可以通過NPAPI插件將圖像發送到打印機。

+0

)有沒有其他的方式,你知道/想到沒有使用屏幕截圖?此外,你可以請我提供信息/鏈接如何在Windows上「發送圖像到打印機」? – 2011-01-31 15:44:34

+0

我沒有說任何關於屏幕截圖;查看我鏈接的插件,它實際上將頁面(包括滾動顯示的部分)渲染到圖像上,但不會截圖 – smorgan 2011-02-01 15:11:42

1

由於NPAPI允許您創建本地C++插件,您可以通過對象標籤(您可以從擴展中使用該對象標籤)進行交互,這可能是實現它的方法。

棘手的是我不知道獲取打印頁面位的好方法。我所知道的唯一一個做過類似這個事情的人實際上得到了瀏覽器的窗口句柄(可通過NPAPI獲得),並從中刪除了這些字符以便打印,但這不會考慮打印樣式表或任何東西。您也可以嘗試使用自動化事件來嘗試控制打印對話框,但我不知道這是否會起作用。

在設計上,瀏覽器儘量不要讓你做這樣的事情,因爲它可以打開一些嚴重的漏洞,如果任何網站都可以直接開始打印的東西到您的打印機沒有確認...

無論如何,如果你找到一種方法可以用C++來實現,你可以使用FireBreath來簡化NPAPI插件的創建。

0

我最近一直在尋找類似的能力,看到它,它似乎將使用Chrome的新的本地消息API是完全可能的。

https://developer.chrome.com/extensions/nativeMessaging

有很多用C#這樣的例子,但這裏是一個基本的C#應用​​程序

Native messaging from chrome extension to native host written in C#

我意識到這可能是一個故障排除Chrome原始消息的一個簡單的例子一天晚,一美元一短,但如果有其他人遇到這個問題,這是爲我工作的解決方案。從C#應用程序中,您可以使用PrintDocument類直接打印到安裝的打印機。如果你想出了一種獲取頁面圖像的方法,這比使用firebreath或NPAPI要容易得多。