您好,
如果您只需要打印SuperMap iClient3D for Cesium中的场景内容,可参考官方“场景出图”示例:http://support.supermap.com.cn:8090/webgl/Cesium/examples/webgl/editor.html#outputScene。
官方示例输出结果为当前场景的jpg格式图片,直接打印输出的图片即可。
希望可以帮助到您!
浏览器打印是浏览器厂商提供的功能,不属于超图产品,友情支持仅供参考,根据查询为您提供以下两种办法:
(1)根据scene.outputSceneToFile拿到画面场景内容的base64data,具体可参考上一条回答有关于场景出图的官方示例,将打印的内容添加到iframe里,将base64data转换为image标签,然后打印整个iframe,具体代码参考如下:
function printInIFrame(base64data) { const printContentHtml = `<img style="position:absolute;top:0px;left:0px;width:100%;height:100%" src="${base64data}"/>` const iframe = document.createElement("iframe"); iframe.setAttribute( "style", "position:absolute;top:0px;left:0px;width:100%;height:100%" ); document.body.appendChild(iframe); iframe.contentDocument.write(printContentHtml); setTimeout(() => { iframe.contentDocument.close(); iframe.contentWindow.print(); }, 3000); };
(2)根据scene.outputSceneToFile拿到画面场景内容的base64data,将其添加到一个新创建的div元素中。将base64data转换为image标签,接着将这个div元素添加到页面的body中,并在一定时间后触发打印功能,然后再将添加的内容移除,具体代码参考如下:
function printInBody(base64data) { const printContentHtml = `<img style="position:absolute;top:0px;left:0px;width:100%;height:100%" src="${base64data}"/>` var div = document.createElement("div"); div.innerHTML = printContentHtml; document.body.appendChild(div); setTimeout(() => { window.print(); }, 1000); setTimeout(() => { document.body.removeChild(div); }, 3000); };
希望能够帮助到您!