如何获取Adobe InDesign HyperLinkURLDestination链接文本

时间:2016-06-16 12:02:48

标签: adobe adobe-indesign

到目前为止,我实现了一个扩展,将InDesign文档导出为XML,除了超链接外,一切正常。

我可以通过 document.hyperlinkURLDestinations 获取所有超链接(HyperLinkURLDestination),但无法知道段落中的哪些文本链接到这些超链接。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

超链接基本上有两个属性,即源和目标。您的案例的目的地是在浏览器中打开的URL。但是,源实际上是InDesign文本对象。目标可以多次使用,但每个对象只能使用一次。所以我建议通过实际使用它的对象访问文本源,即超链接。

var main = function() {
	var doc = app.properties.activeDocument,
	hlks,hlk,
	src,
	txt;
	
	if ( !doc) return;
	
	hlks = doc.hyperlinks;
	
	
	if ( !hlks.length ) return;
	
	hlk = hlks[0];
	src = hlk.source;
	
	if ( !( src instanceof HyperlinkTextSource) ) return;
	txt = src.sourceText;
	app.select ( txt );
	
	txt.parentTextFrames.length && zoomObject ( txt.parentTextFrames[0] );
	
	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();