clientsideDataProvider
Last edited by story
개요
- 웹뷰어는 기본적으로 웹뷰어 WAS 를 통해 PDF 데이터를 전달받으며, 웹뷰어 WAS 는 이를 위해 ContentsProvider 인터페이스를 구현한다.
- 웹뷰어 클라이언트가 웹뷰어 WAS 가 아닌 3자 서버 또는 임의의 절차를 통해 PDF 데이터를 제공받아 동작하도록 설정하기 위해서는 customLayout 에서 아래와 같은 콜백 인터페이스를 구현해서 등록해야 한다.
- 필요 상황에 따라 아래 방법1과 방법2 중 택1 할 수 있다.
방법1
- viewer 호출시에 cdp=true 파라미터를 전달하고, customLayout 에서 다음 콜백 인터페이스를 구현한다.
- viewer.yex.api.callback.documentDataProvider.promiseTotalLength
- contentId 에 대응하는 PDF 파일의 사이즈를 리턴하는 Promise 를 리턴한다.
- viewer.yex.api.callback.documentDataProvider.promiseRangeData
- 요청된 구간에 대한 데이터를 Uint8Array 로 리턴하는 Promise 를 리턴한다.
샘플
방법2
- viewer 호출시에 cdp=true 파라미터를 전달하고, customLayout 에서 다음 콜백 인터페이스를 구현한다.
- viewer.yex.api.callback.onDocumentDataUrl
- contentId 에 대응하는 PDF 파일의 URL 을 리턴한다.
샘플
PDF URL 을 제공하는 CDN 서버 요구사양
- CDN은 아래의 기능을 자체적으로 지원해야 한다.
스트리밍을 위한 range request 처리 지원
CORS 지원
- 웹뷰어 서버와 CDN 서버의 도메인이 다를 경우에 CDN 서버는 리소스 획득을 위한 CORS 처리 기능을 지원해야 한다.
- 서버는 응답헤더에 "Access-Control-Allow-Origin: 웹뷰어 서버 도메인" 을 포함해야 한다.
- 서버는 응답헤더에 "Access-Control-Expose-Headers: Content-Range, Accept-Ranges, Content-Disposition, X-WV-ES, Content-Encoding" 을 포함해야 한다.
- 서버는 요청헤더에 "Range" 가 포함되는 것을 허용하고, 해당 경우에도 Access-Control-Allow-Origin 항목을 응답헤더에 포함해야 한다.
LIMITATION (제한사항)
- 하나의 PDF 파일로 이루어진 콘텐츠만을 처리하며, 그 이외의 케이스에 대응하지 않는다.
- 멀티미디어 동영상은 별개 파일로 서버 업로드후 콘텐츠 에디터에서 url 지정 방식으로 삽입한 케이스만 지원한다.