[ID CC-CC2021] Замена картинок в таблице Indesign на путь к этим картинкам

Douglas

Участник
Топикстартер
Сообщения
41
Реакции
0
Добрый день всем.
Облазил весь интернет и не могу найти скрипт по замене картинок вставленных в ячейку таблицы на путь.

Суть в том, что мне нужно переверстать один каталог в другой с принципиально новым текстовым наполнением и нужно перетащить картинки в соответствии с артикулом в другую структуру. Скрипт "Путь на картинку" я скачал и он нормально работает, а вот обратную операцию "Картинку на путь" не знаю как сделать. Несколько сотен файлов перелинковывать руками как-то не хочется, да и времени на это нет.
 

Douglas

Участник
Топикстартер
Сообщения
41
Реакции
0
Вот скрипт, который ставит картинку в таблицу по пути.

Я так понимаю, что можно как-то его поправить, чтобы делал наоборот.
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
JavaScript:
function replaceTableImg2Name (doc) {
    var items = doc.stories.everyItem().tables.everyItem().cells.everyItem().pageItems.everyItem().getElements();
    var inls = [];
    for (var i = 0; i < items.length; i++) {
        if (items[i].allGraphics.length == 1 && link = items[i].allGraphics[0].itemLink, link.isValid) {
            inls.push({ip: items[i].parent, link: File(link.filePath).fsName});
        }
    }
    inls.reverse();
    for (var i = 0; i < inls.length; i++) {
        inls[i].ip.contents = inls[i].link;
    }
}

replaceTableImg2Name(app.activeDocument);
 

Douglas

Участник
Топикстартер
Сообщения
41
Реакции
0
JavaScript:
function replaceTableImg2Name (doc) {
    var items = doc.stories.everyItem().tables.everyItem().cells.everyItem().pageItems.everyItem().getElements();
    var inls = [];
    for (var i = 0; i < items.length; i++) {
        if (items[i].allGraphics.length == 1 && link = items[i].allGraphics[0].itemLink, link.isValid) {
            inls.push({ip: items[i].parent, link: File(link.filePath).fsName});
        }
    }
    inls.reverse();
    for (var i = 0; i < inls.length; i++) {
        inls[i].ip.contents = inls[i].link;
    }
}

replaceTableImg2Name(app.activeDocument);
Благодарю!
Все получилось!
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
1568788234706.png
 
  • Спасибо
Реакции: Douglas

люди_будущего

Участник
Сообщения
37
Реакции
34
Oleg Butrin,
ух ты, лихо как, не поверил, пока не проверил. Что если когда-то Adobe исправит баг в ES с приоритетом
&& vs =, и все у всех взорвется? Хм-м, может это тема известная, своих обещали уже не обижать, вроде как шиболет, чтобы чужие не шастали?

 

veretragna

γνώσις
Сообщения
578
Реакции
199
А баг ли это?
link = items[i].allGraphics[0].itemLink по идее должен всегда возвращать true, поскольку это не оператор сравнения ==, а оператор присваивания =. Поправьте, если что-то не так понял
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
А баг ли это?
link = items[i].allGraphics[0].itemLink по идее должен всегда возвращать true, поскольку это не оператор сравнения ==, а оператор присваивания =. Поправьте, если что-то не так понял
А разве оператор присваивания возвращает не присвоенное значение если что-то не так понял?
 
  • Спасибо
Реакции: veretragna

veretragna

γνώσις
Сообщения
578
Реакции
199
Спасибо, что поправили, а то сам себя запутал.
Edit: нельзя на больную голову в код лезть