I. Common 변환 API 사용 안내

1 API 개요 및 구성

  개요

문서 변환 솔루션은 파일을 PDF 또는 이미지 파일로 변환할 수 있는 HTTP 프로토콜 기반의 API를 제공합니다.
API는 REST FUL과 유사한 형식으로 제공됩니다. 문서 변환 솔루션은 윈도우 서버 2012 R2 이상의 환경에서 동작합니다.

  구성

API는 아래와 같은 내용으로 구성되어 있습니다.

  • 1. 변환 요청 API: 파일 변환을 서버에 요청합니다. 서버에서의 요청 결과는 XML형식으로 반환됩니다.
  • 2. 변환 결과 요청 API: 변환 결과 요청 API를 통해 변환된 파일을 가져올 수 있습니다.

API는 기본적으로 HTTP의 GET 메소드를 사용하여 요청됩니다

  • * 요청 예제
GET {Server Address}/views/convert.aspx/?{Query String}
  • Server Address : 서버 접속 주소, ex) http://localhost:8080
  • Query String : GET 방식 요청 시 사용되는 파라미터

2 지원 포맷

DEXT-DOC Standard

Input Supported File Formats Output
Hangul: HWP
Microsoft Word: DOC, DOCX, RTF, DOT, DOTX
Microsoft PowerPoint: PPT, PPTX, PPS, POT, PPSX, PPTM, PPSM, POTX, POTM
Microsoft Excel: XLS, XLSX, XLSB, XLT, XLTX, XLTM
Image: JPG, PNG, GIF, BMP, TIFF
PDF
DEXT-DOC Standard 지원 파일 포맷 구성도 PDF, JPG, PNG, GIF, TIFF

DEXT-DOC Pro

Input Supported File Formats Output
Hangul: HWP
Microsoft Word: DOC, DOCX, RTF, DOT, DOTX
Microsoft PowerPoint: PPT, PPTX, PPS, POT, PPSX, PPTM, PPSM, POTX, POTM
Microsoft Excel: XLS, XLSX, XLSB, XLT, XLTX, XLTM
Image: JPG, PNG, GIF, BMP, TIFF
PDF
Html: HTML, URL, MHT
Cad: DWG, DXF
기타: PSD, XPS
DEXT-DOC Pro 지원 파일 포맷 구성도 PDF, JPG, PNG, GIF, TIFF

3 프로세스

Common 변환 API 프로세스 흐름도

4 Conversion Inquiry API

문서 변환 서버로 파일 변환을 요청하는 API 입니다.

GET {Server Address}/views/convert.aspx/?{Query String}
파라미터 설명
filepath 원본 파일의 위치를 의미 합니다.
문서 변환 서버가 원본 파일 오픈이 가능한 URL 또는 풀 패스를 의미합니다
(c:\... , \\192.168.0.1\..., http://1.2.3...)등의 경로 사용 가능.
“filepath”의 경우는 url encoding을 해야 합니다.
filename 변환 하고자 하는 파일명을 의미합니다.
내부적으로 guid값을 사용하기 때문에 의미는 없습니다. 단, 원본 파일 포맷과 결과포맷은 일치해야 합니다.
ex) filepath=c:\test.doc&1.doc
dpi 생성될 이미지의 해상도를 의미합니다.
기본이 96dpi로 설정되며, 값이 큰 경우에는 이미지의 가로 세로 사이즈가 커집니다.
결과 포맷이 pdf의 경우에는 의미가 없습니다. 기본 96으로 설정됩니다.
type 변환하려는 파일 타입을 의미합니다.
Jpg, png, bmp, gif, tiff, pdf를 지원합니다.

Conversion Inquiry API 예시

로컬 C:\1.docx 파일을 PDF 파일로 변환 요청

http://localhost:8080/Views/convert.aspx?filepath=C:1.docx&type=pdf

Return XML 예시

서버에서 Conversion Inquiry API 에 대한 변환 결과를 XML 형식으로 리턴합니다.

<response>
    <status>0</status>
    <serverIndex>1</serverIndex>
    <totProcessTime>00:00:02.3710840</totProcessTime>
    <from>docx</from>
    <to>pdf</to>
    <saveRootLocation>C:\Converted\</saveRootLocation>
    <serverLocation>http://localhost:8080/Views/result.aspx?fileName=</serverLocation>
    <convertedVirtualDirectoryName>/ConvertFile/</convertedVirtualDirectoryName>
    <PdfViewerUrl>http://localhost/pdf-preview/MjAyMC8wNy8yOSBwMDAwYml20SO4ZDkwL
TQwNjQtYThmOC1jZmRI0DM4Y2Q2ZWluZG9jeCOwMDAxLnBkZg==</PdfViewerUrl>
    <pageTotalCount>1</pageTotalCount>
    <cachedStatus>0</cachedStatus>
    <resources>
        <convertFile>2020/07/29/0000bb69-8d90-4064-a8f8-cfde838cd63b.docx-0001.pdf</convertFile>
    </resources>
</response>

XML 세부사항

각각의 노드들은 특정 의미를 가지고 있습니다.
문서 변환을 요청한(Conversion Inquiry API 를 call한)코드단에서 서버에서
리턴된 XML 데이터를 파싱하여 변환 결과 요청 API Query String 를 구성할 수 있습니다.

