直接打印到打印机

在各种Javascript论坛中经常出现的一个查询询问如何在不首先显示打印对话框的情况下将页面直接发送到打印机。...

在各种Javascript论坛中经常出现的一个查询询问如何在不首先显示打印对话框的情况下将页面直接发送到打印机。

Dell Smart Printer S5830dn

与其只是告诉你这是不可能的,也许解释一下为什么这样的选择是不可能的会更有用。

当有人按下浏览器或Javascript窗口中的“打印”按钮时,会显示哪个打印对话框。print()方法的运行取决于操作系统和计算机上安装的打印机。

由于大多数人在他们的计算机上运行Windows,让我们首先描述一下打印设置是如何在该操作系统上工作的。*nix和Mac操作系统在细节上略有不同,但总体设置类似。

打印对话框

Windows上的“打印”对话框由两部分组成。第一个是Windows API(应用程序编程接口)的一部分。API是一组通用代码段,保存在Windows操作系统中的各种DLL(动态链接库)文件中。任何Windows程序都可以(也应该)调用API来执行常见功能,例如显示“打印”对话框,以便它在所有程序中都以相同的方式工作,并且在不同的位置上不会像DOS程序时代的打印选项那样有不同的选项。打印对话框API还提供了一个通用接口,允许所有程序访问同一组打印机驱动程序,而不是打印机制造商必须为想要使用它的每个程序的打印机创建驱动程序软件。

打印机驱动程序是打印对话框的另一半。有几种不同的语言,不同的打印机可以理解它们用来控制页面打印的方式(例如PCL5和Postscript)。打印机驱动程序指示打印API如何将操作系统理解的标准内部打印格式转换为特定打印机理解的自定义标记语言。它还调整打印对话框显示的选项,以反映特定打印机提供的选项。

操作打印机

一台计算机可能没有安装打印机,可能有一台本地打印机,可以通过网络访问多台打印机,甚至可以设置为打印为PDF或预格式化打印文件。如果定义了多个“打印机”,则其中一个被指定为默认打印机,这意味着它是第一次出现时在打印对话框中显示其详细信息的打印机。

操作系统跟踪默认打印机,并将该打印机识别为计算机上的各种程序。这允许程序向打印API传递一个额外参数,告诉它直接打印到默认打印机,而不首先显示打印对话框。许多程序有两种不同的打印选项—一种是显示打印对话框的菜单项,另一种是直接发送到默认打印机的工具栏快速打印按钮。

