Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JS设置打印首选项_Javascript - Fatal编程技术网

Javascript 从JS设置打印首选项

Javascript 从JS设置打印首选项,javascript,Javascript,从我在谷歌上看到的情况来看,我找不到一种使用Javascript设置打印首选项的方法(阅读:边距、方向、页脚等) 我正要告诉我的老板,他想做的事是不可能的。我想在做这件事之前检查一下你们好吗。请让我知道 我发现在Firefox中,你可以使用一些user\u pref(key,val)设置来设置用户的首选项,但这对我90%以上的用户都不起作用。我正在寻找能够覆盖IE(尽可能多)、Firefox和Chrome的内容。您可以使用CSS设置页面方向和边距: @page { size: landsc

从我在谷歌上看到的情况来看,我找不到一种使用Javascript设置打印首选项的方法(阅读:边距、方向、页脚等)

我正要告诉我的老板,他想做的事是不可能的。我想在做这件事之前检查一下你们好吗。请让我知道


我发现在Firefox中,你可以使用一些
user\u pref(key,val)
设置来设置用户的首选项,但这对我90%以上的用户都不起作用。我正在寻找能够覆盖IE(尽可能多)、Firefox和Chrome的内容。

您可以使用CSS设置页面方向和边距:

@page {
   size: landscape;
   margin: 10%
}
还可以使用元素在每页底部设置页脚

编辑:正如Beejamin所指出的,这是一个中途之家。您无法真正更改打印机首选项(单击“打印”时显示在“打印”对话框中的首选项)。此外,IE严重缺乏对
@page
选择器的支持(查看IE9是否支持它,但找不到任何东西)。作为替代,您可以尝试将其应用于打印样式表中的主体

body {
   size: landscape;
   margin: 10%
}

虽然我不知道这有多有效。

所以。。。经过一整天的寻找,我想我找到了我自己问题的答案。简而言之,答案是JS和/或CSS不允许您覆盖客户端浏览器的默认页面设置

这是我试过的。如果您创建了一个简单的HTML文件,文件头是空的,正文中只包含文本“Test”,那么您将能够看到我测试的内容

  • 打印样式表无法解决您的问题。将正文上的边距设置为0px 0px 0px 0px与单击文件>页面设置并将所有边距设置为0不同。不管打印样式的纸张制造商希望您相信什么,它们都是不同的。你自己试试看。这就是为什么打印样式表不能解决您的问题

  • JS无法解决您的问题。如果你访问的每个页面都修改了你的本地JS属性,你能想象吗?允许每个页面访问您的本地打印设置将是安全漏洞,是不允许的。因此,JS无法解决您的问题


  • 我希望有人在这里回应,让我知道我错了。否则。。。这太糟糕了。。。这是必须的。我有很多老用户。。。让他们在页面设置中设置页边距是一件痛苦的事情。客户也不希望我们重构页面,这样他们就不需要重构页面了。我处在一块岩石和一块硬地之间

    我认为您尝试在HTML和CSS中实现这一点是非常不走运的。问题的很大一部分在于打印机的页边距都是特定于打印机类型的:大多数打印机都有一个可以设置的最小页边距(相当于它们夹持页面所需的空间,以及打印头的左/右移动)

    可接受的页边距也会因纸张大小而异(通常,较小纸张上的页边距会小于打印机可接受的最大页边距)。例如,如果将A5纸张装入A4打印机,则可以设置的页边距将不同于装入A4打印机时的页边距

    这些信息都无法通过CSS、javascript或其他任何方式访问网页

    现在,就解决方案而言,PDF文件确实允许您在文件中嵌入一些打印机默认设置-Acrobat pro将允许您指定缩放选项、默认副本数等。我敢打赌,Acrobat不会公开更多文件格式中的潜在设置

    无论您使用哪种服务器端技术,都有很多功能齐全的PDF生成工具。好的工具甚至可以让您提供URL,并将HTML+CSS呈现为PDF内容,这将在一定程度上自动化生成。尽管PDF生成需要大量CPU,但对用户来说也不是无缝的(大多数浏览器都需要PDF插件)


    我知道这并不理想,但这是我要研究的途径。祝你好运!

    使用CSS将帮助你实现这一目标

    @page {
      margin:0cm;
    }
    

    我不是一个网络忍者,也不是一个JS解决方案,但这不是CSS中的打印样式表应该完成的吗?加上Timo的,检查这个CSS的打印媒体查询示例,创建另一个样式表并允许自己完全改变t的外观他是您页面的打印版本。例如,我通常必须将正文背景颜色设置为#fff,以获得打印副本,从而使用更少的墨水,并且看起来更好。确实可以使用此附加组件通过JavaScript设置打印属性。这确实是一个允许通过JavaScript控制打印属性的附加组件。但是它是f或者只使用Firefox,对IE或Chrome没有帮助。嘿,frosty,因为这篇文章很老了,现在google Chrome支持大小:A3横向;改变纸张大小,但不改变页眉和页脚。Firefox没有改变大小。所以你知道Firefox针对改变页面方向的解决方案吗?Jaitsu,@page做什么?我找不到任何css文档在@page…上,我尝试应用于它的所有样式都不起作用。@page是分页媒体的页面元素(仅限于打印机,AFAIK)-对它的支持不是很好-它在我所知道的任何IE中都肯定不起作用(不知道9)。它是为这种情况而设计的,但仍然不允许您调整打印机的设置,只允许您调整发送到打印机的页面“框”(以及添加了打印机页边距的页面)的页边距/填充.Oops-意味着包含链接:很难搜索,因为谷歌去掉了“@”符号。Beejamin,你提供的文档很好。它在Chrome中工作,但在其他浏览器中不工作。我认为FF会支持这一点,因为它是在CSS2.1中实现的。有什么想法吗?你必须尝试@page{}而不是打印媒体查询和默认页面{}.它对我有用,我希望我