> ## 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.

# 템플릿 업로드와 수정

> Export, Preview, Upload Template의 동작과 리소스 ID 덮어쓰기 규칙, Edicus Manager에서 확인하고 resUri를 얻는 방법

InDesign 문서를 익스포터([익스포터 설치와 설정](/docs/templates/install-exporter))로 변환하고 미리 본 뒤 Edicus 서버에 올립니다. 올린 템플릿은 Edicus Manager **Resource** 화면에서 확인하고, 그 `resUri`를 편집기 띄우기에 씁니다.

## 배우는 것

* Export, Preview, Upload Template가 각각 하는 일
* 새 템플릿으로 올릴지, 기존 템플릿을 덮어쓸지 정하는 규칙
* Resource 화면에서 확인하고 `resUri`를 복사하는 방법
* visibility 값의 뜻과 템플릿 공개 방법
* 익스포터 오류 메시지와 대처

## 업로드 전에 확인할 것

* InDesign 문서를 `.indd`로 한 번 이상 저장했습니다. 저장하지 않은 문서는 Export되지 않습니다.
* **파일** > **문서 설정**의 폭, 높이, 도련이 실제 생산 규격과 같습니다. 익스포터는 이 값을 그대로 템플릿 크기로 씁니다.
* 문서의 가로, 세로 측정 단위가 모두 **밀리미터**입니다. **편집** > **환경 설정** > **단위 및 증감**에서 바꿉니다(macOS는 **InDesign** > **설정**). 아니면 `Measurement Units is not Millemeters` 오류가 납니다.
* 익스포터가 **template mode**이고, 익스포트 아이템에 `ps_code`가 있습니다. [익스포터 설치와 설정](/docs/templates/install-exporter)을 보세요.

## 직접 해보기

<Steps>
  <Step title="Export">
    InDesign에서 올릴 문서를 앞에 띄우고 익스포트 아이템을 고른 뒤 **Export**를 누릅니다. 문제가 없으면 \*\*Export Success!\*\*가 뜹니다.
  </Step>

  <Step title="Preview">
    **Preview**를 누릅니다. 서버가 템플릿으로 변환한 결과를 페이지별로 보여 줍니다. 문서를 바꿨다면 다시 Export한 뒤 Preview합니다.
  </Step>

  <Step title="Upload Template">
    미리보기 위쪽 가운데의 **Upload Template**를 누르고 아래 **업로드 대화상자**에서 고릅니다. \*\*Upload Success.\*\*가 뜨면 끝입니다.
  </Step>

  <Step title="Edicus Manager에서 확인">
    **Resource** 화면에서 type을 `template`으로 두고 **Search**를 누릅니다. 올린 템플릿을 고르고 오른쪽 위 **Demo**로 열어 봅니다.
  </Step>

  <Step title="resUri 복사">
    템플릿 상세의 `resUri` 칸 옆 복사 아이콘을 누릅니다. **Copy resUri Success**가 뜨면 복사된 것입니다.
  </Step>
</Steps>

## Export가 만드는 것

Export할 때마다 내 컴퓨터의 `edicus-exports/<파트너 코드>` 폴더(홈 폴더 아래)를 지우고 새로 만듭니다.

| 위치 | 내용 |
| - | - |
| `export/template.json` | 페이지, 레이어, 개체, 글자 정보를 담은 문서 구조입니다 |
| `export/metadata.json` | 익스포트 아이템의 `ps_code`, 개체 권한 기본값, 언어 같은 변환 설정입니다 |
| `export/template-dp.jpg` | 첫 페이지로 만든 대표 이미지입니다 |
| `export/item-<번호>.png`, `.jpg`, `.svg` | 배치한 이미지, `Sticker` 개체, 사진 칸(`Cell`)의 기본 이미지를 이미지로 뽑은 것입니다 |
| `export/bg-<번호>.jpg` | 바탕이 단색 사각형 하나가 아닐 때 `Background` 레이어를 이미지로 찍은 것입니다 |
| `snapshot/page-<번호>.png` | snapshot을 켰을 때만 생기는 페이지 이미지입니다. 업로드되지 않습니다 |

숨긴 개체와 숨긴 레이어의 개체는 내보내지 않습니다.

## Preview 화면

