> ## Documentation Index
> Fetch the complete documentation index at: https://make.edicus.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 렌더 출력 옵션

> PDF 파일 분리, 색 공간, 해상도, 주문 정보 표시, 부가 페이지, 사진인화 상품을 정하는 렌더 엔티티

[렌더 옵션](/docs/products/render-options)의 엔티티 가운데 결과 파일의 형식과 덧붙는 내용을 정하는 것들입니다. 엔티티를 추가하는 방법과 렌더 포맷별 적용 여부는 렌더 옵션 페이지를 먼저 보세요.

## 배우는 것

* PDF 파일과 레이어를 나누는 방식
* 사진의 색 공간과 해상도를 다루는 엔티티
* 주문 정보 띠, 작업지시서, 부가 페이지, 썸네일
* 사진인화 상품 전용 엔티티
* 프리프레스 앱의 운영 설정(폴더 규칙, 콜백, 다시 렌더링)

## PDF와 이미지

### pdf-file-control

PDF2 전용입니다. 프리프레스 **Render Settings**의 **Post Layering**을 상품별로 덮어씁니다. 화면 이름이 `version`이지만 실제로는 분리 방식입니다.

| 화면 이름 | 저장 키 | 기본값 | 설명 |
| - | - | - | - |
| `version` | `mode` | `default` | `default`는 프리프레스 설정을 따릅니다(프리프레스 설정도 기본값 \*\*Default (Split File)\*\*이면 아래 `multi-file`과 같습니다). `layering`은 한 PDF 안에 CMYK, `White`, `Cut` 같은 레이어로, `paging`은 레이어마다 다른 페이지로, `multi-file`은 페이지 종류와 레이어마다 다른 파일(`content-CMYK.pdf`, `content-Cut.pdf` 등)로 나눕니다 |
| `split-page-to-file` | `splitPageToFile` | 꺼짐 | `layering`일 때만 동작합니다. 결과 페이지마다 파일을 따로 만듭니다(`-P1`, `-P2`) |
| `postlayer-priorities` | `postlayerPriorities` | 없음 | 렌더링에 쓰이지 않습니다. 레이어 순서는 프리프레스 **Post Layer Priorities**를 따릅니다 |

### 레이어와 파일 구성

PDF의 레이어 이름은 컬러 인쇄 내용인 `CMYK`와, 템플릿 후가공 레이어 이름(`Cut`, `KissCut` 등) 그리고 자동 화이트인 `White`입니다. 박은 PDF2와 PDF에서 따로 레이어가 되지 않습니다. 기본 방식(`layering`이나 `paging`이 아닌 경우로, `multi-file`과 같습니다)은 페이지 종류와 레이어마다 파일을 나누며, 파일 이름은 `페이지종류-레이어.pdf`(`content-CMYK.pdf`, `content-Cut.pdf`, `cover-CMYK.pdf`)입니다. **Post Layer Priorities**(기본 `Cut,KissCut`)는 `paging`에서 레이어 페이지의 순서를 정합니다.

PDF2는 편집기를 띄울 때 넘기는 띄우기 옵션 `option_string`의 `render_file_style` 키로도 방식을 받습니다. 예: `render_file_style=paging@single-postlayer`. 이 값은 프로젝트에 저장되고 렌더 옵션 화면에서는 정할 수 없습니다.

| 값 | 결과 |
| - | - |
| `paging` | 결과 페이지마다 `CMYK` 페이지 뒤에 각 레이어 페이지가 이어집니다 |
| `paging@single-postlayer` | 후가공 레이어 페이지는 첫 결과 페이지의 것 하나만 남기고 맨 뒤로 보냅니다 |
| `paging@white-combined` | `White`를 따로 페이지로 빼지 않고 `CMYK` 페이지 안의 레이어로 넣습니다 |
| `layering` | 한 PDF 안에 레이어로 나눕니다 |
| `layering@clone-printlayer` | `layering`에 `CMYK` 내용을 맨 끝 레이어로 한 번 더 복제해 넣습니다 |

### pdf-meta-control

