我試圖從我的全屏創建格式化的打印頁面時遇到問題OpenLayers Web應用程序。OpenLayers使用innerHTML打印
當我打電話給我的打印功能時,我使用CSS樣式的HTML創建一個新窗口。我從OpenLayers畫布獲得innerHTML
,並將內容粘貼到打印頁面上的新畫布div。
{
var widthPx = document.getElementById('OpenLayers_canvas').offsetWidth;
var heightPX = document.getElementById('OpenLayers_canvas').offsetHeight;
var html =
'<html><head>'
+ '<link rel="stylesheet" href="styles/olStyle_printing.css" type="text/css" />'
+ '</head><body>'
+ '<div id="OpenLayers_printcanvas">'
+ '<div style="width:' + widthPx + 'px;height:' + heightPX + 'px" id="OpenLayers_canvas">'
+ document.getElementById('OpenLayers_canvas').innerHTML
+ '</div>'
+ '</div>'
+ '</body></html>';
var w = window.open();
w.document.write(html);
w.document.close();
w.focus();
w.print();
//w.close();
}
問題是我不知道如何居中放置內容。
該地圖綁定在左上角。我想要做的是讓原始地圖的中心在打印頁面的框架中心。
編輯: 我添加了一個帶邊框的容器div。我可以隱藏溢出。但是,問題是我不知道如何將div放在容器中。
第一張截圖顯示的OpenLayers應用:
其次截圖顯示了我一個div容器內一個div的innerHTML內容創建文檔。
你能使[小提琴](http://jsfiddle.net)?這將有助於調試。 – Unknown
假設使用「檢查元素」,您可以找出白色覆蓋圖位於地圖左上角的位置,然後對其進行編碼以將整個div重新定位回屏幕左上角(通過給它一個負左上角) 。 – OGHaza
我現在通過硬編碼負頂部和左半部分使用地圖畫布寬度減去打印畫布寬度的一半來解決此問題。我不喜歡硬編碼值,但現在必須這樣做。 –