当您在internet上有访问者将要打印的网页时,您几乎没有关于他们可用打印机的信息。世界上大多数打印机都配置为在A4纸上打印,但不能保证打印机设置为默认值。一个北美国家使用的非标准纸张尺寸比A4短且宽。大多数打印机设置为以纵向模式打印(其中较窄的方向是宽度,但有些可以设置为横向,其中较长的尺寸是宽度。当然,每个打印机在页面的顶部、底部和侧面都有不同的默认页边距,甚至在所有者进入并更改所有设置以获得所需的打印机之前。

考虑到所有这些因素,您无法判断默认配置的默认打印机是否会在A3上打印出具有可忽略的页边空白的网页,或者A5具有巨大的页边空白(只留下页面中的邮票大小的区域)。您可能会假设大多数页面上的打印区域大约为16cm x 25cm(正负80%)。

印刷需求

由于潜在访问者之间的打印机差异太大(有人提到过激光打印机、喷墨打印机、彩色或黑白打印机、照片质量、草稿模式等等),您无法告诉他们需要做什么才能以合理的格式打印出您的页面。也许他们有一台单独的打印机,或者同一台打印机有另一个驱动程序,专门为网页提供完全不同的设置。

接下来,他们可能想要打印什么。他们想要整个页面还是只选择了要打印的页面的一部分?如果您的站点使用了框架,他们是希望以页面上显示的方式打印所有框架,还是希望单独打印每个框架,还是只打印特定的框架?

由于需要回答所有这些问题,因此每当他们想要打印某些内容时,都必须显示“打印”对话框,以便在按下“打印”按钮之前确保所有设置都正确无误。大多数浏览器还提供向其中一个浏览器工具栏添加“快速打印”按钮的功能,以允许使用默认浏览器设置将页面打印到默认打印机,包括打印内容和方式。

javascript

浏览器不允许Javascript使用如此多的浏览器和打印机设置。Javascript主要关注修改当前网页,因此web浏览器只提供关于浏览器本身的最少信息,几乎没有关于Javascript可用的操作系统的信息,因为Javascript不需要知道这些事情来执行Javascript想要做的事情。

基本安全性表示,如果像Javascript这样的东西不需要了解操作系统和浏览器配置就可以操作网页,那么就不应该向它提供这些信息。Javascript不应该能够将打印机设置更改为打印当前页面所需的适当值,因为这不是Javascript的用途,而是打印对话框的工作。因此,浏览器只向Javascript提供Javascript需要知道的内容,如屏幕大小、浏览器窗口中显示页面的可用空间,以及帮助Javascript确定页面布局的类似内容。当前网页是Javascript唯一关心的问题。

内部网

内部网当然是完全不同的事情。使用intranet,您知道访问页面的每个人都在使用特定的浏览器(通常是最新版本的Internet Explorer),并且具有特定的屏幕分辨率和对特定打印机的访问权限。这意味着在intranet上可以直接打印到打印机,而不显示打印对话框,因为编写网页的人知道将在哪台打印机上打印。

因此,Internet Explorer替代Javascript(称为JScript)的浏览器和操作系统的信息略多于Javascript本身。可以将运行intranet的网络上的各个计算机配置为允许JScript window.print()命令直接写入打印机,而不显示打印对话框。这种配置需要在每台客户机上单独设置,远远超出了Javascript文章的范围。

对于internet上的网页,绝对无法设置Javascript命令以直接发送到默认打印机。如果您的访问者希望这样做,他们必须在浏览器工具栏上设置自己的“快速打印”按钮。

  • 发表于 2021-10-05 04:11
  • 阅读 ( 131 )
  • 分类:IT

你可能感兴趣的文章

谷歌云打印和移动打印的替代品

... 云打印是指将文档从设备发送到打印机的过程,无需安装驱动程序或特定于**商的软件。 ...

  • 发布于 2021-03-15 20:03
  • 阅读 ( 225 )

谷歌可以让你打印到任何打印机,无论你在哪里

如果你的打印机曾经让你做噩梦,我不会责怪你。很少有其他设备能像打印机那样有问题,网络连接(或缺乏连接)是您可能遇到的最令人沮丧的问题之一。 ...

  • 发布于 2021-03-16 07:00
  • 阅读 ( 159 )

如何在windows10中管理打印机

Windows10有一个用于配置打印机的新设置窗口,但是您仍然可以使用旧的控制面板工具。以下是有关在Windows上安装、配置、共享打印机以及排除打印机故障的知识。 如何添加打印机 要添加打印机,请进入“设置”>“设备”&g...

  • 发布于 2021-04-05 01:25
  • 阅读 ( 247 )

有关从android手机或平板电脑打印的所有信息

...非常容易,但仍有一些事情需要注意。 如何添加和管理打印机 就像我之前说的,云打印现在是操作系统的一部分。在过去,这个应用程序是您查找和管理打印机的地方,但由于它不再是一个独立的产品,所有这些东西现在都整...

  • 发布于 2021-04-09 04:20
  • 阅读 ( 162 )

如何打印短信对话

...打印 如果你有一台支持苹果AirPrint或Google云打印的Android打印机,那么你就可以直接从你的设备上打印出你的短信对话。如果您不确定您的打印机是否支持这些功能之一,请检查此处查看您的打印机是否支持AirPrint,并检查此处是...

  • 发布于 2021-04-09 06:07
  • 阅读 ( 158 )

如何在Windows7、8或10中设置共享网络打印机

多年来,Windows在处理网络打印机方面做得更好。但是如果你想在网络上共享一台打印机,你可能还需要做一些腿上的工作来启动和运行它。下面是它的工作原理。 在网络上设置打印机需要两个步骤。第一步是将打印机连接到...

  • 发布于 2021-04-09 06:43
  • 阅读 ( 163 )

如何从android智能手机或平板电脑打印照片

...快速、轻松地打印出这些照片的物理副本——使用自己的打印机、本地商店或通过邮件发送给你。 你不需要任何花哨的硬件来做这件事。你可以使用自己的照片打印机,但这甚至不是一个理想的解决方案-如果你只是想打印偶尔...

  • 发布于 2021-04-10 10:10
  • 阅读 ( 175 )

如何在linux上安装打印机驱动程序

...测你电脑中的硬件,并为你进行设置——这就是目标。但打印机可能是另一回事。 这里有一个有趣的事实:Linux上的打印是通过CUPS(通用的Unix打印系统)来处理的。苹果拥有CUPS,并且使用主要的开发人员CUPS也可以处理Mac OS X上...

  • 发布于 2021-04-10 20:44
  • 阅读 ( 224 )

如何从ipad、iphone或ipod touch打印

...有出现,你可以用iPad或iPhone打印。当然,你不能直接将打印机连接到你的iPad,但是有很多方法可以无线打印。 这并不意味着旧的有线USB打印机被淘汰了——如果你有一台有线打印机,你仍然可以在连接到Windows PC或Mac之后从iPad...

  • 发布于 2021-04-11 11:49
  • 阅读 ( 291 )

4种通过网络或internet远程打印的简便方法

远程打印并不一定很难,无论你是想打印到大厅里的打印机上,还是在半个地球上。我们将介绍一些无需直接连接打印机即可打印的简单方法。 我们将集中讨论最简单的选项。我们不会涉及设置Internet打印协议(IPP)或JetDirect...

  • 发布于 2021-04-11 17:46
  • 阅读 ( 243 )
萍萍喔喔
萍萍喔喔

0 篇文章

相关推荐