PDF에 트림박스(재단 후 크기)와 블리드박스(도련 포함 크기)를 기록합니다. 값은 mm이며 `3`, `3,5`(좌우,위아래), `3,5,3,5`(왼,위,오른,아래)처럼 용지 가장자리에서 들어온 거리로 씁니다. `trimbox`, `bleedbox`는 내지용, `cover-trimbox`, `cover-bleedbox`는 표지용 스위치이고, 켜면 옆에 값 칸(`trim-value` 등)이 열립니다. `version`(`pdfVersion`)은 렌더링에 쓰이지 않습니다.

### pdf-image-control

PDF2 전용입니다. 사진의 색 공간을 다룹니다.

| 화면 이름 | 저장 키 | 기본값 | 설명 |
| - | - | - | - |
| `mode` | `mode` | `none` | `none`은 사진을 그대로 넣습니다. `convert-color`는 JPG와 PNG를 `target-profile` CMYK로 바꿉니다. `embed-profile`은 사진에 ICC 프로파일을 붙여 넣습니다 |
| `target-profile` | `targetProfile` | `default` | `convert-color`의 목표 프로파일입니다. PDF의 출력 의도(Output Intent)에도 기록됩니다. `default`는 템플릿에 지정된 CMYK 프로파일입니다 |
| `alt-rgb-profile`, `alt-cmyk-profile`, `alt-gray-profile` | `altRGBProfile`, `altCMYKProfile`, `altGrayProfile` | `srgb`, `us-web-coated`, `dot-gain-15` | 사진에 프로파일이 없을 때 원본 색 공간으로 가정할 프로파일입니다 |
| `jpg-invert-cmyk` | `jpgInvertCMYK` | 꺼짐 | CMYK JPG의 색이 반전돼 나올 때 켜서 되돌립니다 |

이 엔티티는 PDF에 넣는 사진만 다룹니다. 상품 설정의 `color-mode`는 프리프레스가 읽지 않으므로 출력 PDF 색과 관계없습니다. 저장된 옵션에 `jpgToCMYK`, `pngToCMYK` 키가 있어도 화면에 없고 렌더링에 쓰이지 않습니다.

### image-dpi-limit

사진이 이 해상도보다 크면 줄여서 넣어 파일 크기를 줄입니다. `dpi-limit`(`dpi_limit`, 기본 `300`, `none`이면 제한 없음)은 프리프레스의 **Image DPI Limit** 설정을 덮어씁니다. `limit-quality`(`limit_quality`, 기본 `95`)는 줄인 JPG의 품질입니다. `dpi-limit-cover`(`dpi_limit_cover`)는 SVG 계열에서만 표지에 따로 적용됩니다.

값을 올리면 사진이 덜 줄어 렌더링 시간과 파일 크기가 늘어납니다. 해상도는 사진이 페이지에 놓인 크기를 기준으로 계산합니다. `limit-quality`는 줄인 사진을 JPG로 다시 저장할 때의 화질이라 PNG 사진에는 차이가 없습니다. 이 엔티티가 없으면 프리프레스 **Render Settings**의 **Image DPI Limit**(기본 `none`)과 **Image Limit Quality**를 씁니다.

## 표시와 부가 페이지

### add-page-meta와 add-page-meta-cover

용지 가장자리에 주문 정보 글자 띠를 넣습니다. `add-page-meta-cover`는 SVG 계열에서 표지에만 쓰는 같은 구조의 엔티티이고, PDF2와 PDF는 `add-page-meta`를 모든 페이지에 씁니다.

| 화면 이름 | 저장 키 | 기본값 | 설명 |
| - | - | - | - |
| `position` | `position` | `bottom` | 띠 위치입니다. `left`, `right`는 글자를 세워 넣습니다 |
| `align` | `align` | `left` | `left`, `center` |
| `thickness` | `thickness_mm` | `12` | 띠 두께(mm)입니다. 음수면 용지를 늘리지 않고 안쪽에 겹쳐 씁니다 |
| `font-size` | `fontsize_mm` | `6` | 글자 크기(mm)입니다 |
| `metas` | `metas` | 없음 | 넣을 글자입니다. `$ON`(에디쿠스 주문 번호), `$PN`(파트너 주문 번호), `$PC`, `$SC`, `$NO` 같은 생산 변수를 쓸 수 있습니다. 여기서 `$NO`는 결과 페이지 번호(`1p` 형식. SVG 계열의 책 상품은 `cover`, `2-3p`처럼 씁니다)입니다. 비워 두면 렌더링이 실패합니다 |

