20071112 :: 일러스트레이터 CS2에서 자바스크립트 사용하기

*일전에 공개했던 글인데 DB를 날려먹은 후 큰 맘 먹고 다시 작성합니다

일러스트레이터 CS2가 나온지도 어느덧 2년하고도반정도가 지났습니다. 일러스트레이터CS2는 10.0 버전으로부터 CS로의 버전업과는 비교가 안될만큼 겉이나 속에서 많은 변화가 있었습니다. 그리고 이러한 많은 발전은 무거운 덩치에도 불구하고 숩을 9.0 사용자에서 CS2 사용자로 이끈 원동력이 되었습니다. 그것은 다름아닌 자바스크립트를 지원한다는 것이지요. 이는 포토샵과는 다른 일러스트레이터만의 특성 덕분에 정말 간단한 방법으로 노가다를 줄일 수 있게 되었습니다. 물론 포토샵CS2도 자바스크립트를 지원합니다만, 아무래도 HTML의 자바스크립트에 좀더 익숙하다보니 일러스트레이터의 자바스크립트가 훨씬 사용하기 쉽긴 쉽습니다.

문제는 주로 ‘디자이너’들이 사용하는 툴이다보니 아무도 일러스트레이터 자바 스크립트에는 관심을 가지지 않더란 말이지요. 없으면 만드는 것이지요. 최소한 정품에 포함된 자바스크립트 가이드에는 객체에 대한 레퍼런스가 포함되어 있어서 가이드를 참고하면서 코드를 작성하는 것은 그리 어렵지 않았습니다.

어쨌든 일러스트레이터에서 자바 스크립트를 사용하는 것이 어떤 이익이 있는가에 대해 먼저 살펴보도록하겠습니다.

일러스트레이터에서의 자동화 방법

포토샵의 액션은 매우 유명하지요. 일종의 매크로처럼 효과나 특정 작업을 기록하여 반복해서 쓸 수 있도록 하는 기능입니다. 특히 이러한 액션을 드롭릿(Droplet)으로 만들어 놓으면 파일을 드롭릿에 끌어다 놓는 것만으로도 자동으로 포토샵을 실행시켜 해당 액션을 적용하도록 할 수도 있습니다. 참고로 이러한 복수개의 파일을 변환하고 가공하는 방법을 더욱 편리하고 집약적으로 수행할 수 있도록 포토샵CS2에서는 image processor라는 자바스크립트를 지원합니다. (file 메뉴의 automation 항목을 잘 들여다보세요)

이러한 액션팔레트는 일러스트레이터에도 벌써 이전부터 존재해왔습니다. 다만 많이 안썼을 뿐이지요. 왜냐하면 일러스트레이터는 필터를 여러 번 적용하는 것처럼 단순 작업을 반복하기가 그리 빈번히 필요치 않기 때문입니다.

그리고, 일러스트레이터는 자바스크립트 (뿐만아니라 VB 스크립트와 Apple 스크립트도 지원합니다) 지원합니다 이러한 스크립트를 이용한 방법은 액션과 약간의 차이가 있으며, 또한 강력합니다.

기본적으로 액션은 기록된 매크로를 재생하는 방식을 사용합니다. 즉 사용자가 일러스트레이터의 UI를 이용하여, 메뉴의 항목을 선택하고 특정한 기능을 선택하여 적용하는 등의 일련의 작업을 그대로 녹화했다가 다른 상황에서 똑같이 재현하여 반복적인 작업을 단순화 하는 것이 그 핵심입니다.

이에 비해서 자바스크립트는 내부 자바스크립트 해석기에 의해서 작동되며 여기에는 사용자의 커서 움직임이나 키보드 단축키가 개입되지 않습니다. 하지만 스크립트는 등록된 액션을 호출하여 그대로 사용할 수도 있습니다. 또한 특정한 조건에 의해서 분기를 하거나, 조건을 만족하는 동안 반복문을 실행하는 등 우리가 알고 있는 기본적인 프로그래밍 로직에 의해 구동합니다. 따라서 사용하기에 따라서는 액션으로는 처리할 수 없었던 엄청난 작업들을 단 몇십… (차마 몇 줄이라고는 말 못하겠군요)줄의 코드만으로 처리할 수도 있습니다.

자바스크립트의 설치와 사용

일러스트레이터에서 자바스크립트를 사용하기 위해서는 다음과 같은 과정이 필요합니다.

1. 자바 스크립트 파일 작성하기

자바 스크립트 파일을 작성합니다. 다들 작성을 해야하는 건 아닙니다 웹을 뒤져보면 그럴싸한 스크립트를 또 구할 수 있겠지요. 아무튼 이러한 원본 스크립트 파일이 필요합니다. 스크립트 파일은 메모장으로도 작성할 수 있으며, .js의 확장자를 갖습니다. 다른 텍스트 에디터를 사용하여도 좋습니다만, 문자 인코딩은 ANSI를 사용하여야 하며, 파일 어느곳에도 한글, 한자, 일본어등의 비라틴문자(NonLatin Character)가 사용되어서는 안됩니다. 이는 주석에도 해당되어, 한글로 주석을 달아도 해석기가 작동하지 않아 일러스트레이터는 그냥 스크립트 파일 자체를 무시해버립니다.

