web-dev-qa-db-ja.com

Androidデバイスでwindow.print()または代替手段を使用する

Androidデバイス(Nexus 5、Nexus 10、Galaxy S4およびGalaxy Tab 3をテストしました)では、JavaScriptのwindow.print()コマンドは何も実行しません。エラーが登録されていないこともわかります。

モバイルChromeのメニューを使用して「印刷」を選択できるため、これらのブラウザのすべてではないにしてもほとんどが印刷できることを私は知っています。

なぜwindow.print()が期待する動作(クライアントの印刷メニューを開く)をトリガーしないのですか?そして、window.print()の代わりにAndroid)はありますか?

9
MarshallOfSound

この中で明確に述べられています ドキュメント 、 "コマンドはiOSでサポートされています、Chrome WindowsとSafariでそしてChrome。Androidではサポートされていません。 "

Androidフォンはまだ印刷をネイティブでサポートしていないため、window.print()は機能しません。つまり、印刷を行うにはサードパーティのアプリを使用する必要があります。あなたはこれでいくつかの選択肢を見つけることができます 記事

6
Harry

私は同様の問題に取り組んでおり、この解決策を思いつきました:

$(document).ready(function($) {
  var ua = navigator.userAgent.toLowerCase();
  var isAndroid = ua.indexOf("Android") > -1; //&& ua.indexOf("mobile");

  $('button.print').click(function(e) {
    e.preventDefault();
    if (isAndroid) {
      // https://developers.google.com/cloud-print/docs/gadget
      var gadget = new cloudprint.Gadget();
      gadget.setPrintDocument("url", $('title').html(), window.location.href, "utf-8");
      gadget.openPrintDialog();
    } else {
      window.print();
    }
    return false;
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button class="print">Print this page</button>

これが機能するかどうかを確認する時間がありませんでした。現在、Androidデバイスを持っていません。これについてフィードバックをお寄せください;-)

3

使用 Googleクラウドプリント (GCP)-アプリは必要ありません。ただし、ユーザーはGCPを介してプリンターをセットアップしている必要があります。

この例では、 GCPガジェット を使用しています

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Print</title>
    </head>
    <body>
        <div>
            <p>On Android devices (I have tested Nexus 5, Nexus 10, Galaxy S4 and Galaxy Tab 3) the window.print() command in javascript doesn't do anything, as far as I can tell it doesn't even register an error.</p>
            <p>I know for a fact that most if not all of these browsers can print because you can use mobile chromes menu to choose "print".  My questions is, why doesn't window.print() trigger the behavior you would expect (opening the clients print menu).
            And is there an Android alternative to window.print()?</p>
        </div>

        <div id="gcpPrint"></div>

        <script src="https://www.google.com/cloudprint/client/cpgadget.js">
        </script>

        <script>
            var gadget = new cloudprint.Gadget();
            gadget.setPrintButton(cloudprint.Gadget.createDefaultPrintButton("gcpPrint"));
            gadget.setPrintDocument("text/html", "Print", document.documentElement.innerHTML);
        </script>
    </body>
</html>
3
Avner

私は、direct print()メソッドがデフォルトでデバイスで無効になっていると思います。プリンター付きの携帯電話やその他のAndroidデバイスはあまり見かけませんでしたが、USBを使えばもちろん可能です。

代わりに、コンテンツ/ページをPDFとして保存し、クラウドプリントサービスを介して印刷することをお勧めします。

0
Dudeist

現在、window.print()はAndroidデバイスで動作しています。

0
Pravin

この時点で、window.print()機能はmy Android 5.0.1デバイスとChromeおよびデフォルトのブラウザの両方)で完全に機能します。

0
Memet Olsen