Файловые пути в скриптах Adobe Illustrator


Знакомство со скриптами Adobe Illustrator для меня началось с простой, на первый взгляд, задачи.

Дано: Adobe Illustrator CS2.
Сделать: экспорт текущего документа в формат TIFF с именем файла, формируемым по некоторому правилу.

Я вооружился официальной документацией Adobe и приступил к делу. С учетом опыта автоматизации офисных приложений на VBA  и административных задач на VBScript, в качестве языка скриптов я выбрал VBScript.

Однако вскоре выяснилось, что скриптом выполнить экспорт документа в TIFF невозможно. Далее был взят курс на экспорт в JPEG и получена масса впечатлений.

На этом открытия не закончились: теперь предстояло узнать, как Illustrator обрабатывает файловые пути в сценариях VBScript. Предположим, нужно получить путь к текущему документу (или сохранить файл с некоторым именем). Что может быть проще: используем свойство Document.Path (или метод Document.Export). Все хорошо до тех пор, пока файловый путь не содержит точек. Как только встречается точка, Illustrator тут же «обрезает» остаток пути. Предположительная логика программистов Adobe: однако, конец имени файла — дальше будет расширение!

'язык: VBScript
Const JPEG = 1
Dim IllApp, doc, DocPath, eoptions, FileName
Set IllApp = CreateObject("Illustrator.Application")
Set doc = IllApp.ActiveDocument 'текущий документ
'а здесь Иллюстратор тупо обрезает путь на первой же точке
DocPath = doc.Path 'путь к файлу текущего документа
Set eoptions = CreateObject("Illustrator.ExportOptionsJPEG")
eoptions.QualitySetting = 100
'и снова неутомимый Иллюстратор обрезает имя после первой встретившейся точки
doc.Export fname, JPEG, eoptions

В сценарии JavaScript все-таки можно получить неискаженный путь к текущему документу.

//язык: JavaScript
var BACKSLASH = "\\"; //не забываем, что \ - это спецсимвол
var doc = app.activeDocument
var DocFile = doc.path //файл текущего документа
var DocPath = DocFile.fsName //путь к папке, содержащей документ
var fname = MakeFileName(FolderName)
var eoptions = new ExportOptionsJPEG()
eoptions.qualitySetting = 100
var ExportFile = new File(DocPath + BACKSLASH + fname) //файл для экспорта
//здесь Иллюстратор по-прежнему обрезает имя файла на первой же точке
doc.exportFile(ExportFile, ExportType.JPEG, eoptions)

А вот имя выходного файла при программном экспорте в JPEG (аналог операции «Save for Web…») будет беспощадно обрезано на первой же точке независимо от того, на каком языке написан скрипт.

Реклама
Запись опубликована в рубрике scripting, software с метками , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s