[ID CS4-CS6] превратности пути, или извращённый мак :)

  • Автор темы Автор темы bossrus
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
беру 2 строчки кода:
Код:
app.documents[0].allGraphics[0].itemLink.filePath
app.documents[0].fullName.path
и то, и другое отображает путь.
но! почему то первая строчка возвращает
Macintosh HD:Users:user: Desktop:-tst-:1111:11:eeeee_eeeee.pcx
то есть полный путь, с разделителями папок в виде двоеточий, а вторая строка
путь относительный, и,
Не по теме:
чёрт побери
, с разделителями папок символами "/"

нужно определить есть ли в пути к картинке полный путь к вёрстке. в прямом виде оно говорит, что нет, конечно. пришлось соорудить функцию на 20 строк, чтобы привести одно к другому.
но может я чего не знаю, и это можно сделать 1 командой какого-нить преобразования пути?
 
Код:
File(app.documents[0].allGraphics[0].itemLink.filePath);
File(app.documents[0].fullName.path);
ага. с пролинкованными картинками сработало. а вот если миссинг, то возврат получается
/Applications/Adobe InDesign CS4/scripts/XHTML For Digital Editions/Macintosh HD:Users:user: Desktop:-tst-:1111:11:wwwwwwwww.jpg
и получается, что ручная доводка пока надёжней :)
 
картинка, в пути к которой я ищу путь к вёрстке, должна быть миссингом.
Несколько раз прочитал это заклинание, но так и не понял его глубокого смысла.
Что ищем? Link, у которого .status == LinkStatus.LINK_MISSING? Или какую-то верстку, которая миссинг? Или что?
 
Несколько раз прочитал это заклинание, но так и не понял его глубокого смысла.
Что ищем? Link, у которого .status == LinkStatus.LINK_MISSING? Или какую-то верстку, которая миссинг? Или что?
Код:
app.documents[0].allGraphics[0].itemLink.filePath
в котором мы ищем
Код:
app.documents[0].fullName.path
может быть миссингом. или может не быть миссингом. определяющим признаком является местоположение картинки. и преобразование обеих переменных в тип "файл" невозможно, потому что путь к миссинговой картинке как-то весьма страшно преображается, а к немиссинговой — не преображается.
 
может быть миссингом. или может не быть миссингом. определяющим признаком является местоположение картинки. и преобразование обеих переменных в тип "файл" невозможно, потому что путь к миссинговой картинке как-то весьма страшно преображается, а к немиссинговой — не преображается.
Так вам же и советуют проверять статус линка предварительно
 
Так вам же и советуют проверять статус линка предварительно
ок. я проверил статус линка. и?
если не миссинг — то один алгоритм нахождения пути2 в пути1, а если миссинг — другой? находить-то нужно в любом случае. даже если миссинг.

если перефразировать первый пост с учётом новых фактов:
нужно определить есть ли в пути к картинке, даже если она миссинг, полный путь к вёрстке. в прямом виде оно говорит, что нет, конечно. пришлось соорудить функцию на 20 строк, чтобы привести одно к другому.
но может я чего не знаю, и это можно сделать 1 командой какого-нить преобразования пути при любом статусе прилинкованности картинки?

универсальную функцию-то унифицирования обоих путей я сделал. вопрос в наличии более простого пути, чем тот, по которому пошёл я.
 
А, вон вы о чем
Если вдуматься, прямое решение тут нетривиально, поскольку постановка задачи содержит в себе взаимоисключающие параграфы. Ибо missing путь может быть каким угодно - полным, относительным или вообще невозможным - так же? И преобразовать его лобовым способом к одному виду с настоящим по этой причине невозможно - только танцуя с бубном. Sad but true
 
ок. я проверил статус линка. и?
если не миссинг — то один алгоритм нахождения пути2 в пути1, а если миссинг — другой? находить-то нужно в любом случае. даже если миссинг.

если перефразировать первый пост с учётом новых фактов:
нужно определить есть ли в пути к картинке, даже если она миссинг, полный путь к вёрстке. в прямом виде оно говорит, что нет, конечно. пришлось соорудить функцию на 20 строк, чтобы привести одно к другому.
но может я чего не знаю, и это можно сделать 1 командой какого-нить преобразования пути при любом статусе прилинкованности картинки?

