控制 Internet Explorer 打印功能(打印机模板)






4.25/5 (11投票s)
使用 JavaScript 控制 Internet Explorer 中打印网页的输出和格式。
什么是 Internet Explorer 打印机模板?
打印机模板是一种自定义 HTML 页面打印方式的方法。它们使用 JavaScript 帮助将 HTML 页面转换为布局矩形,以便打印在每个页面上。它们使开发人员可以控制通常只能通过打印设置来控制的事项。我最初研究打印机模板是为了以特定命名的打印机进行打印,而无需提示用户输入。在我们的设置中,我们有一台合同打印机和一台支票打印机用于我们的特定应用程序。我们的合同打印机带有 MICR 碳粉,因此我希望确保在打印支票或打印合同时选择正确的打印机。
打印机模板仅适用于 Internet Explorer,为什么要使用它们?
像我一样,有些开发人员很幸运能够控制其应用程序运行的客户端。通常,这是因为该应用程序是内部使用的自制应用程序。应用程序是内联网应用程序,而不是互联网应用程序。 使用打印机模板的一个注意事项是,它运行的站点必须是 Internet Explorer 受信任站点的一部分。 在我的办公室中,我们使用活动目录来控制这一点。
本文与其他打印机模板文章有何不同
早在 2000 年,Chuck Ainslie 发表了一篇文章,题为“超越打印预览:Internet Explorer 5.5 的打印自定义”。在他的文章中,他谈到了打印机模板,它们是什么以及如何使用它们。但是,为了调用它们,有一堆 Microsoft C++ 代码介绍了如何处理 IWebBrowser2
接口。经过一番研究后,我发现内置的“InternetExplorer.Application
”对象包含此接口,只需从 ActiveX 调用它即可访问 ExecWB
方法。此外,我必须找出传递给该方法的常量值并获取它们的 INT 值。在弄清楚所有这些之后,我决定构建一个通用的 templatePrinter
JavaScript 对象来处理所有繁重的工作。
templatePrinter JavaScript 对象
templatePrinter
对象为打印 HTML 背后的所有机制提供了一个抽象层。
一个用例示例是
templatePrinters= new templatePrinter()
templatePrinters.htmlContent="HELLO WORLD!";
templatePrinters.printer="YourPrinterName";
templatePrinters.printUsingTemplate("Full/Path/to/PrinterTemplate.html");
此外,您可以设置边距和方向等内容
templatePrinters= new templatePrinter()
templatePrinters.margins.top=0.25;
templatePrinters.margins.bottom=0.25;
templatePrinters.margins.left=0.25;
templatePrinters.margins.right=0.25;
templatePrinters.orientation="landscape";
templatePrinters.htmlContent="HELLO WORLD!";
templatePrinters.printer="YourPrinterName";
templatePrinters.printUsingTemplate("Full/Path/to/PrinterTemplate.html");
源文件中包含一个 printerTemplateTemplate.html 文件。 此文件包含一个通用的打印机模板 HTML 文件,该文件将设置您传递给 templatePrinter
对象的 HTML。 将 printerTemplateTemplate
文件视为内容与要打印的多个页面相关的 UI 表示形式很容易。
此对象的其他用途
我通过将其包装到 WSC(Windows 脚本组件)文件中,并使用 regsvr32
在服务器上注册了该脚本来使用此对象。 这使您可以使用 ASP 做一些有趣的事情,例如服务器端打印 HTML。 结合 PDF 打印机,您可以非常轻松地在服务器端将 HTML 转换为 PDF。 此外,如果您有一个内联网应用程序,并且想要将所有联网打印机添加到服务器,则可以提出一种命名约定,以便您的应用程序可以从您可能已在数据库中分配给用户的服务器打印到特定的打印机。
Internet Explorer 的默认打印机模板
Internet Explorer 在内部使用打印机模板进行打印预览。 您可以通过在浏览器中输入 res://ieframe.dll/preview.dlg 来查看默认的打印机模板。 请注意,源 HTML 显示对 preview.js 的引用。 您只需输入 res://ieframe.dll/preview.js 即可获取此文件。 如果您想要一个类似于默认模板但略有更改的模板,这些文件可能会很有趣。
历史
- 2010年3月19日:初始发布