<response>
    <status>0</status>
    <serverIndex>1</serverIndex>
    <totProcessTime>00:00:02.3710840</totProcessTime> 변환에 소요된 총 시간
    <from>docx</from>
    <to>pdf</to>
    <saveRootLocation>C:\Converted\</saveRootLocation> 변환된 파일이 저장되는 ROOT 경로
    <serverLocation>http://localhost:8080/Views/result.aspx?fileName=</serverLocation> 
외부 시스템에서 스트리밍 방식으로 변환된 데이터를 가져가기 위한 주소
    <convertedVirtualDirectoryName>/ConvertFile/</convertedVirtualDirectoryName>
    <PdfViewerUrl>http://localhost/pdf-preview/MjAyMC8wNy8yOSBwMDAwYml20SO4ZDkwLTQwNjQtYThmOC1jZmRI0DM4Y2Q2ZWluZG9jeCOwMDAxLnBkZg==
</PdfViewerUrl> PDF Viewer 호출을 위한 주소
    <pageTotalCount>1</pageTotalCount>
    <cachedStatus>0</cachedStatus>
    <resources>
        <convertFile>2020/07/29/0000bb69-8d90-4064-a8f8-cfde838cd63b.docx-0001.pdf</convertFile> 변환된 파일이 저장되는 SUB 경로
    </resources> 
</response>

5 Conversion Result API

직접 가져오는 방법

WAS단에서 문서변환 서버에서 변환된 파일을 직접 엑세스합니다. 속도, 리소스 측면에서 권장하는 방법 입니다.

<response>
    <status>0</status>
    <serverIndex>1</serverIndex>
    <totProcessTime>00:00:02.3710840</totProcessTime>
    <from>docx</from>
    <to>pdf</to>
    <saveRootLocation>C:\Converted\</saveRootLocation>
    <serverLocation>http://localhost:8080/Views/result.aspx?fileName=</serverLocation>
    <convertedVirtualDirectoryName>/ConvertFile/</convertedVirtualDirectoryName>
    <PdfViewerUrl>http://localhost/pdf-preview/MjAyMC8wNy8yOSBwMDAwYml20SO4ZDkwLTQwNjQtYThmOC1jZmRI0DM4Y2Q2ZWluZG9jeCOwMDAxLnBkZg==
</PdfViewerUrl>
    <pageTotalCount>1</pageTotalCount>
    <cachedStatus>0</cachedStatus>
    <resources>
        <convertFile>2020/07/29/0000bb69-8d90-4064-a8f8-cfde838cd63b.docx-0001.pdf</convertFile>
    </resources>
</response>


Conversion result API 예시

저장된 0000bb69-8d90-4064-a8f8-cfde838cd6eb.docx-0001.pdf 파일을 가져옵니다.
serverLocation + convertFile 값을 조합합니다. 네트워트 드라이브로 연동된 환경도 상관없습니다.

C:\Converted\2020\07\29\0000bb69-8d90-4064-a8f8-cfde838cd6eb.docx-0001.pdf


문서 변환 서버의 스트리밍 방법을 이용하여 가져오는 방법

서버에서 변환된 결과 파일을 요청합니다. 저장된 파일에 직접 엑세스 불가능 할 때 사용합니다.
직접 접근이 가능하다면 전 페이지에 나오는 방법을 이용하세요.

GET {Server Address}/views/convert.aspx/?{Query String}
<response>
    <status>0</status>
    <serverIndex>1</serverIndex>
    <totProcessTime>00:00:02.3710840</totProcessTime>
    <from>docx</from>
    <to>pdf</to>
    <saveRootLocation>C:\Converted\</saveRootLocation>
    <serverLocation>http://localhost:8080/Views/result.aspx?fileName=</serverLocation>
    <convertedVirtualDirectoryName>/ConvertFile/</convertedVirtualDirectoryName>
    <PdfViewerUrl>http://localhost/pdf-preview/MjAyMC8wNy8yOSBwMDAwYml20SO4ZDkwLTQwNjQtYThmOC1jZmRI0DM4Y2Q2ZWluZG9jeCOwMDAxLnBkZg==
</PdfViewerUrl>
    <pageTotalCount>1</pageTotalCount>
    <cachedStatus>0</cachedStatus>
    <resources>
        <convertFile>2020/07/29/0000bb69-8d90-4064-a8f8-cfde838cd63b.docx-0001.pdf</convertFile>
    </resources>
</response>


Conversion Inquiry API 예시

서버에 저장된 0000bb69-8d90-4064-a8f8-cfde838cd6eb.docx-0001.pdf 파일을 가져옵니다.
saveRootLocation + convertFile 값을 조합합니다.

http://localhost:8080/Views/result.aspx?fileName=2020/07/29/0000bb69-8d90-4064-a8f8-cfde838cd6eb.docx-0001.pdf

6 Return XML 요소 설명

