[英]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.