[ID CC-CC2022] Применение цветовых профилей к книге

LeonidB

Их бин
Топикстартер
10 лет на форуме
Сообщения
2 471
Реакции
1 530
Господа скриптописцы, есть вот такой скрипт, назначающий RGB- и CMYK-профили открытому документу:

Код:
var doc  = app.activeDocument;
doc.cmykProfile = 'ISO Coated v2 300% (ECI)';
doc.rgbProfile = 'sRGB IEC61966-2.1';

А можно ли как-нибудь этот скрипт развить, чтобы назначить указанные в нём профили ко всем документам, входящим в состав книги (indb)?
 
Я пока еще не совсем настоящий скриптописец ;]=, но с некоторыми оговорками вот такое вроде работает:

JavaScript:
var myBook = app.activeBook; // Переменная открытого файла книги

// "отключаем" все вопросы про профили при открытии документа
app.colorSettings.missingAskWhenOpening =
app.colorSettings.mismatchAskWhenPasting =
app.colorSettings.mismatchAskWhenOpening = false;

for (var i = 0; i < myBook.bookContents.length; i++) // Цикл перебора всех файлов, входящих в книгу
    {
    app.open (myBook.bookContents[i].fullName); // Последовательное открытие файлов, входящих в книгу
    
    // меняем у открытого документа  RGB- и CMYK-профили на нужные
    var myDoc  = app.activeDocument;
    myDoc.rgbProfile = 'sRGB IEC61966-2.1';
    myDoc.cmykProfile = 'ISO Coated v2 300% (ECI)';   
    
    myDoc.close(SaveOptions.YES) // Закрытие текущего открытого файла с его сохранением   
    }

alert ('Готово')

ask.jpg


Оговорки:
1. Отключение вопросов действует глобально, перед запуском лучше подсмотреть "как было". В принципе, в скрипт можно добавить возвращение установок при необходимости.
2. Нет проверки на существование профилей

Не по теме:
Красивый кусочек кода для работы с indb скрала отсюда ;]] На свой теперь без слез смотреть не могу '))'
 
  • Спасибо
Реакции: LeonidB и densen
Отключение вопросов действует глобально
Можно дать команду не беспокоить скрипт лишними окнами:

app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;

Так, наверное, безопаснее и проще будет? ;)
 
  • Спасибо
Реакции: Masia и LeonidB
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;

Так, наверное, безопаснее и проще будет? ;)
Да, супер, так без сомнения проще 'cooll)'
userInteractionLevel - посмотрела что это за зверушка, отличная штуковина. Но подумалось, может для безопасности лучше оставлять алерты UserInteractionLevels.INTERACT_WITH_ALERTS - вдруг что случится, а мы об этом не узнаем )))
Познавать мне еще... ого-го сколько всего '8]
 
  • Спасибо
Реакции: LeonidB и densen