요소 의미
status 변환 요청 결과에 대한 상태 값. 0인경우 정상.
그 외의 값인 경우 오류입니다. 오류 인덱스에 대한 설명을 오류 유형에 대한 페이지를 참고하세요.
remarks 변환 결과에 대한 특이사항. Status값이 0인 경우에도 remarks값을 참고하여 좀 더 자세한 유저 메시지 처리 가능
0 : 특이사항 없음
1 : config.ini에서 허용된 최대 Worksheet 개수를 초과하여 ActiveSheet의 내용만 변환된 경우
config.ini의 ExcelMaxWorksheetCnt 값을 설정하여 변경가능
totProcessTime총 변환 소요 시간을 의미합니다.
from원본 포맷을 의미합니다
to결과 포맷을 의미 합니다.
saveRootLocation 변환된 파일들이 실제로 저장되는 물리적인 위치를 의미합니다.
saveRootLocation + convertFile 으로 조합한 값은 외부시스템에서 변환된 결과물을 문서변환 서버를 거치지 않고 직접 가져갈 수 있습니다.
속도면에서 유리합니다. 권장하는 방법입니다.
serverLocation 변환된 파일들을 외부시스템에서 가져가기 위한 주소값입니다.
serverLocation + convertFile 으로 조합한 값을 외부시스템에서 call 하면 문서 변환 서버를 통해서 스트리밍 방식으로 가져갈 수 있습니다.
외부시스템에서 변환 결과물이 저장되는 스토리지에 직접 접근이 불가능한 경우에 사용됩니다.
pageTotalCount총 변환된 이미지의 개수를 나타냅니다. Pdf의 경우에는 “1”입니다.
cachedStatus 캐싱 여부를 나타냅니다. 옵션에 따라서 선 변환된 문서의 경우
다음 요청부터는 변환과정을 거치지 않고 바로 기존 변환 결과물의 정보를 리턴하게 됩니다.
convertFile변환된 파일명 또는 서브폴더 + 파일명을 의미합니다.

7 예외처리 (Status Codes)

변환 요청에 대한 처리결과 인덱스

XML 데이터의 status값으로 나타냅니다.
Status 값이 “0”일때 변환된 파일을 가져오거나 해당 작업을 수행하도록 코드를 구성합니다.
“0”값이 아닐때는 변환 요청을 3회 정도 retry 하거나 에러를 파악하여 Conversion Inquiry API 를 수정합니다.

Status설명Status설명
0성공13Url에 문제가 있을때
4Convert.aspx용 파라미터 구성 에러14webconfig.ini 파일 파싱 실패
5지원하지 않는 확장자일 경우15DB초기화 실패
6원본 파일이 없을때16result.aspx 용 파라미터 구성 에러
7변환 엔진 로그 살펴봐야 할 경우17result.aspx로 요청한 파일 존재 안함
8엔진 파일이 없을때18ERR_UNKNOWN
9타임아웃29원본 문서에 암호가 걸려있을 경우. Ms office파일만 지원
10파일 사이즈가 030URL 변환시 404 Not Found
- 401/403 (인증/권한 문제)
- 500, 502, 503 등 서버측 에러
- 리다이렉트 끝이 실패 코드인 경우
12암호화 걸린 파일일때31윈도우 서버가 인터넷 접속이 불가할때

II. URL, HTML 변환

1 Conversion Inquiry API

문서 변환 서버로 웹 페이지 URL 및 HTML파일을 PDF 또는 이미지 파일로 변환을 요청하는 API 입니다.

GET {Server Address}/views/convert.aspx/?{Query String}

URL Conversion Inquiry API 예시

Amazon 웹 페이지를 다양한 옵션을 조합하여 변환 요청을 하는 예시입니다.

http://localhost:8080/views/convert.aspx?filepath=https://www.amazon.com&type=pdf&pagesize=a4&landscape=false&htmlzoom=1.0&useprintmedia=false&noscript=false&nolink=false

옵션에 대한 설명은 다음장을 참고하세요.

변환된 파일을 가져오는 방법은 Conversion Result API 과 동일합니다.
앞에 설명한 Conversion Result API 내용을 참고하세요.

PDF 변환시 원하는 양식으로 페이지 분할을 원할시, page-break 를 사용해주세요.

2 Options

웹 페이지를 PDF 또는 이미지로 변환 할때 다양한 options를 조합할 수 있습니다.
아래 설명된 파라미터 이외에 left margin, top margin, right margin, bottom margin, header, footer, grayscale,
max load wait time, page number 설정에 대해서는 별도 문의를 주십시오.

파라미터설명
type변환하려는 파일 타입을 의미합니다. Jpg, png, bmp, gif, tiff, pdf를 지원합니다.
pagesize PDF의 페이지 크기에 모든 주요 표준 페이지 형식을 사용할 수 있습니다.
기본 Page format 은 'A4'입니다. A0 ~ A9, B0 ~ B5 의 사이즈를 지원합니다.
landscape 페이지 방향은 문서가 표시되거나 인쇄되는 방향입니다. 페이지 방향의 두 가지 기본 유형은 세로 (세로)와 가로 (가로)입니다.
대부분의 모니터는 가로로 표시되며 대부분의 문서는 세로 모드로 인쇄됩니다. 기본 방향은 일반적으로 세로입니다.
하지만 원하는 경우 가로로 변경할 수 있습니다. 기본값은 false 입니다.
true : 가로 방향 설정 false : 세로 방향 설정
htmlzoom 변환하기 전에 페이지를 확대 또는 축소합니다. 10 %에서 200 % 사이의 값이 유효합니다.
1.0은 100% 를 의미합니다. 기본값은 1.0 입니다.
useprintmedia 웹 페이지에 인쇄용 레이아웃 (CSS media type 'print') 이 있으면 이 옵션을 사용하십시오.
true : CSS media type 'print‘ 적용
false : CSS media type 'print‘ 미 적용
nolink PDF에 하이퍼링크를 표시하지 않음. 기본값은 false 입니다.
true : 하이퍼링크를 제거합니다.
false : 하이퍼링크를 표시합니다.
noscript JavaScript를 끈 상태에서 페이지 변환. 기본값은 false 입니다.
true : javaScript를 활성화합니다.
false : javaScript를 비활성화합니다.
minLoadwaittime 페이지를 로드 하기 위한 최소 대기 시간 (밀리 세컨드)을 지정합니다.
일부 웹 페이지는 스크립트를 사용하여 콘텐츠를 동적으로 작성합니다. 최종 사용자에게 페이지가 표시되는 방식만큼 정확한 출력을 캡처하기
위해 변환기는 로드가 완료된 후 PDF 출력을 렌더링 하기 전에 짧은 시간 동안 기다립니다. 이 차이는 페이지에 초기화 스크립트를 실행할 시간을 줍니다.
기본값은 8000이며, 4000에서 160000 사이의 값이 유효합니다.( 수동으로 제어가 필요할때 사용. 권장하지 않음 )
bookmark Html의 h 태그를 기준으로 bookmark를 생성합니다.
true : 생성
False : 비활성. 기본값