| 위치 | 하는 일 |
| - | - |
| 왼쪽 위 | 이전, 다음 페이지와 `1 / 2` 같은 페이지 번호, 한 페이지와 모든 페이지 보기 전환입니다 |
| 가운데 | **Upload Template**입니다. 오류가 있으면 대신 느낌표 아이콘이 나오고 업로드할 수 없습니다 |
| 오른쪽 위 | \*\*⋮\*\*에서 96dpi와 120dpi 중 미리보기 해상도를 고릅니다. **1:1**과 슬라이더로 확대합니다. Alt 키를 누른 채 휠을 굴려도 됩니다 |
| 맨 위 | 왼쪽 화살표로 메인 화면에 돌아갑니다. 문서에 연결된 리소스 ID가 있으면 오른쪽에 **rsc-id**로 보입니다 |

## 업로드 대화상자

문서에 연결된 리소스 ID가 없으면 **Upload Design Template** 대화상자가 뜹니다. 이름, 태그, 공개 여부를 입력하는 칸은 없습니다.

| 탭 | 하는 일 |
| - | - |
| **신규 업로드** | 새 리소스 ID를 받아 새 템플릿으로 올립니다 |
| **덮어 쓰기** | `rsc-id`에 입력한 기존 리소스 ID로 올려 그 템플릿을 바꿉니다. 내 파트너에 없는 ID면 `<ID>로 등록이 불가능 합니다.`가 뜹니다 |
| **선택 후 덮어쓰기** | 문서 이름(확장자 제외)과 제목이 정확히 같은 리소스를 ID가 큰 순서로 보여 줍니다. 지운 리소스도 나오니 Edicus Manager에서 먼저 확인합니다. 덮어쓸 ID 옆 **업로드**를 누릅니다. 문서 이름에 마침표가 더 있으면 제목과 달라져 찾지 못합니다 |

어느 탭으로 올리든 쓴 리소스 ID를 InDesign 문서 안에 기록하고 문서를 저장합니다.

업로드하면 서버는 아래처럼 등록합니다.

| 항목 | 값 |
| - | - |
| 제목 | InDesign 문서 이름에서 첫 마침표 앞까지입니다. `명함.v2.indd`는 `명함`이 됩니다 |
| ps-codes | 익스포트 아이템의 **ps-codes** |
| visibility | `private`. 덮어쓸 때도 `private`로 돌아갑니다 |
| 이미지 | 템플릿에 딸린 리소스로 따로 저장합니다. 덮어쓰면 이전 이미지는 지운 것으로 표시합니다 |

## 리소스 ID와 덮어쓰기

한 번 올린 문서에는 리소스 ID가 남습니다. 그 문서로 다시 **Upload Template**를 누르면 **Update Resource** 창이 `Do you want update resouce with id <ID> ?`라고 묻습니다. **Yes**를 누르면 같은 ID, 같은 `resUri`로 덮어씁니다.

* 덮어써도 `resUri`는 그대로입니다. 그 `resUri`를 쓰는 모든 상품과 사이트에서 새로 만드는 프로젝트부터 바뀐 디자인을 씁니다.
* 이미 저장된 프로젝트는 자기 문서를 따로 가지고 있어 바뀌지 않습니다.
* 공개해 둔 템플릿도 덮어쓰면 `private`가 됩니다. 다시 공개합니다.

<Warning>
  다른 템플릿을 만들려고 `.indd`를 복사하면 리소스 ID도 함께 복사됩니다. 그대로 올리면 원래 템플릿을 덮어씁니다. 복사한 문서는 Preview 화면 위쪽 **rsc-id** 단추를 누르고 **Remove Resource ID**에서 **삭제**를 고른 뒤 올립니다. 그러면 업로드 대화상자가 떠서 **신규 업로드**를 고를 수 있습니다.
</Warning>

같은 파트너의 다른 사람이 올린 `.indd`를 받아 그대로 올려도 그 사람의 템플릿을 덮어씁니다. 새 템플릿으로 올릴 때는 먼저 **rsc-id**를 지웁니다.

다른 파트너 계정으로 올린 적 있는 문서면 **Partner ID not match** 창이 뜹니다. 이때는 **취소**를 누르고, 위처럼 **rsc-id**를 지운 뒤 새로 올립니다.

## Edicus Manager의 Resource 화면