<Warning>
  PDF2는 `position`이 `right`이면 렌더링이 실패하고, `left`도 보조선이 있으면 실패합니다. PDF와 SVG 계열은 `top`일 때 보조선이 없으면 실패합니다. 테스트 렌더로 꼭 확인하세요.
</Warning>

### add-job-statement

PDF2 전용입니다. 오픈마켓 주문 정보(마켓, 주문자, 주문 번호, 생산 수량, 상품명과 옵션)와 미리보기 이미지를 담은 작업지시서 페이지를 맨 앞에 넣습니다. 이 정보가 없는 주문에는 쓰지 않습니다.

| 화면 이름 | 저장 키 | 기본값 | 설명 |
| - | - | - | - |
| `position` | `mode` | `front-page` | `front-page`만 동작합니다. `extra-file`은 아무것도 만들지 않습니다 |
| `style` | `style` | `default` | 선택지는 `default` 하나입니다 |
| `size-type` | `size_type` | `fixed` | `fixed`는 아래 크기, `content`는 첫 페이지와 같은 크기입니다 |
| `page-width`, `page-height` | `page_width_mm`, `page_height_mm` | `210`, `297` | 작업지시서 크기(mm)입니다 |
| `font-size` | `fontsize_mm` | `10` | 글자 크기(mm)입니다 |

### additional-page

`template-uri`(`template_uri`) 템플릿의 페이지를 문서 맨 뒤에 덧붙입니다. 값은 **Resource** 상세의 `resUri`를 복사해 넣습니다. `position`은 `epilogue`(맨 뒤) 하나뿐이고 `mode`는 렌더링에 쓰이지 않습니다. PDF2에서는 덧붙인 페이지에 화이트가 생기지 않습니다.

### generate-tn

PDF2 전용입니다. `enable`을 켜면 원래 페이지마다 긴 변이 `tn-size`(`tn_size`, 기본 `200`) 픽셀인 PNG 썸네일을 결과 폴더의 `tn` 폴더에 만듭니다.

### jpg-control

JPG 포맷에서 `srgb-profile`(`injectProfile`)을 켜면 결과 JPG에 sRGB 프로파일을 넣습니다.

### merge-page-info

SVG 포맷의 `output.json`에서 여러 페이지를 한 페이지로 합쳐 적습니다. `single-layer`(기본 켜짐)는 `Cut`, `KissCut` 레이어를, `single-white`(기본 꺼짐)는 `White` 레이어를 첫 페이지 것 하나만 남깁니다. 나머지 레이어는 이름 뒤에 `-페이지번호`가 붙습니다.

### capture-control

프리프레스 **Work Settings**의 **Capture Enable**이 켜져 있을 때 이 상품의 캡처 여부를 `enable`로 정합니다. 캡처는 인쇄 파일과 별도로 페이지 이미지(JPG)를 만들어 **Work Settings** > **Capture** 탭의 **Capture Snapshot URL**로 보내는 기능입니다. `bound-width`, `bound-height`는 렌더링에 쓰이지 않습니다. PDF2는 캡처를 만들지 않습니다.

### 사진인화 상품 엔티티

[사진인화 상품](/docs/products/photo-print)(페이지 대신 인화 목록으로 주문하는 상품)은 템플릿 상품과 다른 엔진으로 렌더링하며, 아래 둘만 읽습니다. 전역 옵션(`0000@prepress`)은 적용되지 않으므로 상품의 `ps_code`에 직접 넣습니다.

* `print-to-pdf`: `enable`을 켜면 인화 이미지를 수량만큼 페이지로 넣은 PDF를 만들고, `pack-count`(기본 `200`)쪽마다 파일을 나눕니다.
* `bypass-image`: `enable`을 켜면 원본 사진을 보정 없이 그대로 씁니다. `resize`가 `min-limit`이면 짧은 변이 `limit-size`(mm)를 `limit-dpi`로 찍는 픽셀 수가 되게 크기를 맞춥니다. `limit-size`, `limit-dpi`의 기본값은 `0`, `300`입니다.

