2016-06-16 3 views
0

Пока я реализую расширение для экспорта документа InDesign в XML, все работает отлично, за исключением гиперссылок.Как получить связанный текст Adobe InDesign HyperLinkURLDestination

я могу получить все гиперссылки (HyperLinkURLDestination) через document.hyperlinkURLDestinations но нет никакого способа узнать, какой текст в пункте связаны с этими гиперссылками. Есть идеи?

ответ

0

Гиперссылка имеет в основном два свойства, источник и пункт назначения. Пункт назначения n в вашем случае - это URL-адрес, который необходимо открыть в браузере. Однако источником является текстовый объект InDesign. Назначения можно использовать несколько раз, но только для одного объекта. Поэтому я бы рекомендовал обратиться к текстовым источникам с помощью фактически используемого объекта, то есть с помощью гиперссылки.

var main = function() { 
 
\t var doc = app.properties.activeDocument, 
 
\t hlks,hlk, 
 
\t src, 
 
\t txt; 
 
\t 
 
\t if (!doc) return; 
 
\t 
 
\t hlks = doc.hyperlinks; 
 
\t 
 
\t 
 
\t if (!hlks.length) return; 
 
\t 
 
\t hlk = hlks[0]; 
 
\t src = hlk.source; 
 
\t 
 
\t if (!(src instanceof HyperlinkTextSource)) return; 
 
\t txt = src.sourceText; 
 
\t app.select (txt); 
 
\t 
 
\t txt.parentTextFrames.length && zoomObject (txt.parentTextFrames[0]); 
 
\t 
 
\t alert("here you are…"); 
 
} 
 

 

 
function zoomObject(theObj) { 
 
try { 
 
    var objBounds = theObj.geometricBounds; 
 
} catch (e) { 
 
    throw "Object doesn't have bounds." 
 
} 
 
var ObjHeight = objBounds[2] - objBounds[0]; 
 
var ObjWidth = objBounds[3] - objBounds[1]; 
 
var myWindow = app.activeWindow; 
 
var pageBounds = myWindow.activePage.bounds; 
 
var PgeHeight = pageBounds[2] - pageBounds[0]; 
 
var PgeWidth = pageBounds[3] - pageBounds[1]; 
 
var hRatio = PgeHeight/ObjHeight; 
 
var wRatio = PgeWidth/ObjWidth; 
 
var zoomRatio = Math.min(hRatio, wRatio); 
 
myWindow.zoom(ZoomOptions.fitPage); 
 
myWindow.zoomPercentage = myWindow.zoomPercentage * zoomRatio; 
 
} 
 

 
main();

+0

Благодаря профи, это работает для меня – Leo

Смежные вопросы