【问题标题】:Using window.print() or alternative on Android devices在 Android 设备上使用 window.print() 或替代方法
【发布时间】:2014-10-31 22:12:50
【问题描述】:

在 Android 设备上(我测试过 Nexus 5、Nexus 10、Galaxy S4 和 Galaxy Tab 3),JavaScript 中的 window.print() 命令没有任何作用。据我所知,它甚至没有记录错误。

我知道这些浏览器中的大多数(如果不是全部)都可以打印,因为您可以使用移动 Chrome 的菜单来选择“打印”。

为什么window.print() 不触发您期望的行为(打开客户端打印菜单)? window.print() 是否有 Android 替代品?

【问题讨论】:

标签: javascript android google-chrome chrome-for-android


【解决方案1】:

在这个Documentation中明确说明,“该命令在iOS上支持,在Windows上支持Chrome,在Mac上支持Safari和Chrome。在Android上不支持。

Android 手机尚不支持打印,因此window.print() 将无法使用。这意味着您需要使用第三方应用程序进行打印。您可以在 article 中找到一些替代方案。

【讨论】:

  • 是的,我安装了谷歌云打印应用程序,当我点击谷歌云打印按钮时,对话框将打开,我选择打印机然后点击打印没有任何反应。现在我该怎么办?
【解决方案2】:

我正在研究一个类似的问题并想出了这个解决方案:

$(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 设备上执行 File -> Print 的等效操作(菜单按钮 - > 打印)但我不能用半标准的window.print() 函数触发它
  • 我在 Chrome android 上找不到打印命令。我可以找到共享...> 打印机。
  • 到目前为止,我在任何用户代理字符串中都找不到mobile 字符串。另外,问题是有时移动电子设备上的网络浏览器可能会模拟桌面模式,所以android字符串不会出现。我无法使用 Google Chrome 网络浏览器进行测试,因为它似乎无法正常工作。 android字符串在使用Firefox网页浏览器和Litter Penguin制作的web Browser网页浏览器时确实出现在移动电子设备上>.
  • 现在谷歌云打印已经停止支持。我们如何处理这是 android?
【解决方案3】:

⚠️ [已弃用]:自 2020 年 12 月 31 日起,Google 云打印将不再受支持。请参阅support article 获取迁移帮助。

使用Google Cloud Print (GCP) - 不需要应用程序。用户必须通过 GCP 设置打印机。

本例使用GCP gadget

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

【讨论】:

  • 是的,我安装了谷歌云打印应用程序,当我点击谷歌云打印按钮时,对话框将打开,我选择打印机然后点击打印没有任何反应。现在我该怎么办?
  • gcp 到 2021 年将不可用
  • 现在谷歌云打印已经停止支持。我们如何处理这是 android?
【解决方案4】:

我认为,默认情况下,设备上禁用直接 print() 方法。我没有看到这么多带打印机的手机或其他 Android 设备,但是通过 USB 应该是可以的。

相反,建议将内容/页面保存为 pdf 并通过某些云打印服务进行打印。

【讨论】:

  • 就像我说的,chrome for android 在其菜单中有一个“打印”选项。这必须可以从 javascript 以某种方式访问​​,至于转换为 PDF,您能否详细说明一下。
  • 确实如此。但此选项更适用于云打印或“打印到文件”,如 pdf 或 eps,其中可以禁用“直接”打印。在这里,我找到了答案stackoverflow.com/questions/9268840/…,这可能是它无法在移动设备上的大多数浏览器中运行的多种原因,但实际上,它只是没有实现或禁用。相反,您仍然可以使用共享选项打印或另存为 pdf 等
【解决方案5】:

目前,window.print() 功能在我的 Android 5.0.1 设备上完美运行,同时配备 Chrome 和默认浏览器。

【讨论】:

  • 我尝试使用 andriod 7。window.print() 什么都不做。默默地忽略。
  • android 上的 Firefox 仍然不支持它。
【解决方案6】:

现在,window.print() 正在 Android 设备上工作。

【讨论】:

    【解决方案7】:

    在手机中下载adobe acrobat,即可在手机中使用windows.print()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多