1

我的团队一直在寻找解决此问题的方法。我们有一个应用程序可以动态创建带有流的图表(图形)。它还在“swinlane”中显示形状,这基本上是由带有边框和背景颜色的 div 包围的对象。一切看起来都很棒。我们遇到的问题是尝试打印此视图时。

我们只是使用现有的 html(变量名 printContent)。我们打开一个单独的窗口并调用 print:


var pw = window.open('', 'View', 'width=900,height=600');
pw.document.open();
pw.document.write('<html><head></head><body>' + printContent + '</body></html>');
pw.document.close();
pw.focus();
pw.print();
pw.close();

内容实际上在新窗口中看起来是正确的。打印机打印时,顶部的“swinlane”不显示边框或背景。其余正常。

我们尝试在文件->页面设置中检查“打印背景颜色和图像”,但没有效果。

4

1 回答 1

1

我又回到了这个问题。我不确定这是这个问题的确切答案,但它解决了我的问题。

我的任务是让我们的查看器的在线版本可以离线工作。这是我偶然发现一个可能的解决方案的地方。我(认为)部分问题原来是正在呈现的新窗口和自动打开打印功能之间的时间问题。当打印功能打开时,它似乎抓取了渲染到新窗口的内容。

我决定我必须选择:

  1. 不要使用打印功能并允许用户使用菜单栏。
  2. 我添加了以下代码来使用 setTimeout:

    var fnTimeout = function () {
        setTimeout(function () {
    
            if (window.document.readyState == "complete") {
                window.focus();
                window.print();
            }
            else {
                fnTimeout();
            }
        }, 500);
    };
    
    fnTimeout();
    
于 2013-06-25T16:55:02.007 回答