Since Viewer3D. getScreenShot has produced a nice image for viewer, I tried to firstly get screenshot of viewer container by Viewer3D. getScreenShot, then get a temporary canvas of property panel by html2canvas, finally merge them together. It looks working.
But after screenshot, property panel cannot pop out anymore. It disappeared :( After digging into, I found the issue is because HTML2Canvas makes a clone of current document elements (all elements), and produces the canvas for the element that for screenshot. Although I do not know why it does so, I found when it makes the clone, it does not copy the css style ( e.g. Viewer style.css) which was bound with the element initially. While HTML2Canvas will append the cloned elements to current body (with same id) . So original element with same id also lost any style. Thus the property panel looks disappeared. Actually it was there, yet no style.