이 화면은 파트너 관리자 계정(`partner-admin`)으로 씁니다. 디자이너 계정(`partner-designer`)은 지금 Edicus Manager 메뉴가 보이지 않으므로 Demo와 `resUri` 복사를 관리자에게 요청합니다.

| 위치 | 하는 일 |
| - | - |
| 검색 조건 | **type**(`template`), **order**(latest, oldest, name), **access**, **cate**, **prod**, **size**, **title**로 찾고 **Search**를 누릅니다. access의 `valid`는 지운 것을 뺀 전부입니다 |
| 템플릿 상세 | key(리소스 ID), visibility, title, ps-codes, `resUri`를 보고 고칩니다. 고친 뒤 위쪽 **Update**로 저장합니다 |
| **Demo** | 고른 템플릿을 편집기에 띄워 사용자처럼 편집해 봅니다. ps-codes가 여럿이면 하나를 고릅니다 |
| **Utility** | **TEMPLATE UTILITY** 창을 엽니다. 아래 표를 보세요 |

Demo는 체험 모드입니다. 고친 내용은 저장되지 않고, 내 컴퓨터의 사진을 올릴 수 없습니다. 사진을 넣어 보는 확인은 [테스트 주문과 렌더링](/docs/templates/test-render)에서 합니다.

| Utility 탭 | 하는 일 |
| - | - |
| **Publish** | 이 템플릿과 같은 `ps_code`의 템플릿을 **Private Templates**, **Public Templates**로 나눠 보여 줍니다. 고른 뒤 **Unlock**은 `public`, **Lock**은 `private`로 바꿉니다 |
| **Font** | 템플릿에 쓰인 폰트와 찾지 못한 폰트(**Unresolved**)를 보여 줍니다 |
| **PSCode** | 이 템플릿의 첫 `ps_code`가 붙은 모든 리소스의 `ps_code` 묶음을 한 번에 바꿉니다. 템플릿 하나만 바꾸는 기능이 아닙니다 |

## visibility 값

| 값 | 뜻 |
| - | - |
| `public` | 편집기의 템플릿 탭과 레이아웃 탭 목록에 나옵니다. 같은 `ps_code`의 템플릿만 나옵니다 |
| `private` | 목록에 나오지 않습니다. 업로드 직후의 상태입니다 |
| `protected` | 템플릿 목록에는 나오지 않습니다 |
| `deleted` | 지운 것으로 표시된 상태입니다 |

서비스 중인 템플릿을 내릴 때는 **Delete** 대신 visibility를 `deleted`로 바꾸고 **Update**를 누릅니다. **Delete**는 저장소의 템플릿 파일까지 지우므로, 그 `resUri`로 편집기를 띄우는 상품이 남아 있으면 템플릿을 읽지 못합니다. 쓰는 곳이 없는지 확인한 뒤에 **Delete**로 지웁니다.

visibility는 목록 노출만 정합니다. `private` 템플릿도 `template_uri`로 넘기면 열립니다. 그래서 쇼핑몰 상품마다 템플릿을 정해 띄운다면 공개하지 않아도 됩니다. 레이아웃 탭에 템플릿을 보이는 절차는 [레이아웃과 배경](/docs/products/layout-background)에 있습니다.

## 레이아웃으로 올리기

레이아웃 탭에 보일 디자인은 템플릿과 같은 방법으로 만들되, 익스포터 목록 위의 모드 단추(`template mode`라고 적힌 단추)를 눌러 **layout**으로 바꿔 올립니다. 파일 이름에 붙이는 규칙은 없고 모드가 종류를 정합니다.

