2012-10-31 198 views
2

我是Adobe Indesign的新手,但我对各种编码语言都很满意。添加超链接到indesign

我想创建一个基于Web的文档,其中列出了一些产品和产品描述,每个产品描述都充当超链接到在线产品本身。

我已经创建了XML,列出了我想通过XML导入的各种属性,但我在定义URL以充当超链接时遇到了问题。

我目前的XML看起来是这样的:

<?xml version="1.0" encoding="utf-8"?> 

<list> 

<product href="http://www.google.co.uk"> 
<BrandName>Brand 1</BrandName> 
<Title>Shirt</Title> 
<FullPrice>£25</FullPrice> 
<ProductCode>ABC123</ProductCode> 
</product> 

<product href="http://www.google.co.uk"> 
<BrandName>Brand 2</BrandName> 
<Title>Jacket</Title> 
<FullPrice>£20</FullPrice> 
<ProductCode>DEF456</ProductCode> 
</product> 

</list> 

然而,它只是不工作。 我可能错过了一些非常简单的东西,但我目前处于亏损状态。

我只是希望能够将结构中的元素拖放到我的页面上,另存为PDF并知道每个产品都将链接到相关的超链接。

任何帮助将不胜感激。

+0

InDesign文档中的每个XML元素代表什么? (即文本框,段落,应用字体样式等) –

+0

我基本上是在3x3网格中创建一个产品目录。 每个xml元素都与我想要显示在页面上的内容相关。例如。我要为产品“1”,以显示: 品牌1 衬衫 £25 ABC123 但在我的文本框的文本链接到与它相关的网址。 –

+0

因此,每个'product'元素都与InDesign中的文本框相关联,并且每个'BrandName','Title','FullPrice','ProductCode'元素都与文本框内的文本相关联? –

回答

3

XML与InDesign DOM对象断开连接。您必须明确定义哪个XML元素与哪个InDesign对象配合使用,通常通过标记来定义。通过给product XML元素一个href属性,您实际上并不告诉InDesign它是超链接。

为了告诉InDesign中它超链接,您可以通过使用InDesign中的每个product XML元素循环JavaScript引擎和超链接应用到基于元素的属性的文本。

下面是一个例子:

#include "./XML Rules/glue code.jsx" 

main(); 

function main() { 
    var doc = app.activeDocument; 
    var elems = doc.xmlElements; 
    var ruleSet = new Array (new Rule); 
    __processRuleSet(elems[0], ruleSet); 

    function Rule() { 
     this.name = "Rule"; 
     this.xpath = "//product[@href]"; 
     this.apply = function(elem, ruleProcessor) { 
     var elemText = elem.texts[0]; 
     var linkURL = elem.xmlAttributes.itemByName("href").value; 
     var linkSource = doc.hyperlinkTextSources.add(elemText); 
     var linkDest = doc.hyperlinkURLDestinations.add(linkURL); 
     doc.hyperlinks.add(linkSource, linkDest); 
     return true; 
     } 
    } 
} 

有可能是一个更简单的方法,但我没有意识到这一点。

+0

嗨乔希,谢谢你的这篇文章。不幸的是我的要求已经改变了。看来我现在需要链接图片而不是文字。你知道一种运行脚本的方式来自动超链接文件中某些文件名的图像吗? 我意识到这是一个复杂的要求。如果没有,那么谢谢你花在我的问题上的时间。Rachael –

+0

我相信这是可能的,但我会让这是你想弄明白的。我已经提供了一个示例脚本,但如果您想自己编写脚本,可以稍微付一点努力。 [这篇文章](http://meta.stackexchange.com/a/150238/196793)解释我的理由有点不解决这个问题给你。 –

+0

晚会晚会,但你可以链接图像。内嵌图片 - alpha1