繁体   English   中英

dojo / dijit和Printing

[英]dojo/dijit and Printing

我希望能够为我的用户提供一个按钮来打印我的dojo / dijit应用程序的特定部分。 在打印方面似乎普遍缺乏文档和示例。

例如,我有一个特定的dijit.layout.ContentPane ,其中包含我要打印的内容,但我不想打印文档的其余部分。 我在网上看到了一些纯JavaScript示例,其中node.innerHTML被读入“隐藏”的iframe,然后从那里打印出来。 我怀疑它会起作用,但我想知道是否有更多的以dojo为中心的打印方法。

有什么想法吗?

我已经决定沿着阅读<iframe>的路径并从那里进行打印,但由于我使用的是渲染的dojox.gfx曲面,因此从目标ContentPane直接读取到不可见的iframe在某些浏览器中无法正常工作。 所以我所做的是将iframe的“src”设置为重新呈现图表的页面,然后在完成后将其打印出来。 在主文档中,它看起来像这样:

<iframe id="printIFrame4" src="#" style="width: 0px; height:0px; 
  border: none; background: transparent"></iframe>
<button dojoType="dijit.form.Button" style="margin-top: -3px;" id="buttonPrintMap4">
  Print...
  <script type="dojo/method" event="onClick" args="event">
    dojo.byId("printIFrame4").src = "logmap/docMap.php?id=4";
  </script>
</button>

然后页面执行必要的dojo内容来重新绘制图表,然后一旦加载它就会执行:

this.focus();
this.print();

然后进行印刷。

一种解决方案是创建仅打印样式表,而第一个规则默认隐藏所有内容:

body {
    display: none;
}

然后,第二个CSS规则(也在仅打印样式表中)仅显示Dojo内容窗格:

#contentPaneId {
    display: block;
}

Dojo ContentPane ID需要与CSS中用于#contentPaneId内容相匹配。

最后,您可以在link标记中使用media="print"指示浏览器它是一个仅打印的CSS文件:

<link rel="stylesheet" type="text/css" href="printOnly.css" media="print"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM