diff --git a/resources/views/rd/planning-design/index.blade.php b/resources/views/rd/planning-design/index.blade.php index 04bf04d6..ea0a525f 100644 --- a/resources/views/rd/planning-design/index.blade.php +++ b/resources/views/rd/planning-design/index.blade.php @@ -1473,6 +1473,8 @@
+ @@ -3607,7 +3609,15 @@ function planningCanvas() { }); html += '
'; if (pg.blocks && pg.blocks.length > 0) { - pg.blocks.forEach(blk => { html += this.sbExportBlock(blk); }); + // 캔버스 높이 계산 + const maxBottom = Math.max(...pg.blocks.map(b => (b.y || 0) + (b.h || 40)), 400); + html += '
'; + pg.blocks.forEach(blk => { + html += '
'; + html += this.sbExportBlock(blk); + html += '
'; + }); + html += '
'; } else if (pg.wireframeImage) { html += ''; } else if (pg.wireframeContent) { @@ -3637,6 +3647,76 @@ function planningCanvas() { URL.revokeObjectURL(url); }, + sbPrintPreview() { + // HTML 내보내기와 동일하게 생성 후 새 창에서 인쇄 + const origExport = this.sbExportHtml.bind(this); + let html = '' + + (this.sb.docInfo.projectName || 'Storyboard') + ' - 인쇄' + + ''; + + this.sb.pages.forEach((pg, idx) => { + html += '
'; + html += '
단위업무명
' + (this.sb.docInfo.unitTask || '-') + '
'; + html += '
버전
' + (this.sb.docInfo.version || '-') + '
'; + html += '
Page
' + (idx + 1) + '
'; + html += '
경로
' + (pg.path || '-') + '
'; + html += '
화면명
' + (pg.screenName || '-') + '
'; + html += '
화면 ID
' + (pg.screenId || '-') + '
'; + html += '
'; + if (pg.blocks && pg.blocks.length > 0) { + const maxBottom = Math.max(...pg.blocks.map(b => (b.y || 0) + (b.h || 40)), 400); + html += '
'; + pg.blocks.forEach(blk => { + html += '
'; + html += this.sbExportBlock(blk); + html += '
'; + }); + html += '
'; + } + html += '
'; + if (pg.descriptions && pg.descriptions.length > 0) { + html += '
Description
'; + pg.descriptions.forEach((d, di) => { + html += '
' + String(di + 1).padStart(2, '0') + '
'; + html += '
' + (d.text || '').replace(/\n/g, '
') + '
'; + }); + html += '
'; + } + html += '
'; + }); + + html += ''; + const printWin = window.open('', '_blank'); + printWin.document.write(html); + printWin.document.close(); + printWin.onload = () => { printWin.print(); }; + }, + sbExportBlock(blk) { const esc = (s) => (s || '').replace(//g, '>'); switch (blk.type) {