• PDF는 내장 JavaScript code를 가질 수 있고, Adobe는 이를 실행한다.
  • PDF에 내장된 JS Script는 JS Engine인 SpiderMonkey가 Adobe의 EScript.api 모듈을 이용해 실행한다.
    • Adobe에서 사용하는 JS Engine인 SpiderMonkey는 C++로 구현되었다.
  • 만약 PDF에 URL이 지정되어 있다면 Adobe는 IA32.api 모듈로 URL 관련 작업 및 인터넷 접속을 수행한다.

image [그림 1] Adobe에서 PDF에 내장된 JS script를 처리하는 과정

  • PDF는 Adobe에게 두 종류의 URL을 전달할 수 있다.
    1. base URL
      • https://…와 같이 URL의 base를 나타낸다.
      • base URL은 PDF 파일 내부에서 객체로 설정하며 Adobe로 전달할 수 있다.
       11 0 obj
       <<
       /Base <FEFF68747470733A2F2F7777772E61612E636F6D2F414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141412F>
       >>
       endobj
      
    2. relative URL
      • base URL 뒤에 나오는 URL을 나타낸다.
      • PDF에서는 내장된 JS script에서 relative URL을 인터넷 엑세스 관련 함수의 인자로 이용하면, relative URL을 Adobe로 전달할 수 있다.
      • 이때 this.submitForm(), app.launchURL()와 같은 JS code를 사용한다.
       try {
         this.submitForm('relative URL');
       } catch (err) { }