2. 자바스크립트 파일 설치하기

일러스트레이터가 설치된 폴더(일반적으로 C:\Program Files\Adobe\IllustratorCS2\)아래에 있는 Preset\Scripts 폴더에 해당 js 파일을 복사해 넣으면 설치가 됩니다. 이렇게 이 폴더에 설치한 파일은 일러스트레이터가 구동할 때 인식되어 File 메뉴의 Scripts… 항목의 하위 메뉴로 나타나게 됩니다.

3. 자바스크립트 사용하기

자바스크립트 파일을 사용하기 위해서는 File > Scripts… 메뉴에서 이미 설치된 파일을 사용해도 됩니다만, 만약 스크립트 파일을 다른 곳에 모아두었다면 Other Sripts… 항목을 선택하여 실행할 수도 있습니다.

이로써 간단히 일러스트레이터에서 자바스크립트를 설치하고 사용하는 방법에 관해 알아보았습니다. 다음 글에서는 실제 작성된 자바스크립트가 어떻게 실행되는지를 살펴보며, 이를 통해 특정 폴더의 ai 파일들을 한꺼번에 jpg 파일로 변환하는 방법에 대해 살펴보겠습니다.

  • 이민헌

    일러스트 파일(Ai, eps)을 일정한 형식으로(일러스트버젼 또는 같은 형식으로)통일을

    해야 합니다. 각각의 파일을 일일이 열어서 저장하기에는 상당히(2~3백만 컷정도)

    기존 맥용 그래픽컨버터는 일러스트 파일을 인식하지 못하는군요. 또 일러스트에는 자동화(Batch)기능이

    없더군요. 액션을 이용해도 파일속성이 변하면 액션녹음 파일명으로만 되구요

    대량의 일러스트파일(ai, eps)를 변화해주는 유틸이 혹 알고 있으시면

    말씀해 주시면 정말 감사하겠습니다.

  • //이민헌
    일러 포맷을 읽을 수 있는 외부 뷰어/컨버터는 거의 없는 것으로 알고 있습니다. (브릿지가 있긴 합니다만, 대량 변환을 지원하는지는 모르겠네요) http://soooprmx.com/wp/archives/288 의 내용을 참고해보시기 바랍니다. 저장 옵션 지정하는 부분만 도움말 책자의 내용을 바탕으로 조금 수정하시면 될 듯 합니다.

  • 박윤미

    안녕하세요 좋은 정보 감사드립니다. 288번 글 자바스크립트에서 변환 되는 JPG의 크기를 지정할 수 있을까요? 일러스트레이터에 거의 문외한인터라 자바스크립트 관련해서 숩 님께서 좋은 정보를 많이 올려주셔서 많은 참고가 되었는데요, 네이버를 검색하다가 이 전에 올리신 글을 발견했는데 CS2버전을 9.0 버전으로 저장하는 스크립트도 꼭 필요한 자료였는데 다운로드가 되지 않아 무척 안타까웠습니다. 혹시 다시 한번 올려주신다면 정말정말 감사드리겠습니다.

  • //박윤미
    댓글 감사합니다. 변환되는 jpg의 크기는 픽셀단위로 지정하기는 어렵고, 배율을 통해서 지정할 수는 있습니다. (Save for web..메뉴에서도 배율을 통해 그림 크기를 지정하는 것과 동일합니다.)
    – 스크립트 말미에 위치하는 function getJpgOptions() 부분 (중괄호 안쪽)에 다음과 같은 구문을 삽입합니다. 예를 들어 200% 크기로 확대하고 싶다면

    opts.horizontalScale = 200;
    opts.verticalScale = 200;

    이 부분을 마지막에 추가해주면 됩니다. 저 숫자값은 퍼센트로 인식되며 숫자값이 가질 수 있는 범위는 0~776.19 사이라고 합니다.
    /
    그리고 버전 컨버터 스크립트는 컴터를 포맷해버린 관계로 다시 작성해야할 듯 싶은데, 기회가 되는대로 올려드리도록 하겠습니다.

  • 박윤미

    정말 감사드립니다 T-T 많이 암담했었는데 한줄기 빛이 되셨습니다. 좋은 정보 많이 올려주셔서 정말 감사드립니다.

  • KUHDesign

    감사합니다.

  • Kikijuny2

    이걸 일러스트10에서 복사하고
    스트립트창에서 바로 실행하니
    Folder selectdialog is not a function
    line:27
    –>var sourcefolder=
    folder selectdialog(“select folder contains
    ai files…,”dfltfolder);

    이런 메시지가 나오네요 왜그러죠?