|
|
@@ -47,32 +47,36 @@
|
|
|
if (idx === 0) {
|
|
|
$(document).attr("title", pageData[JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]);
|
|
|
}
|
|
|
- let svgArr = rptPrintHelper.buildSvgArr(pageData, G_OFFSET_X, G_OFFSET_Y);
|
|
|
+ let orgPixelSize = getPixelSize(pageData);
|
|
|
+ let actArea = getActualArea(pageData);
|
|
|
+ let svgArr = rptPrintHelper.buildSvgArr(pageData, actArea, G_OFFSET_X, G_OFFSET_Y);
|
|
|
//let orientation = (pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][0] < pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][1])?"纵向":"横向";
|
|
|
let orientation = "纵向";
|
|
|
- showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, orientation);
|
|
|
+ showPreviewData(svgArr, actArea, scaleFactor, sessionStorage.pageSize, orientation, orgPixelSize);
|
|
|
}
|
|
|
window.print();
|
|
|
} else if (sessionStorage.currentPageData) {
|
|
|
let pageData = JSON.parse(sessionStorage.currentPageData);
|
|
|
let scaleFactor = parseInt(sessionStorage.scaleFactor);
|
|
|
- let svgArr = rptPrintHelper.buildSvgArr(pageData, G_OFFSET_X, G_OFFSET_Y);
|
|
|
+ let orgPixelSize = getPixelSize(pageData);
|
|
|
+ let actArea = getActualArea(pageData);
|
|
|
+ let svgArr = rptPrintHelper.buildSvgArr(pageData, actArea, G_OFFSET_X, G_OFFSET_Y);
|
|
|
$(document).attr("title", pageData[JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]);
|
|
|
//showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, sessionStorage.orientation);
|
|
|
- showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, "纵向");
|
|
|
+ showPreviewData(svgArr, actArea, scaleFactor, sessionStorage.pageSize, "纵向", orgPixelSize);
|
|
|
window.print();
|
|
|
} else if (sessionStorage.currentPageSvgData) {
|
|
|
let svgArr = JSON.parse(sessionStorage.currentPageSvgData);
|
|
|
let scaleFactor = 1;
|
|
|
//showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, sessionStorage.orientation);
|
|
|
- showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, "纵向");
|
|
|
+ showPreviewData(svgArr, null, scaleFactor, sessionStorage.pageSize, "纵向", null);
|
|
|
window.print();
|
|
|
} else {
|
|
|
//alert("没有报表数据!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- function showPreviewData(svgArr, scaleFactor, pageSize, orientation) {
|
|
|
+ function showPreviewData(svgArr, actAreaArr, scaleFactor, pageSize, orientation, orgPixelSize) {
|
|
|
let orgHeight = 793, orgWidth = 1122;
|
|
|
if (pageSize === 'A3') {
|
|
|
orgHeight = 1122;
|
|
|
@@ -89,16 +93,48 @@
|
|
|
}
|
|
|
|
|
|
for (let i = 0; i < svgArr.length; i++) {
|
|
|
+ let offsetHeight = 0, offsetWidth = 0;
|
|
|
+ if (actAreaArr) {
|
|
|
+ offsetWidth = actAreaArr[i].Left + (pageWidth - actAreaArr[i].Right) - 5;
|
|
|
+ offsetHeight = actAreaArr[i].Top + (pageHeight - actAreaArr[i].Bottom) - 5;
|
|
|
+ if (orgPixelSize[0] > orgPixelSize[1]) {
|
|
|
+ //横向强制改纵向(系统是以纵向为准),那么计算offset的方式会有所不同
|
|
|
+ offsetWidth = actAreaArr[i].Top + (pageWidth - actAreaArr[i].Bottom) - 5;
|
|
|
+ offsetHeight = actAreaArr[i].Left + (pageHeight - actAreaArr[i].Right) - 5;
|
|
|
+ }
|
|
|
+ }
|
|
|
let div = $('<div class="pageBreak"></div>');
|
|
|
div.append($(svgArr[i].join("")));
|
|
|
$(div).find("svg").each(function(cIdx,elementSvg){
|
|
|
- elementSvg.setAttribute('height', pageHeight);
|
|
|
- elementSvg.setAttribute('width', pageWidth);
|
|
|
+ elementSvg.setAttribute('height', pageHeight - offsetHeight);
|
|
|
+ elementSvg.setAttribute('width', pageWidth - offsetWidth);
|
|
|
});
|
|
|
$("body").append(div);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ function getActualArea(pageData) {
|
|
|
+ let rst = [];
|
|
|
+ for (let item of pageData.items) {
|
|
|
+ let area = {Left: 10000, Right: 0, Top: 10000, Bottom: 0};
|
|
|
+ for (let cell of item.cells) {
|
|
|
+ if (cell.area.Left < area.Left) {
|
|
|
+ area.Left = cell.area.Left;
|
|
|
+ }
|
|
|
+ if (cell.area.Right > area.Right) {
|
|
|
+ area.Right = cell.area.Right;
|
|
|
+ }
|
|
|
+ if (cell.area.Top < area.Top) {
|
|
|
+ area.Top = cell.area.Top;
|
|
|
+ }
|
|
|
+ if (cell.area.Bottom > area.Bottom) {
|
|
|
+ area.Bottom = cell.area.Bottom;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rst.push(area);
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ }
|
|
|
function closing() {
|
|
|
//
|
|
|
}
|