## 프리프레스 설정

설정은 **Work Settings**와 **Render Settings**에서 바꾸고 **Apply**를 눌러야 저장됩니다. 설정은 그 PC에만 저장되며, 첫 화면의 **export config**와 **import config**로 옮길 수 있습니다.

| 위치 | 설정 | 하는 일 |
| - | - | - |
| **Work Settings** > **Ganeral**(화면 표기 그대로입니다) | **Render Target** | `production`이면 실주문, `development`이면 테스트 주문만 **Start Render**가 가져갑니다. 테스트 주문을 자동 렌더링하려면 `development`로 둡니다 |
| | **Render Folder**, **Manual Folder** | 결과 폴더는 **Start Render**와 **Manual Render** 모두 **Manual Folder** 아래에 만들어집니다. **Render Folder**에는 로그(`log`)와 임시 파일(`tmp`)만 쌓이고, **Open Render Folder**는 이 폴더를 엽니다 |
| | **Callback URL** | 렌더링이 끝나면 이 주소로 결과를 POST합니다. 아래를 보세요 |
| **Work Settings** > **Path** | **Custom Path**, **Path Rule**, **File Rule**, **Deadline** | 결과 폴더와 파일 이름을 변수로 정합니다. 아래를 보세요 |
| **Work Settings** > **Etc** | **Use Spool**, **Spool Folder**, **Spool Variable** | 결과 폴더에 만든 결과 파일을 **Spool Folder**로 한 번 더 복사합니다. PDF 복사본 이름은 `Spool Variable-파일명-번호.pdf`이고 **Spool Variable** 기본값은 `$PN-$NO`입니다. 주문의 `userdata_json`에 `output_prefix`가 있으면 그 값이 **Spool Variable** 자리에 들어갑니다 |
| | **Self Watch Dog** | **Start Render** 중 10분 넘게 진행 신호가 없으면 앱을 재시작하고 렌더링을 이어 갑니다. 오래 걸리는 주문은 중간에 끊겨 파일이 덜 만들어질 수 있습니다 |
| **Render Settings** > **Template Product** | **Template Render Format**, **Post Layering**, **Post Layer Priorities**, **Image DPI Limit** | 렌더 포맷과 PDF 레이어 분리 방식, 해상도 상한입니다. [렌더 출력 옵션](/docs/products/render-output#pdf-file-control)을 보세요 |

### 결과 폴더와 파일 이름 규칙

**Custom Path**를 켜면 결과 폴더가 `Manual Folder\Path Rule`이 됩니다. 주문의 `userdata_json`에서 `origin`(없으면 `market_platform`)이 `NSS`인 주문은 **NSS** 규칙을, 나머지는 **EDICUS** 규칙을 씁니다. **File Rule**은 결과 파일 이름 앞에 붙고 PDF2, PNG, JPG, IPDF에만 적용됩니다. **Deadline**은 기준 시각(`userdata_json`의 `production_request_datetime`, 없으면 `order_datetime`)이 그 시각을 넘으면 `$OD`를 다음 날로 넘깁니다.

<Warning>
  프리프레스는 렌더링할 때마다 결과 폴더를 지우고 다시 만듭니다. **Path Rule**의 마지막 폴더에 `$ON`처럼 주문마다 다른 변수를 넣지 않으면 앞 주문의 결과가 지워집니다.
</Warning>

| 변수 | 값 | 변수 | 값 |
| - | - | - | - |
| `$YY` `$MM` `$DD` | 렌더링 시점 연, 월, 일 | `$MP` `$DP` | 두 자리 월, 일 |
| `$HH` `$mm` | 렌더링 시점 시, 분 | `$HP` `$mP` | 두 자리 시, 분 |
| `$ON` | 에디쿠스 주문 번호 | `$PN` | 파트너 주문 번호 |
| `$PC` `$SC` | 상품 코드, 사이즈 코드 | `$PD` `$SD` | 상품 이름, 사이즈 이름 |
| `$OC` | 주문 수량 | `$TT` | 프로젝트 제목 |
| `$NO` | 아래를 보세요 | `$RT` | 렌더 제목(없으면 `상품이름_사이즈이름`) |

아래 변수는 주문의 `userdata_json` 키에서 옵니다. 키 형식은 [주문](/docs/server/orders)의 `userdata_json` 표와 같습니다.

| 변수 | `userdata_json` 키 | 변수 | `userdata_json` 키 |
| - | - | - | - |
| `$UN` | `user_name` | `$RN` | `receiver_name` |
| `$OT` | `order_name` | `$RC` | `production_count` |
| `$PE` | `edicus_platform` | `$PM` | `market_platform` |
| `$SN` | `seller_id` | `$BN` | `order_id`(마켓 주문 번호) |
| `$IN` | `store_item_id` | `$EN` | `editor_item_id` |
| `$IT` | `order_detail.item_name` | `$PT` | `order_detail.option_name` |
| `$OP` | `options` | `$OD` | `production_request_datetime`, 없으면 `order_datetime`(YYYYMMDD) |

`$NO`는 쓰는 곳마다 값이 다릅니다. **Spool Variable**에서는 `0`부터 세는 파일 순번(PNG, JPG는 페이지 순번)이고, **Path Rule**과 **File Rule**에서는 늘 `0`입니다. `add-page-meta`의 `metas`에서는 페이지 번호입니다.

`userdata_json` 변수는 값이 없을 때 이렇게 됩니다.

* 주문에 `userdata_json`이 없으면 위 변수는 바뀌지 않고 적은 글자(`$UN` 등) 그대로 남습니다.
* `userdata_json`이 있어도 `order_detail`이 없으면 `$IT`, `$PT`가, `options`가 없으면 `$OP`가, `production_request_datetime`과 `order_datetime`이 모두 없으면 `$OD`가 글자 그대로 남습니다.
* `$PE`, `$PM`, `$SN`, `$BN`, `$IN`, `$EN`은 키가 없으면 빈 값이 됩니다. `$UN`, `$RN`은 `noname`, `$RC`는 `0`, `$OT`는 주문의 `order_name`으로 채워집니다.

Manager의 **Test Order**는 `userdata_json`을 `{}`로 보내므로 테스트 주문에서는 `$UN`, `$RN`이 `noname`이 됩니다.

**Render Settings**의 **Production Var** 탭에서 변수를 더 만들 수 있습니다. 주문자 이름 같은 값에 `\ / : "`처럼 Windows 폴더 이름에 쓸 수 없는 문자가 있으면 폴더를 만들지 못해 렌더링이 실패할 수 있습니다.

### Callback URL 형식

성공하면 `status: "success"`, `render_as`(`auto` 또는 `manual`), `prepress_ver`, `partner_code`, `user_id`, `order_id`, `prodCode`, `sizeCode`, `output`(결과 `output.json` 내용)을 JSON으로 보냅니다. 실패하면 `status: "fail"`과 `time`, `log`(실패 원인)를 보냅니다. Manual Render는 **After Manual Render** 스위치를 켜고 확인 창에서 승인할 때만 호출합니다.

### 다시 렌더링하기

* Edicus Manager **Order** 화면에서 주문 행의 **More** 메뉴 **reorder**를 누르면 주문이 `ordered` 상태로 돌아가 **Start Render**가 다시 가져갑니다.
* 한 건만 다시 보려면 프리프레스 **Manual Render**를 씁니다.
* 결과가 덜 만들어졌다면 **Self Watch Dog** 재시작 로그, 사진 해상도 상한([`image-dpi-limit`](/docs/products/render-output#image-dpi-limit)), 프리프레스가 최신 버전인지 확인합니다. 버전은 첫 화면 아래에 나옵니다.

## 됐는지 확인

<Check>
  [테스트 주문과 렌더링](/docs/templates/test-render)으로 받은 결과 폴더에 기대한 파일 이름과 레이어가 있고, 띠와 부가 페이지가 정한 위치에 나오면 됩니다.
</Check>

## 다음 단계

<Columns cols={2}>
  <Card title="렌더 옵션" icon="print" href="/docs/products/render-options">
    배치와 여백, 칼선 엔티티를 봅니다.
  </Card>

  <Card title="테스트 주문과 렌더링" icon="flask" href="/docs/templates/test-render">
    테스트 주문을 넣고 프리프레스로 결과를 확인합니다.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.