Сценарии Photoshop: как экспортировать PathItem по имени - PullRequest
1 голос
/ 14 июля 2020

Я отчаянно пытаюсь понять, как написать js для фотошопа, который экспортирует только указанный c путь, а не все содержащиеся пути на вкладке «пути» в моем документе PS в файл Illustrator . Например, на картинке здесь:

изображение вкладки моих путей

Я хотел бы экспортировать только путь с именем «2 Acryl» с помощью сценария. У меня уже есть рабочий скрипт, который экспортирует все пути в один AI-файл. Я просто не могу понять, как ссылаться на один путь по его имени и экспортировать его.

function unSaved() {
try {
    activeDocument.path;
    /* Finish Unsaved Document Error Check - Part A: Try */

    /* Main Code Start */

    /* Based on the following topic thread:
    https://community.adobe.com/t5/photoshop/exporting-all-paths-to-illustrator-error/m-p/8796143 */

    var doc = app.activeDocument;
    var docPath = doc.path;
    var docName = doc.name.replace(/\.[^\.]+$/, '');
    var newFile = File(docPath + '/' + docName + '_Paths' + '.ai');
    var expOptions = new ExportOptionsIllustrator;
    expOptions.path = IllustratorPathType.ALLPATHS;
    doc.exportDocument(newFile, ExportType.ILLUSTRATORPATHS, expOptions);
    // alert('All Photoshop paths have been exported as a single Illustrator file in:' + '\r' + docPath);

    /* Main Code Finish */

    /* Start Unsaved Document Error Check - Part B: Catch */
} catch (err) {
    alert('An image must be both open and/or saved before running this script!')
}

}

Ответы [ 2 ]

0 голосов
/ 16 июля 2020

Только для записи: @ obscure первое редактирование ответа работает хорошо. Если это не работает с точным кодом, попробуйте добавить задержку после: duplicate.exportDocument(newFile, ExportType.ILLUSTRATORPATHS, expOptions);

перед закрытием файла ps или просто не выполняйте строку кода, закрывающую документ ps.

Еще раз спасибо!

0 голосов
/ 14 июля 2020

Это можно сделать, изменив объект ExportOptionsIllustrator в соответствии с вашими потребностями.

 var expOptions = new ExportOptionsIllustrator;

Чтобы экспортировать один путь, свойство ExportOptionsIllustrator.path должно иметь значение

 expOptions.path = IllustratorPathType.NAMEDPATH;

После этого вы можете выбрать желаемый путь по его имени, используя:

expOptions.pathName = '2 Acryl';

Edit:

Видимо из-за ошибки в самом Photoshop опция экспорта IllustratorPathType .NAMEDPATH просто игнорируется. Photoshop всегда будет экспортировать все контуры, несмотря ни на что.

Вот хитрый обходной путь. Сценарий Photoshop предлагает объект PathItems , который содержит список всех путей в документе. Идея такова:

  1. создать клон текущего документа
  2. перебрать все пути внутри клона
  3. удалить все, КРОМЕ для единственного пути, который вы хотите сохранить
  4. экспортировать путь клону как файл Illustrator
  5. закрыть клон без сохранения

Вот обновленный скрипт:

try {
    var doc = app.activeDocument;
    var docPath = doc.path;
    var docName = doc.name.replace(/\.[^\.]+$/, '');
    var newFile = File(docPath + '/' + docName + '_Paths' + '.ai');
    var expOptions = new ExportOptionsIllustrator;
    
    var duplicate = app.activeDocument.duplicate('duplicate');
    
    for(a = duplicate.pathItems.length-1; a>=0; a--)
    {
        if(duplicate.pathItems[a].name != '2 Acryl')
        {
            duplicate.pathItems[a].remove();
        }
    }
    
    duplicate.exportDocument(newFile, ExportType.ILLUSTRATORPATHS, expOptions);
    duplicate.close(SaveOptions.DONOTSAVECHANGES);
    
} catch (err) {
    alert('An image must be both open and/or saved before running this script!')
}

Edit2:

Если это все еще не удается, есть последнее средство. Photoshop имеет встроенную функцию для экспорта контуров в Illustrator. Просто go в:

Файл * Экспорт * Пути -> Illustrator ...

и выберите желаемый путь во всплывающем диалоговом окне.

...