III. CAD 변환

1Conversion Inquiry API 및 Options

CAD 포맷중 2D 형식의 DWG, DXF 포맷을 지원합니다. PDF 변환 시 워터마크를 삽입할 수 있습니다. 텍스트, 이미지 기반 워터마크를 지원합니다.

DWG, DXF 포맷의 경우 변환 타입은 PDF 포맷을 권고합니다. 이미지로 변환하면 해상도 문제,
큰 이미지를 지원하지 않는 구형 디바이스의 경우 메모리 관련 오류가 발생할 수 있습니다.
변환 요청 형식은 Common Conversion Inquiry API 와 동일합니다.

GET {Server Address}/views/convert.aspx/?{Query String}

dwg, dxf 도면의 경우 페이지 사이즈가 큰 관계로 변환시 아래와 같은 다양한 페이지 사이즈가 옵션으로 지원됩니다.
용지 사이즈가 커질수록 변환 시간은 더 소요되지만, 도면의 정밀도는 올라갑니다.
ex) http://localhost:8080/Views/convert.aspx?filepath=C:\TestFile\1.dwg&type=pdf&PageSize=a0

지원 페이지 포맷설명
A0841 x 1,189 mm
A1594 x 841 mm
A2420 x 594 mm
A3297 x 420 mm
A4210 x 297 mm
A5148 x 210 mm
A6105 x 148 mm
B01,030 X 1,456 mm
B1728 X 1,030 mm
B2515 x 728 mm
B3364 X 515 mm
B4257 X 364 mm
B5182 X 257 mm

2 Image Watermark

PDF 변환 시 이미지 기반의 워터마크를 생성할 때 옵션을 설정할 수 있습니다.

파라미터설명
wmimagepath변환된 pdf 파일에 삽입할 이미지의 풀 패스입니다. 문서 변환 솔루션에서 접근 가능한 경로일 경우만 정상 작동합니다.
wmprefixtype 삽입될 워터마크의 위치입니다. 0 ~ 9 까지의 값을 가집니다. 기본값은 0입니다.
워터마크 위치 옵션(wmprefixtype) 설명도
wmopacity투명도를 의미합니다. 0 ~ 100 값을 가집니다. 기본값은 100입니다.
wmrotationtype 회전 각도를 의미합니다. 0 ~ 4의 값을 가집니다. 기본값은 0입니다.
워터마크 회전 옵션(wmrotationtype) 설명도
wmmargin워터마크가 삽입될 위치의 margin 값을 설정합니다. 기본값은 20입니다.

3 Text Watermark

PDF 변환 시 텍스트 기반의 워터마크를 생성할 때 옵션을 설정할 수 있습니다.
wmprefixtype, wmopacity, wmrotationtype, wmmargin 값은 이미지 기반의 워터 마크의 옵션값과 동일하며 해당 모드의 옵션값을 참고 바랍니다.

파라미터설명
wmtext삽입할 텍스트를 의미합니다. 개행은 지원되지 않습니다.
wmfontsize텍스트의 폰트 사이즈를 의미합니다. 기본값은 14입니다.
wmfontbold텍스트에 blod속성을 줄 때 사용합니다. 기본값은 false입니다.
wmfontitalic텍스트에 italic속성을 줄 때 사용합니다. 기본값은 false입니다.
wmmargin워터마크가 삽입될 위치의 margin 값을 설정합니다. 기본값은 20입니다.
wmfontcolor 텍스트의 색상을 지정합니다. Hex Color를 의미합니다. 기본값은 black이며 "000000"입니다.
ex) Red = "FF0000"
Green = "00FF00"
Blue = "0000FF"
Yellow = "FFFF00"

IV. Watermark

1 Conversion Inquiry API

HWP, MS-OFFICE 및 이미지 파일에 대한 워터마크를 지원합니다.
Watermark 변환의 경우 캐싱 기능을 지원하지 않습니다. 캐싱 기능을 활성화한 경우 기존에 원본 파일을 성공적으로 pdf 또는 이미지로 변환했다면,
watermark 변환 요청은 무조건 캐싱 처리 됩니다. 따라서, 워터마크가 적용되지 않은 pdf 또는 이미지 값이 반환됩니다.

Watermark로 사용될 이미지는 투명 값이 적용된 png 포맷을 사용해 주세요.

GET {Server Address}/views/convert.aspx/?{Query String}

