[]
일반적으로 보고서 데이터를 인쇄하기 전에 사용자는 인쇄 작업이 수행된 후 문서가 어떻게 보일지 미리 확인하고자 합니다. 이를 위해 Print Preview(인쇄 미리 보기) 대화 상자를 사용하여 페이지 레이아웃 문제를 식별하고, 보기 및 수정할 수 있습니다.
그러나 아쉽게도 Print Preview 대화 상자는 전체 워크시트에 대한 미리 보기만 생성할 수 있으며, 특정 데이터만 미리 보고 인쇄하는 기능은 제공하지 않습니다.
SpreadJS는 사용자가 인쇄을 위한 미리 보기 선(Preview Lines) 을 표시할 수 있도록 하여, 원하는 데이터만 사용자 지정 조건에 따라 인쇄할 수 있도록 지원합니다.
이 기능은 특히 워크시트가 크고, 그중 일부 범위의 셀만 서로 다른 페이지에 나눠 인쇄하고자 할 때 유용합니다.
사용자는 Worksheet 클래스의 isPrintLineVisible 메서드를 사용하여 워크시트에서 미리 보기 선을 표시할지 여부를 설정하거나 확인할 수 있습니다.
예를 들어, 여러 지역의 제품 판매 정보 및 기타 통계 수치를 포함하는 마케팅 애플리케이션에서 작업 중이라고 가정해 보겠습니다.
이제 지역별 판매 데이터를 서로 다른 페이지에 나눠 인쇄하고자 할 때, 인쇄될 데이터가 올바른 페이지에 배치되는지 미리 확인하는 것이 중요합니다.
이때 인쇄 미리 보기 선을 표시하면, 사용자는 특정 데이터가 정확히 원하는 페이지에 인쇄되도록 확인할 수 있습니다.
아래 이미지는 인쇄 미리 보기 선이 표시된 예시를 보여줍니다.
사용자가 시작 행을 2
, 시작 열을 1
, 종료 행을 6
, 종료 열을 4
로 설정한 경우, 인쇄 영역은 B3:E7로 표시되며 해당 부분에 미리 보기 선이 나타납니다.
다음은 인쇄 미리 보기 선을 표시하는 방법을 보여주는 코드 샘플입니다:
$(document).ready(function ()
{
//spread 초기화
var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'),
{ sheetCount: 1 });
spread.suspendPaint();
// ActiveSheet 가져오기
var sheet = spread.getActiveSheet();
sheet.setRowCount(600);
sheet.setColumnCount(80);
// 값 설정
for (var r = 0, rc = sheet.getRowCount() + 150; r < rc; r++) {
for (var c = 0, cc = sheet.getColumnCount() + 20; c < cc; c++) {
sheet.setValue(r, c, r + c);
}
}
// 인쇄 정보 설정
var printInfo = sheet.printInfo();
spread.resumePaint();
$("#print").click(function () {
spread.print();
});
$("#printLine").click(function () {
var activeSheet = spread.getActiveSheet();
var isDisplayPrintLine = activeSheet.isPrintLineVisible();
activeSheet.isPrintLineVisible(!isDisplayPrintLine);
});
$("#updatePrintInfo").click(function () {
var activeSheet = spread.getActiveSheet();
var printInfo = activeSheet.printInfo();
var startRow = parseInt(document.getElementById("startRow").value);
var endRow = parseInt(document.getElementById("endRow").value);
var startColumn = parseInt(document.getElementById("startColumn").value);
var endColumn = parseInt(document.getElementById("endColumn").value);
printInfo.rowStart(startRow);
printInfo.rowEnd(endRow)
printInfo.columnStart(startColumn);
printInfo.columnEnd(endColumn);
});
});