# 페이지 나누기 설정

## Content

리포트 시트에서는 페이지 나누기 기능을 지원합니다. 이 기능을 사용하면 다양한 리포트 레이아웃 요구 사항에 맞게 템플릿 시트에서 페이지 나누기 설정을 사용자 지정할 수 있습니다. 페이지 나누기를 활성화하려면, [GC.Spread.Report.TemplateSheet](/spreadjs/api/v18/classes/GC.Spread.Report.TemplateSheet) 클래스의 `setPaginationSetting` 메서드를 사용해 페이지 설정을 구성해야 합니다.
리포트를 페이지별로 출력할 때, 리포트 시트는 템플릿 시트의 페이지 설정, 템플릿 셀의 페이지 설정, 인쇄 정보의 용지 크기를 종합하여 최종 페이지 설정을 만듭니다.

>type=warning
> **참고:** 페이지 나누기 설정은 [`PaginatedPreview`](/spreadjs/docs/v18/features/reportsheet/report-sheet-settings/render-mode) 렌더 모드에서만 적용됩니다.

리포트 시트의 페이지 기능은 리포트 레이아웃을 자유롭게 구성할 수 있도록 지원합니다. 행 기준 또는 용지 크기 기준으로 페이지를 나눌 수 있습니다.

## 행 단위 페이지 설정

[IPaginationSetting](/spreadjs/api/v18/interfaces/GC.Spread.Report.IPaginationSetting) 인터페이스의 `rowPagination` 속성을 사용하여 행 기준 페이지 나누기를 설정할 수 있습니다. 이 모드는 각 페이지에 일정한 수의 행을 표시할 때 유용합니다.
다음은 행 기반 페이지 나누기 설정 예제입니다:

```auto
// 행 단위 페이지 설정
templateSheet.setPaginationSetting({    
   rowPagination: {       
        paginationDataCell: 'A2',        
        rowCountPerPage: 20,
   },    
   titleRow: {
        start: 0,
        end: 0,
   },
});
```

## 용지 크기 기준 페이지 설정

[IPaginationSetting ](/spreadjs/api/v18/interfaces/GC.Spread.Report.IPaginationSetting)인터페이스의 `paperSizePagination` 속성을 사용하여 용지 크기 기반 페이지 나누기를 설정할 수 있습니다. 이 모드는 리포트를 인쇄할 때 이상적이며, 용지 크기에 따라 레이아웃을 조정할 수 있습니다.
다음은 용지 크기 기반 페이지 나누기 설정 예제입니다:

```auto
// 용지 크기 기준 페이지 설정
templateSheet.setPaginationSetting({ 
        paperSizePagination: true,
        titleRow: {
                 start: 0,
                 end: 0,
       },
       titleCol: {
                 start: 0,
                 end: 0,
       },
       paginationOrder: 'OverThenDown',   // 'DownThenOver' | 'OverThenDown'
});
```

## 셀 단위 페이지 설정

리포트 시트는 셀 단위로 다양한 페이지 나누기 동작을 제어할 수 있는 셀 페이지 설정을 지원합니다. 특정 행/열에 대해 페이지 속성 값을 [setTemplateCell](/spreadjs/api/v18/classes/GC.Spread.Report.TemplateSheet) 메서드에서 `true`로 설정하면 됩니다.
사용 가능한 페이지 속성 목록은 다음과 같습니다:

* `paginateBeforeRow`
* `paginateAfterRow`
* `paginateBeforeColumn`
* `paginateAfterColumn`
* `canBreakWhenPaging`
* `repeatContentWhenPaging`

다음은 `paginateAfterRow` 속성을 사용하여 각 주문을 별도의 페이지에 표시하도록 리포트를 설계하는 코드 샘플입니다:

```auto
templateSheet.setTemplateCell(3, 0, {
       type: 'Static',
       context: {
            vertical: "A3"
       },
       paginateAfterRow: true, 
});

// PaginatedPreview 모드로 전환하여 리포트 보기
reportSheet.renderMode('PaginatedPreview');
reportSheet.refresh();
```

다음은 `canBreakWhenPaging` 및 `repeatContentWhenPaging` 속성을 `true`로 설정한 또 다른 코드 샘플입니다. 이 경우, 셀이 현재 페이지의 마지막 행까지 확장되면 페이징으로 인해 셀이 분할될 수 있으며, 해당 행은 첫 번째 페이지에 완전히 표시되지 않고 다음 페이지에 반복되어 나타납니다:

```auto
templateSheet.setTemplateCell(3, 0, {
      type: 'Static',
      context: {
            vertical: "A3"
      },
      canBreakWhenPaging: true, 
      repeatContentWhenPaging: true 
});

// PaginatedPreview 모드로 전환하여 리포트 보기
reportSheet.renderMode('PaginatedPreview');
reportSheet.refresh();
```

## SpreadJS 디자이너 사용하기

리포트 시트에서 페이지 설정을 구성하려면 다음 단계를 따르시기 바랍니다.:

1. **리포트 시트 디자인(REPORT SHEET DESIGN)** 탭으로 이동하여 페이지 설정(Pagination Setting)을 선택합니다.
    **페이지 설정(Pagination Setting)** 대화 상자가 나타납니다.
    ![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/d37fbce1-6a37-43ce-b728-dd79fba68421/image.4618ec.png)
2. **유형(Type)** 드롭다운에서 **페이지 표시 유형(Pagination Type)**을 선택합니다.
    선택 가능한 옵션: 용지 크기 페이지 표시(PaperSize Pagination) 또는 행 페이지 표시(Row Pagination)
3. 행/열의 타이틀 및 끝 영역에 대한 **제목과 끝**(**Titles And Ends**)을 설정합니다.
4. **페이지 순서(Page Order)** 섹션에서 "행 우선(Down, then over)" 또는 "열 우선(Over, then down)" 중 하나를 선택합니다.
    선택한 방향은 미리 보기 상자에 표시됩니다.
<br>

또한 각 페이지에 행/열의 타이틀 또는 끝 부분을 반복 표시할 수도 있습니다. 반복 표시하려면 마우스 오른쪽 버튼을 클릭하여 **반복할 제목 열 설정(Set Repeat Title Columns)** 또는 **반복할 끝 열 설정(Set Repeat End Columns)**를 선택합니다.
![image](https://gcdocumentsitekrblob.blob.core.windows.net/document-site-files/images/d37fbce1-6a37-43ce-b728-dd79fba68421/image.48fd78.png?width=320)