Watermark Conversion Inquiry API 예시

Watermark 에 사용될 이미지 위치 = D:\TestFile\watermark.png
변환된 PDF에 Watermark가 적용될 위치값 = fix 0
Watermark 투명도 = 50%
Watermark 회전값 = 0도
Watermark 여백 = 20

http://localhost:8080/Views/convert.aspx?filepath=D:\TestFile\1.hwp&type=pdf&wmimagepath=D:\TestFile\watermark.png&wmprefixtype=0&wmopacity=50&wmrotationtype=1&wmmargin=20

옵션에 대한 설명은 다음장을 참고하세요.

변환된 파일을 가져오는 방법은 Conversion Result API 과 동일합니다.
앞에 설명한 Conversion Result API 내용을 참고하세요.

2 Options

PDF 변환 시 이미지 기반의 워터마크를 생성할 때 옵션을 설정할 수 있습니다.

파라미터설명
wmimagepath변환된 pdf 파일에 삽입할 이미지의 풀 패스입니다. 문서 변환 솔루션에서 접근 가능한 경로일 경우만 정상 작동합니다.
wmprefixtype 삽입될 워터마크의 위치입니다. 0 ~ 9 까지의 값을 가집니다. 기본값은 0입니다.
워터마크 위치 옵션(wmprefixtype) 설명도
wmopacity투명도를 의미합니다. 0 ~ 100 값을 가집니다. 기본값은 100입니다.
wmrotationtype 회전 각도를 의미합니다. 0 ~ 4의 값을 가집니다. 기본값은 0입니다.
워터마크 회전 옵션(wmrotationtype) 설명도
wmmargin워터마크가 삽입될 위치의 margin 값을 설정합니다. 기본값은 20입니다.

V. PDF 합치기

1 API 개요 및 구성

문서 변환 솔루션이 지원하는 모든 파일들을 하나의 PDF 파일로 merge하는 API 입니다.(Standard, Pro 버전이 아닌 별도 요청 시 포함됩니다. )

PDF 합치기(Merge) API 개요 구성도
  • 기본적으로 PDF 파일들을 하나의 PDF 파일로 merge 합니다.

  • 서로 다른 문서 포맷들도 하나의 PDF 파일로 merge가 가능하나 각각의 변환 엔진들이 병렬로 실행되기
    때문에 서버의 사양 또는 리소스가 충분한지 미리 검토하시기 바랍니다.
    저 사양 서버의 경우 merge 기능 사용시 PDF 파일들끼리의 merge 작업만 하는 것을 권장합니다.

  • merge 기능의 경우 변환 엔진에서 캐싱 기능을 지원하지 않습니다.

  • 파일들의 merge 순서는 전적으로 merge를 요청하는 was단에서 결정됩니다.

  • 한번에 merge 가능한 파일의 최대 개수는 제한이 없습니다. 서버의 리소스와 merge 시간을 고려하여 한번에 10개 이하의 파일 merge 작업을 권고 드립니다.

  • 각각의 서로 다른 사이즈의 파일들을 merge 할 경우 기본적으로 각각의 원본 문서의 사이즈가 적용됩니다.
    따라서 merge된 결과물의 모든 페이지의 사이즈가 서로 다를 수 있습니다.
    이 부분을 해결하기 위해서는 autofit 을 적용해야 합니다.

  • 기본적인 API 구성은 Common Conversion Inquiry API 와 동일합니다.

GET {Server Address}/views/convert.aspx/?{Query String}

2 프로세스

PDF 합치기 프로세스 흐름도

3 Merge info file(*.combine)

Step 1 *.combine 파일 생성

  • a. 문서 변환 서버를 호출하는 코드단에서 먼저 유니코드 txt 기반 파일을 생성하고 확장자는 “combine”으로 명명 합니다.
       파일명 또한 영문, 숫자만 가능합니다. Ex) test1.combine

  • b. 하나의 pdf 파일로 합칠 각각의 pdf 파일들의 풀 패스를 기록합니다.
       이때 각 풀 패스 사이에는 개행을 넣어야 합니다.
       엔진에서 개행 문자를 구분하여 각각의 pdf 파일 풀 패스를 구분합니다.
       각각의 pdf 파일의 풀 패스는 문서 변환 서버에서 접근 가능한 경로 여야만 합니다.

  • c. 기입된 pdf 파일들의 순서대로 pdf 파일이 합쳐집니다.

  • d. merge 작업의 경우 문서 변환 서버에서 변환 캐싱을 지원하지 않습니다. 즉, 매번 같은 *.combine 정보를 이용하여 pdf 합치기를 요청할 경우 매번 새로운 요청으로 처리됩니다.

  • e. 문서 변환에서 open이 불가능한(손상 및 보안 문서)의 경우 pdf 합치기 기능을 지원하지 않습니다.

Merge info 파일(.combine) 생성 예시

예 ) 로컬 c:\pdf-test에 위치한 1.pdf, 2.pdf, 3.pdf 파일들의 경우.
네트워크 드라이브상에 위치한 pdf 파일들도 문서 변환 서버에서 접근 가능한 경로이면 가능합니다.

4 Merge Inquiry API

Step 2 pdf 파일 합치기 요청

  • Merge할 정보를 기입한 test.combine 파일을 C:\pdf-test\test.combine 경로에 생성했다고 가정합니다.
  • *.combine 파일의 경로는 원본 pdf 파일들의 경로와 무관합니다.
  • 문서 변환 서버에서 접근 가능한 경로이면 됩니다.

