禁用页面的浏览器打印选项(页眉、页脚、边距)?

2024-05-09

我在 SO 和其他几个网站上看到过以几种不同的方式提出这个问题,但大多数都太具体或过时了。我希望有人能在这里提供明确的答案,而不是迎合猜测。

当有人在浏览器中打印时,有没有办法使用 CSS 或 javascript 更改默认打印机设置?当然,我所说的“从浏览器打印”是指某种形式的 HTML,而不是 PDF 或其他依赖插件的 mime 类型。

请注意:

如果某些浏览器提供此功能而其他浏览器不提供(或者您只知道如何为某些浏览器执行此操作),我欢迎特定于浏览器的解决方案。

同样,如果您知道主流浏览器对执行此操作有特定限制,这也会有所帮助,但如果您提供一些相当最新的文档,我们将不胜感激。 (当 XYZ 在过去三年中对上述政策进行了重大更改时,简单地说“这违反了 XYZ 的安全政策”并不太令人信服)。

最后,当我说“更改默认打印设置”时,我并不是指永远,只是针对我的页面,我特指打印边距、页眉和页脚。

我非常清楚 CSS 提供了更改页面方向和页边距的选项。 Firefox 是众多难题之一。如果我将页边距设置为 1 英寸,它会将其添加到已设置的半英寸中。

我非常希望减少客户网站上 PDF 的使用,但对演示的侵犯(以及缺乏可靠性)是他们主要关心的问题。


CSS 标准支持一些高级格式设置。有一个@pageCSS 中的指令启用某些仅适用于分页媒体(如纸张)的格式。看http://www.w3.org/TR/1998/REC-CSS2-19980512/page.html http://www.w3.org/TR/1998/REC-CSS2-19980512/page.html.

缺点是不同浏览器中的行为不一致。 Safari 仍然完全不支持设置打印机页边距,但所有其他主要浏览器现在都支持它。

随着@page指令,您可以指定页面的打印机边距(这与 HTML 元素的正常 CSS 边距不同):

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Print Test</title>
    <style type="text/css" media="print">
    @page 
    {
        size:  auto;   /* auto is the initial value */
        margin: 0mm;  /* this affects the margin in the printer settings */
    }

    html
    {
        background-color: #FFFFFF; 
        margin: 0px;  /* this affects the margin on the html before sending to printer */
    }

    body
    {
        border: solid 1px blue ;
        margin: 10mm 15mm 10mm 15mm; /* margin you want for the content */
    }
    </style>
</head>
<body>
  <div>Top line</div>
  <div>Line 2</div>
</body>
</html>

