Я пытаюсь получить список гиперссылок из моего документа, распечатанный в консоли или выводимый в текстовый файл. Вот с чем я играю:
for (k=0; k<app.activeDocument.hyperlinks.length-1; k++)
{
$.writeln(app.activeDocument.hyperlinks.item[k]);
}
Боюсь, там больше одной ошибки. «Гиперссылка» не рассматривается в последней версии собственного руководства Adobe по созданию сценариев (которое будет называться «Руководство по созданию сценариев Adobe InDesign CS6: JavaScript» на http://www.adobe.com/devnet/indesign/documentation.html ), но это нет причин просто «пробовать» что-то. Редактор ExtendScript Toolkit имеет собственную справку — «Просмотр модели объекта» в разделе «Справка», в которой вы можете найти hyperlink
все его свойства, но я предпочитаю эту версию тех же данных: Hyperlink .
У вас есть следующие проблемы:
app.activeDocument.hyperlinks.item[k]
: item
это не массив , это функция (см. Hyperlinks.item() ).item
, вы получите , [Object Hyperlink]
потому что это объект с несколькими свойствами... и недвижимость, которая вас интересует destination
:
Текст, страница или URL-адрес, на который указывает гиперссылка. Может возвращать: HyperlinkTextDestination, HyperlinkPageDestination, HyperlinkExternalPageDestination, HyperlinkURLDestination или ParagraphDestination.
.. более конкретно, поскольку гиперссылки могут указывать на множество различных объектов, они destination
должны быть типа HyperlinkURLDestination
;
.. который является собственным объектом, опять же с множеством свойств (см. HyperlinkURLDestination ); и вы, вероятно, хотите получить destinationURL
.
Собрав все это вместе, следующий скрипт
for (k=0; k<app.activeDocument.hyperlinks.length; k++)
{
if (app.activeDocument.hyperlinks[k].destination instanceof HyperlinkURLDestination)
$.writeln (app.activeDocument.hyperlinks[k].destination.destinationURL);
}
перечислит все внешние URL-адреса. Запись в файл также проста:
writeFile = File(Folder.myDocuments+'/urls.txt');
writeFile.open("w");
for (k=0; k<app.activeDocument.hyperlinks.length; k++)
{
if (app.activeDocument.hyperlinks[k].destination instanceof HyperlinkURLDestination)
writeFile.writeln (app.activeDocument.hyperlinks[k].destination.destinationURL);
}
writeFile.close();
writeFile.execute();