PDF 합치기 요청 convert.aspx 예시

이제 문서 변환 서버로 pdf 파일 합치기를 요청합니다.

http://localhost:12348/Views/convert.aspx?filepath=C:\pdf-test\test.combine.

5 Merge Result API

Step 3 문서 변환 서버의 변환 결과 리턴

  • 일정시간 대기 후 pdf 파일 합치기 작업이 끝나면 문서 변환 서버는 완료된 작업의 결과를 xml 형태로 리턴 합니다.
  • 결과를 가져오기 위한 Merge Result API 는 이전의 Common Conversion Result API 와 동일합니다.

<response>
    <script/>
    <status>0</status>
    <serverIndex>1</serverIndex>
    <totProcessTime>00:00:05.2810668</totProcessTime>
    <engineName>CombinePDF.exe</engineName>
    <from>combine</from>
    <to>pdf</to>
    <saveRootLocation>C:\Converted\</saveRootLocation>
    <serverLocation>http://localhost:8080/Views/result.aspx?fileName=</serverLocation>
    <convertedVirtualDirectoryName>/ConvertFile/</convertedVirtualDirectoryName>
    <PdfViewerUrl>http://localhost:3003/pdf-preview/MjAyMC8wNy8xNS90ZXNOLmNvbWJpbmUtMDAwMS5wZGY=</PdfViewerUrl>
    <pageTotalCount>1</pageTotalCount>
    <cachedStatus>0</cachedStatus>
    <resources>
        <convertFile>2020/07/15/test.combine-0001.pdf</convertFile> 하나로 합쳐진 pdf 파일의 풀 패스 입니다. 
																	자세한 접근 방법은 이전파일 변환페이지를 참고 하세요
    </resources>
</response>

6 코딩 가이드


  C#

                //  merge info 파일의 풀 패스를 c:\pdf-test\test.combine 로 설정
                // 문서 변환 서버에서 file open이 가능한 경로여야 합니다.
    string strMergeInfoFilePath = @"c:\pdf-test\test.combine";

                // 유니코드 모드로 파일 스트림 생성
    System.IO.StreamWriter file = new System.IO.StreamWriter(strMergeInfoFilePath, true, Encoding.Unicode);

                // merge info 파일에 원본 파일 풀 패스 기입
                // 각각의 원본 파일 경로는 문서 변환 서버에서 file open이 가능한 경로여야 합니다.
    file.WriteLine(@"c:\pdf-test\1.pdf");
    file.WriteLine(@"c:\pdf-test\2.pdf");
    file.WriteLine(@"c:\pdf-test\3.pdf");
    file.Close();

                // merge 요청
    http://localhost:8080/Views/convert.aspx?filepath=C:\pdf-test\test.combine@autofit=a4&type=pdf

                // return 된 xml 데이터 파싱 및 데이터 처리

VI. PDF Viewer

1 개요 및 구성

  개요

  • PDF Web Viewer는 별도의 Active X나 실버라이트 등을 설치할 필요 없이 streaming 방식으로 PDF 문서를 열람할 수 있는 HTML5 기반 web viewer입니다.
  • 단, 뷰어 구동은 .NET 기반이므로 windows 2012 R2이상의 운영체제와 IIS 웹 서버가 필요합니다.

  구성

PDF Viewer Core/Viewer 계층 구성도
  • PDF Viewer는 다음과 같은 두 계층으로 구성됩니다.

  • Core - PDF 이진 명령어 구문 분석 및 해석을 담당하며 PDF 페이지를 렌더링하는 인터페이스를 제공합니다.

  • Viewer - 검색, 회전, 확대 / 축소 등과 같은 기능을 갖춘 샘플 사용자 인터페이스를 제공합니다.

  • PDF Viewer는 AJAX (Asynchronous JavaScript and XML)를 활용하여 웹 서버에서 PDF 파일을 다운로드하고 내용을 구문 분석합니다.

  • 준비가 되면 컨텐츠는 <canvas> 요소에 렌더링 됩니다. PDF Web Viewer는 유저의 클라이언트의 브라우저상에서 구동됩니다.

  • 서버로부터 전송된 스트리밍 데이터는 클라이언트 브라우저상에서 렌더링 됩니다.

  • Html5를 지원하는 브라우저를 실행할 수 있는 환경이면 어느 디바이스에서도 동일한 내용을 볼 수 있습니다.

  • 또한, 클라이언트 브라우저를 닫으면 스트리밍 된 데이터 역시 사라집니다.

2 유저 인터페이스

어도비 아크로뱃 리더와 유사한 사용하기 편리한 인터페이스를 제공합니다.

PDF Viewer 유저 인터페이스 화면

3 특징

1. 안정적인 성능
- 기관, 기업 및 글로벌 사이트에서 안정적인 서비스 검증

2. 보안
- 브라우저를 닫으면 열람하고 있던 문서 데이터가 디바이스에 남지 않음
- HTML5 기반의 뷰어(Active X 없음)

3. 다양한 뷰잉 도구 지원
- 썸네일, 페이지 이동, 확대, 축소, 검색, 저장 등

4. PC 및 MOBILE 환경 대응
- 반응형 웹 방식으로 설계되어 웹 브라우저를 띄울 수 있는 어떤 디바이스(PC, ios, 안드로이드, 태블릿)에서도 열람 가능

