[AI CC-CC2022] перелинкование растра с поиском

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
24
Всем привет, в инете нашёл несколько скриптов не перелинкования с поиском в папке и подпапках по имени файлов. Скрипты были для индизайна, на сколько я понял, ни один не работает. Часто бывает необходимость такой перелинковки, файлы часто лежат в разных папках. Кто-то подскажет рабочий скрипт?
 
... а так же Acrobat и CorelDraw '))'
 
для Mac Os есть программулина, которая ищет потерянные линки и перелинковывает их.

Стоит 15 баксов.

123.png


Поиск по форуму Adobe не дал результат - запросы есть, работающих решений нет.

Нашлось одно решение в обход - можно заменять пути в самом AI - файле, через поиск и замену текста.
Одно неудобство - файл должен быть сохранён без компрессии ("use compression").
Думаю написать батник, который бы искал имена файлов в ai., искал их в папке заказчика и обновлял линки.
Протестил пока замену линков вручную в текстовом режиме ai файла - всё работает.

Процесс примерно выглядит так: есть, к примеру, 20 файлов ai с битыми линками, скриптом все открываем и сохраняем без сжатия. Далее запускаем утилиту поиска и замены линков. Профит.
 
  • Спасибо
Реакции: ~RA~
там писать нечего, все линки в xmp есть
Нашлось одно решение в обход - можно заменять пути в самом AI - файле, через поиск и замену текста.
Одно неудобство - файл должен быть сохранён без компрессии ("use compression").
Думаю написать батник, который бы искал имена файлов в ai., искал их в папке заказчика и обновлял линки.
Протестил пока замену линков вручную в текстовом режиме ai файла - всё работает.

Процесс примерно выглядит так: есть, к примеру, 20 файлов ai с битыми линками, скриптом все открываем и сохраняем без сжатия. Далее запускаем утилиту поиска и замены линков. Профит.

я что-то не пойму, а что мешает вам самостоятельно написать скрипт не в обход, а с открытием файлов в AI и заменой линков? вроде какие-то сложные скрипты с заменой цветов пишете, а тут строчек 30 - пройтись по линкам, найти файлы в папке, перелинковать
 
там писать нечего, все линки в xmp есть


я что-то не пойму, а что мешает вам самостоятельно написать скрипт не в обход, а с открытием файлов в AI и заменой линков? вроде какие-то сложные скрипты с заменой цветов пишете, а тут строчек 30 - пройтись по линкам, найти файлы в папке, перелинковать
это первое, что я попробовал - написать сам. Сразу же вылезла проблема - если линки пропали, то запрос пути к файлу через скрипт невозможен, вылезает ошибка "объект не найден". Но он же прописан в файле в любом случае, это очевидно. Как пишут на форуме adobe, нужно идти в обход и доставать путь через XMP описание, я понятия не имею что это и как с ним работать. Надо долго ковыряться и не факт, что решение будет найдено. Повторюсь, на форуме adobe около 10 веток по данной теме и отзывы в духе "у меня не сработало".
 
Как думаете, если написать аналогичную той, что на скриншоте, будет востребована?
Мне в работе точно пригодится. Иногда перекидываю работы коллеге - другой диск, другие папки и линки летят к чёрту, ему приходится исправлять вручную, это лишняя трата времени. Пускай даже это занимает 3-5 минут. Недавно выкладывал ему 4 макета, считайте - 15-20 минут впустую.
 
Как пишут на форуме adobe, нужно идти в обход и доставать путь через XMP описание, я понятия не имею что это и как с ним работать. Надо долго ковыряться и не факт, что решение будет найдено

ну это-то не сложно
пути нет, но имя у PlacedItem = имя файла
а если вам нужен оригинальный путь (хотя зачем он в данном случае?), то вот так

Код:
var xmpData = new XML(docRef.XMPString);
    var filePaths = xmpData.xpath('//stRef:filePath');
 
var fileData = {};

for(var i=0;i<filePaths.length();i++)
    {
            var currPath = filePaths[i].toString();
            var fileNameStartPos = Math.max(currPath.lastIndexOf("/"),currPath.lastIndexOf("\\"));
            fileData[currPath.substr(fileNameStartPos+1)] = currPath;
     }
 
  • Спасибо
Реакции: splxgf
ну это-то не сложно
пути нет, но имя у PlacedItem = имя файла
а если вам нужен оригинальный путь (хотя зачем он в данном случае?), то вот так

Код:
var xmpData = new XML(docRef.XMPString);
    var filePaths = xmpData.xpath('//stRef:filePath');
 
var fileData = {};

for(var i=0;i<filePaths.length();i++)
    {
            var currPath = filePaths[i].toString();
            var fileNameStartPos = Math.max(currPath.lastIndexOf("/"),currPath.lastIndexOf("\\"));
            fileData[currPath.substr(fileNameStartPos+1)] = currPath;
     }

Спасибо, путь файла мне пригодится, чтобы искать в папке заказчика вместо поиска по всему диску.

Очередная головная боль - куча новой инфы типа путей в формате URI, кодировка UTF-8 для русского текста в путях, работа с файловой системой...
 
Всем привет. Взялся написать скрипт, аналогичный Willshouse, который упоминал выше.
Проблема с русской кодировкой в именах файлов, как и ожидалось.
Как получить нормальные имена в нормальной кодировке? там UTF-8, на сколько я знаю.

скрипт берёт имена из C:\TEMP. Для примера.

PHP:
//  get all files

dir = Folder("С:/TEMP");

var files = dir.getFiles();

text = "";

for (i = 0; i < files.length; i++) {

text += files[i].name + "\n";

}

alert ("Files: " + files.length + "\n\n" + " names: \n\n" + text);
 
Второй вопрос, как получить из пути только имя файла?
там конструкция со строкой и .split, плохо знаю эти разделения.
 
Всем привет. Взялся написать скрипт, аналогичный Willshouse, который упоминал выше.
Проблема с русской кодировкой в именах файлов, как и ожидалось.
Как получить нормальные имена в нормальной кодировке? там UTF-8, на сколько я знаю.

скрипт берёт имена из C:\TEMP. Для примера.

PHP:
//  get all files

dir = Folder("С:/TEMP");

var files = dir.getFiles();

text = "";

for (i = 0; i < files.length; i++) {

text += files[i].name + "\n";

}

alert ("Files: " + files.length + "\n\n" + " names: \n\n" + text);

это я решил - .name заменить на .fsName
 
.name и есть имя без пути

а какая кодировка "нормальная", если UTF-8 - ненормальная?
 
.name и есть имя без пути

а какая кодировка "нормальная", если UTF-8 - ненормальная?
1) name берёт название файла по пути, т.е. они не отделимы, разве не так?
2) в моём примере .name выдаёт символы типа "%20" вместо русских букв. Вопрос был как добиться нормальной работы с кодировкой.
 
Второй вопрос, как получить из пути только имя файла?
там конструкция со строкой и .split, плохо знаю эти разделения.
нашёл в тулз гайде.
есть 3 типа для переменных имени файлов:
Name - выдаёт некорректные русские символы в какой-то другой кодировке.
fsName - путь + имя.
displayName - только имя.

доставать имена из XMP, думаю можно только через split в строке
 
Последнее редактирование:
я вам код запостил, который все выдает из xmp на блюдечке с голубой каемочкой 'fp'