【问题标题】:Printing with css style使用 css 样式打印
【发布时间】:2012-05-11 01:46:32
【问题描述】:

我有一个链接到我的网页的 CSS 样式表。当我查看网页时,它看起来应该是这样的,但是当我打印文档时,我再也看不到样式了。我已经用属性第二次添加了 css:media='print',但它不起作用。有人知道如何使用window.print() 函数并保持打印文档的样式吗?

ASPX:

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="cpHead" ClientIDMode="AutoID">
<link rel="stylesheet" type="text/css" media="screen" href="Styles/Site.css" />
<link rel="stylesheet" type="text/css" media="print" href="Styles/Site.css" />
</asp:Content>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="Main" ClientIDMode="AutoID">
    <asp:Image ID="imgHeader" Width="100%" runat="server" />
    <asp:GridView ID="gvPrintData" Width="100%" runat="server" HeaderStyle-CssClass="printGridHeader" RowStyle-CssClass="printGridRow" AlternatingRowStyle-CssClass="printGridAltRow" />
</asp:Content>

.CS:

Response.Write("<script type='text/javascript'>window.print(); window.onfocus = function() { window.close(); }</script>");

综合浏览量(应有的外观):

Printedview(它在打印文档上的外观):

【问题讨论】:

  • 总的来说,我发现在不同浏览器之间打印 HTML 不一致并且通常很麻烦,更不用说它很少看起来不错。您有机会输出 .pdf 文件进行打印吗?
  • 您清除缓存了吗?如果文件在其缓存中,浏览器有时无法获取最新版本的文件。
  • @vari,缓存在这方面没有任何作用。内容发送给浏览器后,浏览器将关闭背景样式。这不是编程/api 问题,而是困扰 Web 开发人员多年的浏览器设置问题。

标签: c# javascript asp.net css printing


【解决方案1】:

您的样式表确实有效 - 查看标题字体。我怀疑发生的是浏览器没有打印背景颜色。

转到浏览器中的页面设置/打印设置并检查背景图像和颜色是否已打开。

火狐

IE9

【讨论】:

  • 不幸的是,对于所有客户来说,没有一个很好的方法来规避这个问题。它是我们无法更改的浏览器设置。您的用户必须自己做。
  • @Kirean 可能对地球有好处 - 想想所有节省的碳粉 :)
  • 谢谢 4 的重播!我刷新了几次并删除了缓存,但这并没有解决问题。我已经有一个 PDF 导出功能,但我需要它以单独的方式工作。您的屏幕截图中的窗口不是我可以从打印对话框访问的窗口,并且在我的打印对话框或任何子对话框中没有打印背景的选项。有人知道其他可以尝试的吗?
  • @psynnott 是的。我通常建议人们不要再打印网站(因为它们不是为当前的 web 2.0 应用程序制作的),但我有相当一部分客户说“但是为什么我的用户不能打印我的网站?!?”悲伤的故事,但它是 2012 年,你不需要纸质副本!
  • @WesleyLalieu 它是一个 浏览器 设置。这不能从打印对话框访问,而是浏览器工具/设置。据我所知,API中没有强制它的覆盖,每个用户都必须打开它。
猜你喜欢
  • 2011-10-28
  • 1970-01-01
  • 2021-05-04
  • 2011-07-31
  • 1970-01-01
  • 2017-04-16
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多