5. 디바이스에 대한 독립성
- 웹 뷰어 방식이기 때문에 고객사 앱 업데이트나 디바이스 자체 OS 업데이트에 영향을 받지 않음
- 클라이언트 업데이트 관리 불필요

6. streaming 방식의 뷰잉 지원
- 문서 열람과 동시에 뷰잉을 지원하므로 모든 데이터 다운로드 후 뷰잉을 하는 기존의 뷰어들보다 빠른 뷰잉이 가능

7. 벡터 방식 지원
- 최종 뷰잉 데이터가 PDF 파일이기 때문에 이미지 기반 방식의 뷰어에서 나타나는 확대, 축소 시 폰트가 깨지는 문제를 근본적으로 해결

8. Watermark 지원
- PDF 열람 시 워터마크를 활성화하여 보안성을 높이고 문서의 상태(예: "기밀", "복사 금지")를 나타낼 수 있습니다.
- PDF 파일을 열 때마다 워터마크가 표시되며, 문서의 복제나 배포를 방지하는 데 유용합니다.

4 프로세스

PDF Viewer 프로세스 흐름도

5 파일 변환 요청 후 PDF Viewer 호출

Step 1 Coversion Inquiry API 생성 및 Call

  • 예시 )로컬 C:\1.docx 파일을 PDF 파일로 변환 요청
  • http://localhost:8080/Views/convert.aspx?filepath=C:1.docx&type=pdf

Step 2 XML passing 및 뷰어 호출

  • Return XML 예시
  • <PdfViewerUrl> 값이 해당 문서 뷰어의 풀 패스입니다. 이 값을 추출하여 call하면 웹 뷰어가 호출됩니다.

<response>
    <status>0</status>
    <serverIndex>1</serverIndex>
    <totProcessTime>00:00:02.37108408</totProcessTime>
    <from>docx</from>
    <to>pdf</to>
    <saveRootLocation>C:\Converted\</saveRootLocation>
    <serverLocation>http://localhost:8080/Views/result.aspx?fileName=</serverLocation>
    <convertedVirtualDirectoryName>/ConvertFile/</convertedVirtualDirectoryName>
    <PdfViewerUrl>http://localhost:/pdf-
    preview/MjAyMC8wNy8yOSBwMDAwYml20S04ZDkwLTQwNjQtYThmOC1jZmRI0DM4Y2Q2ZWluZG9jeCOwMDAxLnBkZg==</PdfViewerUrl>
    <pageTotalCount>1</pageTotalCount>
    <cachedStatus>0</cachedStatus>
    <resources>
        <convertFile>2020/07/29/0000bb69-8d90-4064-a8f8-cfde838cd6eb.docx-0001.pdf</convertFile>
    </resources>
</response>
                    

6 Watermark 개요

  개요

  • PDF 열람 시 텍스트 기반 워터마크를 활성화하여 보안성을 높이고 문서의 상태(예: "기밀", "복사 금지")를 나타낼 수 있습니다.
    PDF 파일을 열 때마다 모든 페이지에 워터마크가 표시되며, 문서의 복제나 배포를 방지하는 데 유용합니다.
    불투명도, 색상, 폰트, 크기, 회전 등 다양한 옵션을 제공합니다.
    PDF 열람 시 및 프린트 시에도 모두 워터마크가 적용되며, 각각 독립적으로 옵션을 적용할 수 있습니다.

  적용 예

PDF Viewer 워터마크 적용 예시

7 Watermark Inquiry API

Step 1 뷰잉할 pdf 파일명 추출

  • 변환 요청시 리턴한 XML의 값중 부분의 값을 추출합니다.

<response>
    <status>0</status>
    <remarks>0</remarks>
    <serverIndex>1</serverIndex>
    <totProcessTime>00:00:08.2728723</totProcessTime>
    <from>docx</from>
    <to>pdf</to>
    <saveRootLocation>C:\Converted\</saveRootLocation>
    <serverLocation>http://211.232.104.138:8080/Views/result.aspx?fileName=</serverLocation>
    <convertedVirtualDirectoryName>/ConvertFile/</convertedVirtualDirectoryName>
    <PdfViewerUrl>http://localhost:/pdf-
    preview/MjAnC8wOS90T05WRVJULS0tNTU1ZDYzWmYtMDIxNS000TRkLTgxNWNtNTFkMDAxZDk2MmM5LmRvY3gtMDAwMS5wZGY=</PdfViewerUrl>
    <pageTotalCount>1</pageTotalCount>
    <cachedStatus>0</cachedStatus>
    <resources>
        <convertFile>2024/09/CONVERT---555d632f-0215-494d-815c-51d001d962c9.docx-001.pdf</convertFile>
    </resources>
</response>

Step 2 Query String 조합

  • Step 1에서 추출한 파일명과아래의 적용할 값들을 조합하여 Query String를 구성합니다.

