web-dev-qa-db-ja.com

Google Chrome拡張機能:ページを静かに印刷する

現在のページのプリンターへの印刷を開始する方法を必要とする内部Google Chrome拡張機能を開発しています。デフォルトの[印刷]ダイアログを表示したくない(つまり、javascript:window)。 print()は問題外です)。

私の知る限り、これはJS + HTMLプラグインだけでは不可能なので、NPAPIプラグイン(ダミーのmimeタイプ)も使用できます。そして、私はWindowsプラットフォームのみに関心があります。

標準的な解決策はNiceですが、可能であれば、さまざまなハック/回避策も受け入れています。

これが不可能だと思われる場合は、ログに記録された機能リクエストを知っているかどうか教えてください。

任意の提案/説明を歓迎します。

17
Sai Prasad

chrome(v18 +))には--kiosk --kiosk-printingスイッチ。印刷の確認なしで、デフォルトのプリンタに自動的に印刷できます。

あなたはこのビデオからそれを見ることができます http://www.youtube.com/watch?v=D6UHjuvI7IE

17
printminion

NPAPIを使用すると、オブジェクトタグ(拡張機能から使用できます)を介して対話できるネイティブC++プラグインを作成できるため、おそらくそれがその方法です。

トリッキーな点は、ページを印刷するためのビットを取得するための良い方法がわからないことです。私が知っている唯一の人は、実際にブラウザのウィンドウハンドル(NPAPIから入手可能)を取得し、そのビットを削ってそのように印刷しましたが、印刷スタイルシートなどは考慮されていません。 。自動化イベントを使用して印刷ダイアログを制御することもできますが、それが機能するかどうかはわかりません。

設計上、ブラウザはこのようなことをさせないようにしています。確認なしにWebサイトがプリンタへの印刷を開始すると、深刻な脆弱性が発生する可能性があるためです...

とにかく、C++でそれを行う方法を見つけた場合は、 FireBreath を使用してNPAPIプラグインの作成を容易にすることができます。

1
taxilian

現在のWebページのスナップショットを取得するさまざまな拡張機能があります(たとえば、 これ )。 NPAPIプラグインを介して画像をプリンターに送信するように調整できます。

0
smorgan

私は最近同様の機能を探していましたが、Chromeの新しいネイティブメッセージングAPIを使用すればかなり可能だと思われます。

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

C#でのこれの例はたくさんありますが、これはトラブルシューティングの簡単な例ですChrome基本的なC#アプリケーションでのネイティブメッセージング

chrome C#で記述されたネイティブホストへの拡張機能)からのネイティブメッセージング

これは1日遅れて、1ドル足りないかもしれませんが、他の誰かがこの質問に出くわした場合に備えて、これが私にとって有効な解決策です。 C#アプリ内から、PrintDocumentクラスを使用して、インストールされているプリンターに直接印刷できます。ページ画像を取得する方法を見つけた場合、これはfirebreathまたはNPAPIを使用するよりもはるかに簡単です。

0
itslittlejohn