【问题标题】:window.print() doesn't print entire pagewindow.print() 不打印整个页面
【发布时间】:2020-05-26 07:34:55
【问题描述】:

我正在尝试使用window.print() 打印新打开的窗口。

我的问题是,只有页面的 start 部分正在打印(只有当您滚动到窗口左上角时看到的内容)。

这是我的代码:

var printWindow = window.open("", "Print", "width=" + nWidth + "px, height=" + nHeight+ "px");
printWindow.document.write(sSvgData, sDivData);
printWindow.document.close();
printWindow.print();

我已经尝试过的解决方案,但对我不起作用:

1) 将整个 html 写入文档(使用window.document.write())并在标题中包含我的css

<html><head><link rel="stylesheet" href="../css/style.css" type="text/css" media="print"/></head> 
<body>...

style.css:
@media print {
  body, html, div, #wrapper {
      height: 100%;
      width: 100%;
  }
}

2) 与 1) 相同,但包括内联样式:

<html><style>@media print { body, html, #wrapper { height: 100%; width: 100%;} }</style><body>...

【问题讨论】:

    标签: javascript jquery window


    【解决方案1】:

    JavaScript 中的窗口仅指可见窗口。如在屏幕上可见的任何内容。

    1) 一种方法是单独滚动和打印每一页。

    2) 其他方法是使用@media css,但您还需要将 div 标签设置为高度 100%。

    @media print {
          body, html, div, #wrapper {
              height: 100%;
          }
    }
    

    如果这也不起作用,请在浏览器中检查页面并检查所有标签。有些网站使用标签或其他标签,因此您需要查看您尝试打印的网站中的所有标签,并将它们全部添加到相同的 css 打印样式中。

    另外,如果这有帮助,请尝试:http://jsfiddle.net/nAFSN/1/

    编辑:很久以前我也花了相当多的时间来摸索它,我强烈建议使用 pdf。尝试创建内容的 pdf,并在用户单击打印时将其发送回给用户。这样,您将可以更好地控制在每个页面上显示的方式和内容。

    【讨论】:

    • 试过这个,整个页面基本上只包含html、body、svg、div。所以我将 div 和 svg 都添加到 css 中,现在它建议打印更多页面(通常只有 1 个)但其余页面都是空的
    • 不相关,但也许您可以尝试创建内容的 pdf 并在用户单击打印时将其发送回给用户?这样,您就可以更好地控制在每个页面上显示的方式和内容。
    • 老实说,这似乎是最好的方法,是的。我也没有找到其他方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多