универсальную функцию-то унифицирования обоих путей я сделал. вопрос в наличии более простого пути, чем тот, по которому пошёл я.
Какая-то каша... Что за верстка? Верстка — это процесс или результат процесса макетирования. Это файл INDD? К нему нужно путь искать?
Если речь идет о файле, который подлинкован к публикации, и нужно получить путь линка, то какая разница утерян он или нет?!
Есть Link.filePath, который всегда можно принудительно привести к File. У File можно получить .fsName. По Вашим листингам вообще не понятно, что там у Вас является "возвратом" — это что? то что выводится в консоли? это .absoluteURI? .fsName? что?

upload_2016-7-13_18-38-50.png
 
Все это, конечно, хорошо, но как absoluteURI отнесется к заведомо лажевому пути? 'hmmm'
 
  • Спасибо
Реакции: _MBK_
Какая-то каша... Что за верстка? Верстка — это процесс или результат процесса макетирования. Это файл INDD? К нему нужно путь искать?
вёрстка в данном случае — это открытый в индизайне файл .indd
Если речь идет о файле, который подлинкован к публикации, и нужно получить путь линка, то какая разница утерян он или нет?!
когда возвращаешь как
Код:
alert(app.documents[0].allGraphics[0].itemLink.filePath);
то никакой разницы нет. но тогда эта строка по строению будет отличаться от строки
Код:
alert(app.documents[0].fullName.path);
о чём и указано в первом посте.

Не по теме:
понятное дело, что в скрипте идёт сохранение в текстовой переменной вместо alert — но это сути не меняет.

была идея превратить оба путя в файл. результат от миссингованной картинки отличается от нормально пролинкованной. в случае миссинга появляется добавка в начале имени файла "/Applications/Adobe InDesign CS4/scripts/XHTML For Digital Editions/Macintosh ", а формат самого текста остаётся "неправильным" — с разделителями папок двоеточиями. в то время, как путь к самой вёрстке — это относительный путь с разделителями папок в виде слешей.
По Вашим листингам вообще не понятно, что там у Вас является "возвратом" — это что? то что выводится в консоли? это .absoluteURI? .fsName? что?
возвратом является то, что возвращает функция в том виде, который я написал в первом сообщении. попытка добавить .absoluteURI или .fsName при конвертации ссылки в "File" ничего не дали. добавка в начале строки "/Applications/Adobe InDesign CS4/scripts/XHTML For Digital Editions/Macintosh " для миссинговых линков так и осталась.
ну и неочевидное — запуск скрипта, как следует из префикса темы, осуществляются из индизайна.

Все это, конечно, хорошо, но как absoluteURI отнесется к заведомо лажевому пути? 'hmmm'
ему пофиг. :)
 
, а формат самого текста остаётся "неправильным" — с разделителями папок двоеточиями. в то время, как путь к самой вёрстке — это относительный путь с разделителями папок в виде слешей.
Значит, и вправду, какой то неведомый макакоориентированный баг 'hz'
А проблема только в разделителях? А если через split принудительно разбирать строку а потом собирать? 'hmmm'
 
Значит, и вправду, какой то неведомый макакоориентированный баг 'hz'
А проблема только в разделителях? А если через split принудительно разбирать строку а потом собирать? 'hmmm'
не только, но и сплитами я это таки и сделал.
 
То есть, хотите сказать, что мой код не работает на OSX? Привожу его в тексте:
Код:
var pathDoc = File(app.activeDocument.filePath).absoluteURI;
for (var a = 0, l = app.activeDocument.links.length; a < l; a++) {
    var linkParentPath = File(app.activeDocument.links[a].filePath).parent.absoluteURI;
    $.writeln(linkParentPath);
    $.writeln(app.activeDocument.links[a].status);
    if (linkParentPath.indexOf(pathDoc) > -1) {
        $.writeln("Ссылка внутри");
    } else {
        $.writeln("Ссылка снаружи");      
    }
}
 
Последнее редактирование:
Разделители в моем примере вообще идут лесом, потому что путь к приводится к мультиплатформенному виду URI и это String, там хоть ч0рт лысой будет — проверяться по indexOf две строки будут.
 
Статус
Закрыто для дальнейших ответов.