web-dev-qa-db-fra.com

Utilisation de window.print () ou d'une alternative sur les appareils Android

Sur les appareils Android (j'ai testé Nexus 5, Nexus 10, Galaxy S4 et Galaxy Tab 3), la commande window.print() en JavaScript ne fait rien. Autant que je sache, cela ne marque même pas une erreur.

Je sais pertinemment que la plupart, sinon tous, de ces navigateurs peuvent imprimer parce que vous pouvez utiliser le menu de Chrome pour mobile pour choisir "imprimer".

Pourquoi window.print() ne provoque-t-il pas le comportement attendu (ouverture du menu d'impression des clients)? Et existe-t-il une alternative Android à window.print()?

8
MarshallOfSound

C'est clairement indiqué dans cette Documentation , " La commande est prise en charge sur iOS, Chrome sous Windows et Safari et Chrome sur Mac. Elle n'est pas prise en charge sur Android. "

Les téléphones Android n’ont pas encore de support natif pour l’impression, donc window.print() ne fonctionnera pas. Ce qui signifie que vous devez utiliser une application tierce pour effectuer l'impression. Vous pouvez trouver des alternatives dans cet article article .

5
Harry

Je travaille sur un problème similaire et propose cette solution:

$(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>

Je n'ai pas eu le temps de vérifier si cela fonctionne, je n'ai pas d'appareil Android avec moi pour le moment. J'aimerais avoir des commentaires à ce sujet ;-)

3
Jonathan Joosten

Utilisez Google Cloud Print (GCP) - aucune application n'est requise. L'utilisateur doit cependant avoir configuré une imprimante via GCP.

Cet exemple utilise gadget 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

Je pense que la méthode direct print () est désactivée sur les périphériques par défaut. Je n'ai pas vu autant de téléphones ou d'autres appareils Android avec une imprimante, mais cela devrait être possible via USB.

Au lieu de cela, il est recommandé d’enregistrer le contenu/la page au format pdf et de l’imprimer via un service d’impression en nuage.

0
Dudeist

Maintenant, window.print() fonctionne sur les appareils Android.

0
Pravin

À ce moment, la fonctionnalité window.print () fonctionne parfaitement sur mon appareil Android 5.0.1 avec Chrome et le navigateur par défaut.

0
Memet Olsen