Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Status
colourYellow
title릴리즈 3.3.2602 이상

기능설명

Export API 서버는 에디터에서 사용된 이미지를 다운로드한 뒤, 문서를 HWPX, DOCX 등 다양한 포맷으로 변환하여 파일을 반환하는 역할을 합니다.

실행환경

Note

Export API Docker 이미지는 담당 영업사원을 통해 요청해 주시기 바랍니다.

실행환경

본 Export API 실행 모듈은 Docker 컨테이너 환경에서 실행됩니다.
Docker가 설치 및 실행 가능한 Linux 운영체제에서 사용 가능합니다.

다음은 검증된 환경 예시입니다.

  • Ubuntu 18.04 이상

  • CentOS 7 이상 / RHEL 7 이상

  • Debian 9 이상

  • Fedora 30 이상

운영 환경에서는 Linux (x86_64 / amd64) 서버에서의 실행을 권장합니다.
해당 환경에서는 아키텍처 에뮬레이션 없이 네이티브로 실행되어 성능 및 안정성이 가장 우수합니다.

컨테이너 내부 실행 환경은 node:18-slim 이미지를 기반으로 하며,
호스트 운영체제에 따른 실행 모듈의 동작 차이는 없습니다.

macOS(Apple Silicon) 및 Windows 환경에서도 Docker Desktop을 통해 실행이 가능하나,
해당 환경에서는 아키텍처 에뮬레이션이 사용될 수 있으므로 개발 및 테스트 용도로만 사용하는 것을 권장합니다.

실행 방법

Code Block
languagebash
## Installation
# Load Docker image:
docker load -i export_api.tar

# Docker run
docker run -d --name export-api \
  -p 9090:9090 \
  -e REMOTE_SOURCE_PROXY_DOMAINS=example.com,.internal.local \
  -e REMOTE_SOURCE_PROXY_TARGET=http://10.0.0.5:8080/remote/ \
  export-api:latest
옵션 설명


환경 변수

옵션명설명기본값필수 여부예시
PORT서버가 리스닝하는 포트 번호9090필수선택PORT=9090

EXPORTER_PATH

Exporter 실행 파일 경로

./Exporter_exe

선택

WORK_ROOT

임시 작업 디렉터리

./workspaces

선택

EXPORTER_TIMEOUT

변환 타임아웃(ms)

120000

선택
REMOTE_SOURCE_PROXY_DOMAINS원격 이미지 프록시를 적용할 도메인 목록 (쉼표로 구분)없음선택example.com,.internal.local
REMOTE_SOURCE_PROXY_TARGET내부망에서 접근 가능한 프록시 대상 베이스 URL없음선택http://10.0.0.5:8080/remote/


Note
  1. 직접 다운로드 장애 상황
    - 사내망 차단, 인증 필요, IP/지역 제한, HTTP↔HTTPS 정책 등으로 서버(또는 Docker 컨테이너)가 외부 이미지를 바로 받지 못하면, 해당 이미지는 엑박(깨진 이미지)으로 표시됩니다.
  2. 프록시 설정으로 우
    REMOTE_SOURCE_PROXY_DOMAINS: 프록시를 적용할 도메인 목록을 콤마로 지정합니다. 예: .example.com,cdn.partner.com.
    REMOTE_SOURCE_PROXY_TARGET: 실제 이미지를 대신 내려받을 프록시 서버 주소를 지정합니다. 예: http://proxy.internal/....
     두 변수를 세팅하면, 지정된 도메인의 이미지는 프록시를 경하여 다운로드를 시도합니다.
  3. 그럼에도 실패할 경우
    프록시 자체 인증 실패, 프록시 서버 오류, 추가 권한 요구 등이 있으면 여전히 이미지를 얻지 못할 수 있으며, 이 경우 최종 결과에서는 해당 이미지가 엑(깨진 이미지)으로 표시됩니다.
  4. 임시 파일 보관 정책
     과정에서 내려은 이미지, 생성된 .word.pb, 출력 파일 등 모든 리소스는 작업 완료 후 즉시 삭제됩니다.


API

EndpointMethod설명
/exportFilePOST웹 에터가에서 직렬한 문

사이냅 에디터에서 직렬화한 문서(serializedData)와 이미지

 리소스를 통해 특정 포맷의 문서로 반환

리소스를 받아 특정 포맷(docx, hwpx 등)의 문서로 변환하여 반환.

application/json 또는 multipart/form-data 지원

/infoGET배포된 서버 정보(프로덕트 이름, 버전버전, Exporter 버전 등)를 조회
/healthGET서버가

서버 정상 기동

 중인지 확인하는 헬스 체크

여부 확인(헬스 체크)

  

  

/exportFile 요청 필드 (multipart/form-data)

사이냅 에디터 클라이언트의 실제 호출 /exportFile은 아래 필드들로 전송됩니다.

필드명타입필수설명

payload

string(JSON)

문서 메타데이터. filename, exportType, responseType, mediaManifest 포함

serializedData

file/blob

직렬화된 문서 바이너리. 클라이언트에서는 보통 document.bin 이름으로 전송

media

file[]

아니오

인라인 이미지 Blob 배열. payload.mediaManifest의 비원격 항목 순서와 동일해야 함

그 외 추가 필드

form field

아니오

클라이언트 설정(editor.export.param) 또는 이벤트에서 병합된 사용자 정의 파라미터


payload JSON 구조

Code Block
languagejs
{
  "filename": "document",
  "exportType": "hwpx",
  "responseType": "json",
  "mediaManifest": [
    {
      "path": "image/image1.png",
      "filename": "image1.png",
      "isRemote": false,
      "sourceUrl": null,
      "contentType": "image/png"
    },
    {
      "path": "https://example.com/logo.png",
      "filename": "logo.png",
      "isRemote": true,
      "sourceUrl": "https://example.com/logo.png",
      "contentType": "image/png"
    }
  ]
}


payload 필드 설명

필드명타입필수설명

filename

string

아니오

출력 파일명(확장자 제외). 서버에서 미지정 시 document 사용

exportType

string

아니오

변환 포맷. 예: docx, hwpx, hwp

mediaManifest

Array<object>

아니오

문서에 포함된 이미지 목록


mediaManifest 항목 설명
필드명타입필수설명

path

string

아니오

원본 경로 또는 식별자

filename

string

아니오

파일명 후보. 서버가 저장 파일명 생성 시 참고

isRemote

boolean

아니오

true면 서버가 sourceUrl로 직접 다운로드

sourceUrl

string | null

조건부

isRemote=true일 때 사용할 원격 이미지 URL

contentType

string | null

아니오

MIME 타입 힌트. 예: image/png

   

   

Info
title처리 규칙
  • serializedData는 반드시 multipart 파일 필드로 전송해야 합니다.

  • mediaManifest에서 isRemote: true이고 sourceUrl이 있으면 서버가 해당 URL에서 이미지를 다운로드합니다.

  • isRemote가 아니면 서버는 media 파일 배열에서 순서대로 이미지를 매칭합니다.

  • 따라서 media 업로드 순서는 mediaManifest의 비원격 항목 순서와 일치해야 합니다.




관련기능