* 문서의 페이지 하나가 레이아웃 하나가 됩니다. 대표 이미지는 페이지마다 따로 만듭니다.
* **layout has background**를 끄면 `Background` 레이어를 빼고 올립니다.
* 레이아웃은 `ps_code`로 걸러 보이므로 사이즈마다 그 사이즈의 `ps_code`로 올립니다.
* 업로드 대화상자 없이 매번 새 리소스로 올라갑니다.
* 올린 레이아웃은 `protected`로 만들어져 그대로는 편집기에 나오지 않습니다. 관리자 계정으로 Edicus Manager의 **Product**에서 상품과 사이즈를 고르고 **Layout** 묶음 목록에서 눈 아이콘을 눌러 공개합니다. 절차는 [익스포터로 올린 레이아웃과 배경 공개하기](/docs/products/resources#익스포터로-올린-레이아웃과-배경-공개하기)에 있습니다.

레이아웃 탭 설정은 [레이아웃과 배경](/docs/products/layout-background)에 있습니다.

## resUri와 template\_uri

템플릿의 `resUri`는 `gcs://template/partners/<파트너 코드>/res/template/<리소스 ID>.json` 형식입니다. 개발자는 이 값을 [편집기 띄우기](/docs/sdk/launch)의 `template_uri`에 그대로 넣고, `ps_code`에는 업로드할 때 지정한 값을 넣습니다. `template_uri`로 템플릿을 읽지 못하면 편집기가 `load-template-failed` 오류를 보냅니다.

## 오류와 대처

| 메시지 | 원인 | 대처 |
| - | - | - |
| `Measurement Units is not Millemeters` | 문서 단위가 밀리미터가 아닙니다 | 단위 및 증감에서 가로, 세로를 밀리미터로 바꿉니다 |
| **Uninstalled Font Warning** | 문서의 폰트가 이 컴퓨터에 설치되어 있지 않습니다. 메시지는 Windows라고 적지만 macOS도 같습니다 | 폰트를 설치하고 다시 Export합니다 |
| **Non Supported Composer Used Warning** | `Adobe CJK 단락 컴포저`가 아닌 텍스트가 있습니다. 목록에 그 글자와 컴포저 이름이 나옵니다 | **문자** > **단락** 패널 메뉴에서 **Adobe CJK 단락 컴포저**로 바꿉니다. 다른 언어판 InDesign이면 한국어판으로 다시 설치합니다 |
| **Preview error**와 `document not exported` | 지금 InDesign 앞에 있는 문서가 마지막으로 Export한 문서가 아닙니다 | 그 문서를 Export한 뒤 Preview합니다 |
| **Preview error**, 그 밖의 내용 | ps-codes가 비었거나, 첫 `ps_code`의 상품이 Edicus Manager에 없거나, 계정 역할이 `partner-admin`, `partner-designer`가 아닙니다 | 익스포트 아이템과 상품, 계정 역할을 확인합니다 |
| **Unregistered fonts** | Edicus Manager에 등록되지 않은 폰트를 썼습니다. 이 오류가 있으면 Preview 화면에 **Upload Template** 단추가 나오지 않아 익스포터로는 올릴 수 없습니다 | [폰트](/docs/products/fonts)에서 폰트를 등록하고 다시 Preview합니다 |
| `rgb_color missing.()` | 색을 RGB로 바꿀 수 없는 색 공간(Lab 등)의 색상 견본을 썼습니다 | 색상 견본을 CMYK나 RGB로 바꿉니다 |
| **Upload Failed: remote** | 서버가 업로드를 거절했습니다. `invalid token`이면 다른 파트너의 리소스 ID가 문서에 남아 있는 것입니다 | `invalid token`이면 **rsc-id**를 지우고 신규 업로드합니다 |

Export 중 폰트나 컴포저 경고가 나면 **Error Report** 창이 뜨고 \*\*Export Success!\*\*는 뜨지 않습니다. 그래도 `export` 폴더의 결과 파일은 만들어져 있어 **Preview**와 업로드가 막히지는 않습니다. 경고를 무시하고 올리면 편집기에서 글자가 다르게 보일 수 있으니 고친 뒤 다시 Export하세요. 단위 오류처럼 **Error Report**에 오류 하나만 뜨는 경우는 결과 파일이 만들어지지 않습니다.

## 됐는지 확인

<Check>
  Resource 화면에서 올린 템플릿이 원하는 ps-codes와 함께 보이고, Demo에서 글자를 고칠 수 있고, `resUri`를 복사했으면 업로드가 끝났습니다. 덮어쓴 경우에는 리소스 ID와 `resUri`가 그대로인지도 봅니다.
</Check>

## 다음 단계

<Columns cols={2}>
  <Card title="테스트 주문과 렌더링" icon="print" href="/docs/templates/test-render">
    생산 파일의 크기와 판을 점검합니다.
  </Card>

  <Card title="편집기 띄우기" icon="window" href="/docs/sdk/launch">
    `ps_code`와 `template_uri`로 편집기를 띄웁니다.
  </Card>
</Columns>


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