Watermark 뷰잉 Inquiry API 옵션 예시

  • 스크린용 Watermark 에 사용될 문자열 = 사번 - 20240923
    스크린용 Watermark 폰트 사이즈 = 130
    스크린용 Watermark 컬러 = #FF0000
    스크린용 Watermark 문자열 bold 유무 = 1
    스크린용 Watermark 문자열 회전값 = -45
    스크린용 Watermark 문자열 투명도 = 70

  • 인쇄용 Watermark 에 사용될 문자열 = 보안문서
    인쇄용 Watermark 폰트 사이즈 = 120
    인쇄용 Watermark 컬러 = #FF0000
    인쇄용 Watermark 문자열 bold 유무 = 1
    인쇄용 Watermark 문자열 회전값 = -45
    인쇄용 Watermark 문자열 투명도 = 70

  • filename=2024/09/CONVERT---555d632f-0215-494d-815c-51d001d962c9.docx-0001.pdf&WmScrnText=사번 - 20240923&WmScrnSize=130&WmScrnColor=#FF0000&WmScrnBold=1&WmScrnOpacity=70&WmScrnRotate=-45&WmPrtText=보안문서&WmPrtSize=120&WmPrtColor=#0000FF&WmPrtBold=1&WmPrtOpacity=70&WmPrtRotate=-45

옵션에 대한 설명은 다음장을 참고하세요.

Step 3 Query String 값 인코딩

  • Step 2에서 구성한 Query String를 Base64로 인코딩합니다.
  • Destination character set( UTF-8)
  • Destination newline separator. ( CRLF(Windows) )


Query String Base64 인코딩 예시

Step 4

  • 최종적으로 Base64로 인코딩 된 Query String를 기반으로 뷰어에 요청을 합니다.

  • http://localhost:8081/viewer? ZmlsZW5hbWU9MjAyNC8wOS9DT05WRVJULS0tNTU1ZDYzMmYtMDIxNS00OTRkLTgxNWMtNTFkMDAxZDk2MmM5LmRvY 3gtMDAwMS5wZGYmV21TY3JuVGV4dD3sgqzrsoggLSAyMDI0MDkyMyZXbVNjcm5TaXplPTEzMCZXbVNjcm5Db2xvcj0jRkYwMDAwJldtU2NybkJvbGQ9MS ZXbVNjcm5PcGFjaXR5PTcwJldtU2NyblJvdGF0ZT0tNDUmV21QcnRUZXh0PeuztOyViOusuOyEnCZXbVBydFNpemU9MTIwJldtUHJ0Q29sb3I9IzAwMDBGRi ZXbVBydEJvbGQ9MSZXbVBydE9wYWNpdHk9NzAmV21QcnRSb3RhdGU9LTQ1

워터마크 뷰어 최종 요청 URL 예시

8 Watermark 옵션

파라미터설명
filename변환 결과로 리턴되는 XML의 <convertFile> 부분의 값
WmScrnText 스크린용 워터마크에 적용할 문자열
“ip”를 넣을경우 클라이언트의 ip가 워터마크로 적용
로컬 테스트의 경우 클라이언트 ip가 정상적으로 적용되지 않음
이 값이 없으면 스크린 워터 마크는 적용되지 않습니다.
WmScrnSize스크린용 폰트 사이즈 (디폴트:180)
WmScrnFontFamily스크린용 폰트 종류. 웹안전 폰트를 지원 (디폴트:Sans-serif)
WmScrnColor스크린용 폰트 색상. 헥스 코드 (디폴트:#FF0000) Ex) #FF0000
WmScrnBold 스크린용 Bold적용 여부.(디폴트:0)
0일경우 미적용
1일 경우 적용
WmScrnItalic 스크린용 Italic적용 여부.(디폴트:0)
0일경우 미적용
1일 경우 적용
WmScrnOpacity스크린용 문자 투명도. 0 ~ 100 (디폴트:60)
WmScrnRotate스크린용 문자 회전값. Ex) -45 (디폴트:0)
WmScrnMaxWidth 스크린용 문자 최대 폭
지정된 폰에 맞게 문자열 폭이 지정됩니다. (ex:400)
(디폴드:미적용)
WmPrtText 인쇄용 워터마크에 적용할 문자열
“ip”를 넣을경우 클라이언트의 ip가 워터마크로 적용
로컬 테스트의 경우 클라이언트 ip가 정상적으로 적용되지 않음
이 값이 없으면 인쇄용 워터마크는 적용되지 않습니다.
WmPrtSize인쇄용 폰트 사이즈 (디폴트:180)
WmPrtFontFamily인쇄용 폰트 종류. 웹안전 폰트를 지원 (디폴트:Sans-serif)
WmPrtColor인쇄용 폰트 색상. 헥스 코드 (디폴트:#FF0000) Ex) #FF0000
WmPrtBold 인쇄용 Bold적용 여부.(디폴트:0)
0일경우 미적용
1일 경우 적용
WmPrtItalic 인쇄용 Italic적용 여부.(디폴트:0)
0일경우 미적용
1일 경우 적용
WmPrtOpacity인쇄용 문자 투명도. 0 ~ 100 (디폴트:60)
WmPrtRotate인쇄용 문자 회전값. Ex) -45 (디폴트:0)
WmPrtMaxWidth 인쇄용 문자 최대 폭
지정된 폰에 맞게 문자열 폭이 지정됩니다. (ex:400)
(디폴드:미적용)

9 주의사항

Watermark는 세션 기반으로 작동합니다.

세션이 더 이상 유효하지 않을 때 워터마크 뷰어를 새로 고침하면 초기 화면인 timeout 페이지로 이동됩니다.
세션 종료 시 이동할 페이지를 web.config에서 변경할 수 있습니다.

(디폴드 : timeout.aspx)

<add key="TimeoutPage" value="/timeout.aspx" desc="Session timeout시 이동 페이지"/>

세션 값은 서버에 종속됩니다.

세션 타임아웃 설정 web.config 예시