相关文章
更多最近更新
更多基于Web的打印方案比较分析(二)使用IE的打印功能进行一般的网页打印
2019-03-28 11:59|来源: 道长A
在我们进行web开发的时候,通常会需要用到打印,然而,由于web技术的限制及考虑到安全的问题,一直以来,web打印的功能都是非常弱的,对此,我们也只能接受。也许你在开发过程中经常会遇见客户对你说,“你们系统的打印太差了,你看看excel的打印多好啊,”,面对这样的用户,我们除了苦笑,还能说什么呢?如果你对着他们去解释什么是BS架构,什么是CS架构,不但不能够解决问题,反而会招致用户的反感。 那么,我们是不是就什么都不能做了呢?答案当然是否定的。利用现有的web技术,再加上针对求的灵活实现,我们也可以做出漂亮的打印出来。 在接下来的几篇文章里,我将分别介绍几种打印的方法或技术。这些方法有的很简单,有的稍微复杂一点。我们还是从基础做起,先了解最简单的打印技术,然后再一步一步提高,这样也有利于消化技术。 本篇内容讲述利用IE提供的简单的打印功能,进行打印的设置以及打印。 在IE里打印,我们可以通过javascript来调用window.print()函数实现。下面是一个简单的代码示例。 type='button' value='打印' onclick='javascript:window.print()'/>
通过这个函数,可以实现最简单的打印功能。如果我们要对纸张,页边距进行设置,那该怎么做呢? 我们知道,我们可以方便地通过 Internet Explorer 用户界面更改页边距、页眉和页脚设置和默认 Internet Explorer 打印机,IE也提供了一个叫WebBrowser 控件来供我们调用,通过调用,可以在页面上调出打印的设置窗口,在设置窗口里,用户可以更改页边距、页眉和页脚设置等。(但是,在 Internet Explorer 或 WebBrowser 控件下没有以编程方式更改这些设置的方法。在本系列教程的第三篇,我将介绍如何在页面上通过编程的方式来更改设置。)我们可以在页面上输入如下代码来调用WebBrowser 控件。 <OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" id=wb name=wb></OBJECT> <input type='button' value='打印' onclick='javascript:wb.ExecWB(6,1)'/> <input type='button' value='打印预览' onclick='javascript:wb.ExecWB(7,1)'/> <input type='button' value='页面设置' onclick='javascript:wb.ExecWB(8,1)'/> 上例中的OBJECT就是IE提供的打印控件,叫WebBrowser,我们在网页中可以用我们设置的id或name来引用它。 这个对象有很用法,其中涉及到打印的有下面三项。 wb.ExecWB(6,1) 打印 wb.ExecWB(7,1) 打印预览 wb.ExecWB(8,1) 打印页面设置 点击“打印”按钮,即可弹出和window.print()函数一样的窗口。 点击打印预览,即可预览当前页面。
通过以上三个功能,我们就可以进行简单的打印和设置了,对于一般的打印需求来说基本足够。 这里需要说明的是,“页面设置”中的各个值,是存储在用户的注册表中。 下面是 Microsoft Internet Explorer 访问打印设置的方式: 对于页边距,Microsoft Internet Explorer 首先尝试从以下注册表项中获取值: HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerPageSetup HKEY_LOCAL_MACHINESoftwareMicrosoftInternet ExplorerPageSetup 如果没有此项,将提供默认值。 对于页眉和页脚,将从以下项中获取值: HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerPageSetup
页边距的默认值是 0.75, 对于 Internet Explorer 默认打印机,默认值将从以下项提供: HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerPageSetupprinter
那么,有没有一种办法,能够在程序里对这些选项进行设置,而不需要用户每次都手工来设置呢?请看下面. 本文链接:领悟书生教程网 |
相关问答
更多-
您需要一个打印样式表,它的高度应设置为“auto”,并且溢出设置为“可见”。 我做的是这样的: @media print { html, body { height: auto; overflow: visible; } } 只需将它放在主CSS文件或自己的文件中。 You need a print stylesheet, and it should have height set to "auto" and overflow set to "visible" for the body. What ...
-
打印从网页中选择的数据(print Selected data from web page)[2023-04-14]
如下例所示: < ... -
>>> a = [2,2,2,1,1,1,1,1,1,1] >>> from itertools import groupby >>> ["{}*{}".format(k, sum(1 for x in g)) for k, g in groupby(a)] ['2*3', '1*7'] 或者为了代码重用的利益: >>> def rle(seq): ... return ((k, sum(1 for x in g)) for k, g in groupby(seq)) ... >>> [ ...
-
如何添加Java的反射本质以打印方法体? 恐怕相当困难。 首先,原始源代码很可能对正在运行的程序不可用。 通常,开发人员不在二进制JAR中包含源代码。 (即使他们这样做,也不能保证他们会成为“真正的”来源。) 通常可以通过将类的FQN转换为字节码文件并使用classes classloader将文件作为资源流加载来获取类的字节码。 但不能保证你以这种方式获得的字节码将与加载的字节码相同。 (有些类加载器出于各种原因与字节码混淆。) 假设你可以得到真正的字节码,最后一步是将它们显示为raw,或者反汇编或反编译 ...
-
适合打印的网页(Printer Friendly Web Page)[2024-03-01]
你说你把线改成了media="print" ......我认为你在页面上没有media="screen"样式表了吗? 此外,您正在查看Firebug中的页面,样式已经消失了? 你似乎对你所做的事情有一些误解...... 表示“只要在屏幕上显示此文档, 就使用样式表screen.css 。从网页打印信封(Printing an envelope from a web page)[2022-08-21]
我认为底线最好使用PDF。 可悲的是,浏览器非常喜欢打印。 有没有办法指定用户打印网页时要使用的媒体类型/页面大小? 您可以指定CSS样式表以仅应用于使用media="print" 。 至于页面大小,没有可靠的方法来指定它。 您将不得不依赖用户为您执行此操作。 此外,您必须依赖用户删除大多数浏览器添加到打印结果的页眉和页脚。 另外,我可以布置文本以便在特定位置打印吗? 从理论上讲,是的。 您可以使用cm或in物理单位值来定位页面上的元素。 我不确定这些是否可以100%可靠地工作,因为打印机特定的边距可能会改 ...打印网页上的所有输入(Print all input from web page)[2022-11-17]
你为什么不用urllib2 + BeautifulSoup : import urllib2 from bs4 import BeautifulSoup url = "http://sito.com/SitoContact.htm" # change to whatever your url is page = urllib2.urlopen(url).read() soup = BeautifulSoup(page) for i in soup.find_all('input'): pri ...从R内打印网页(Print a web page from within R)[2023-03-10]
您可以调用名为wkhtmltopdf的命令行工具,它既是开源的又是跨平台的: shell("C:\\wkhtmltopdf\\bin\\wkhtmltopdf http://stackoverflow.com so.pdf") 别忘了逃避反斜杠! You can invoke a command line tool called wkhtmltopdf, which is both open source and cross-platform: shell("C:\\wkhtmltopdf\\bin\\w ...这应该很简单: This should be as simple as:网页打印按钮和设置(web page print button and settings)[2022-09-02]
出于安全原因,您的JavaScript无法访问打印设置页面。 For security reasons your JavaScript would not have have access to the print setup page.