请注意,我们在这里基本上禁用了特定于页面的边距,以达到删除页眉和页脚的效果,因此我们在正文上设置的边距将不会用于分页符(如康拉德评论 https://stackoverflow.com/questions/1960939/disabling-browser-print-options-headers-footers-margins-from-page/2780518?noredirect=1#comment74527214_2780518)这意味着只有打印内容只有一页时它才能正常工作。

这不适用于火狐3.6, IE 7, Safari 5.1.7 or 谷歌浏览器 4.1.

设置@page margin确实有效果IE 8, Opera 10, 谷歌浏览器 21 and 火狐19.
尽管在这些浏览器中为您的内容正确设置了页边距,但在尝试解决页眉/页脚的隐藏问题时,该行为并不理想。

这是它在不同浏览器中的行为方式:

  • In IE浏览器,在本次打印的设置中,边距实际上设置为 0mm,如果进行预览,则默认为 0mm,但用户可以在预览中更改它。
    你会看到页面内容实际上是定位正确,但浏览器打印页眉和页脚以不透明背景显示,因此有效地隐藏了该位置的页面内容。

  • In Firefox新版本是定位正确,但页眉/页脚文本和内容文本都会显示,因此它看起来像是浏览器页眉文本和页面内容的糟糕组合。

  • In Opera,在标准css中使用非透明背景时页面内容会隐藏页眉并且页眉/页脚位置与内容冲突。相当不错,但如果将边距设置为较小的值,导致标题部分可见,则看起来很奇怪。另外页边距设置不正确。

  • In Chrome在较新的版本中,如果 @page 边距设置得太小以致页眉/页脚位置与内容冲突,则浏览器页眉和页脚将被隐藏。在我看来,这正是应该的行为方式。

所以结论是Chrome在隐藏页眉/页脚方面有最好的实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁用页面的浏览器打印选项(页眉、页脚、边距)? 的相关文章

随机推荐

  • Oracle 12 对 SQL 中的本地集合类型有问题吗?

    长话短说 我建议讨论下面看到的代码 运行时 Oracle 11 编译器引发 PLS 00306 调用 PIPE TABLE 时参数提示的数量或类型错误 PLS 00642 SQL 语句中不允许使用本地集合类型 Oracle 12编译下面的包
  • 谷歌浏览器自动填充所有密码输入

    我的问题 我必须打开谷歌来自动填充我网站上的登录信息 但是现在每当我想编辑我的帐户信息或编辑其他用户帐户信息 作为管理员 时 它都会尝试自动填充该登录数据 它在奇怪的地方填充了我的数据 问题似乎是 Chrome 会自动用某种密码填充任何输入
  • 如何在 Arduino 中将 char 变量作为数字打印到串行端口?

    我正在使用 Arduino Uno 我正在从 EEPROM 读取一个字节值并将该值存储在类型变量中char 1 字节 我想将变量的值作为数字 而不是相应的 ASCII 代码 打印到串行监视器 例如考虑char val 5 我想查看串行监视器
  • 如何在 winforms 应用程序中设置数据网格滚动条的位置?

    在我的 C winforms 应用程序中 我有一个数据网格 当数据网格重新加载时 我想将滚动条设置回用户设置的位置 我怎样才能做到这一点 编辑 我使用的是旧的 winforms DataGrid 控件 而不是较新的 DataGridView
  • 不支持动态值作为注释中的属性 - AspectJ Android [AOP Android]

    我正在使用自定义注释来记录用户单击的 id 但我收到一个错误 属性值必须是常量 我的代码片段如下 mAssetId Asset getContentId TrackEvent track event ArrayParams Params k
  • mediaelement.js 视频无法在 IE8 中播放

    我已经浏览了这里提出的所有其他问题 但没有什么能真正解决我的问题 目前 视频可以在 Chrome Safari FF 和 IE9 中加载和播放 但不能在 IE8 中加载 这是我需要支持的最后一个浏览器 您可以查看页面here http 20
  • 如何在.NET中扩展环境变量%CommonProgramFiles%\system\

    我遇到一种情况 我需要通过读取注册表设置来返回目录路径 注册表值返回我以下格式的路径 CommonProgramFiles System web32 dll 而消费者代码期望它的格式为 C Program Files Common File
  • ServerSOAPFaultException 以及如何读取它?

    我做了一个请求 我的程序吐出来了 WARNING Input Action on WSDL operation Search and Action on its associated Web Method search did not ma
  • 如何设置itemTouchHelper选择性滑动?

    所以我在 recyclerview rv 上实现了这个 itemtouchhelper simple 回调 现在 在这个 rv 中 我根据内容类型将 2 种布局设置为一行 因此 当我在 rv 上设置此 touchhelper 时 它正在这两
  • 尽早访问控件 | load 与 domready

    我最近访问 jsfiddle net 发现这是一个配置选项 这让我想到这可能有助于解决我遇到的问题 我加载了多个图像 尚未升级到单个精灵 因此在它们全部下载之前我无法使用我的控件 图像占用了大部分下载时间 因此在最初几秒钟我无法访问我的控制
  • 在模型中的方法中捕获异常时重定向

    我正在使用 Authlogic connect 连接各种服务提供商 user rb中有一个方法 def complete oauth transaction token token class new oauth token and sec
  • 应用程序启动时立即隐藏导航栏

    基于以下代码片段 我能够隐藏状态栏当应用程序启动时 但不是导航栏 由后退 主页和任务管理器按钮组成的栏 因为它隐藏了稍后在 MainActivity 的线程完成加载后 这是清单
  • 错误:在 Java 中声明布尔值时不是一个语句

    下面的代码 boolean continue false 返回以下错误 error not a statement boolean continue false 为什么会发生这种情况 我对布尔值非常熟悉 试试这个 boolean cont
  • 有谁知道 Java 中有一个可以解析 ESRI Shapefiles 的库吗?

    我有兴趣为道路数据编写可视化程序2009 Tiger Line 形状文件 http www census gov geo www tiger tgrshp2009 documentation html 我想绘制线路数据来显示我所在县的所有道
  • java.sql.SQLException:在结果集开始之前[重复]

    这个问题在这里已经有答案了 我已尝试使用以下代码来检索存储在数据库中的图像 我创建了一个名为image db包含一个名为的表image details 该表有两个字段 id and image path两者都是类型mediumblob 我在
  • env 配置文件中未初始化的常量 ActiveSupport::EventedFileUpdateChecker

    我是 Ruby on Rails 的新手 运行 捆绑 命令进行更新 安装后 当我尝试执行以下操作时rails s or rails g mongoid config控制台返回以下消息开头 home myUser proyect config
  • Android 视图展开动画

    我正在尝试编辑这些来源 https github com gabrielemariotti androiddev tree master AnimationTest创建一个适用于我所有视图的简单函数 Override public void
  • xdotool 类型需要很长时间并导致整个桌面冻结

    我一直在使用xdotool type过去只能在快捷方式上输入耸肩xdotool type 这可行 但总是需要相当长的时间 并导致整个桌面冻结 完全冻结 而不仅仅是输入 几秒钟 不过并没有太打扰我 现在我需要一种方法来从文件中读取内容 对其进
  • Android ACTION_DATE_CHANGED 广播

    我有 Nexus S 当我在手机上手动更改日期时 ACTION DATE CHANGED 并不总是被广播 如果我将日期从 2014 年 2 月 13 日更改为 2014 年 2 月 14 日 我还没有获得 ACTION DATE CHANG
  • 禁用页面的浏览器打印选项(页眉、页脚、边距)?

    我在 SO 和其他几个网站上看到过以几种不同的方式提出这个问题 但大多数都太具体或过时了 我希望有人能在这里提供明确的答案 而不是迎合猜测 当有人在浏览器中打印时 有没有办法使用 CSS 或 javascript 更改默认打印机设置 当然