添加超链接到indesign

时间:2012-10-31 12:17:32

标签: xml hyperlink adobe-indesign

我是Adobe Indesign的新手,但我对各种编码语言都很满意。

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

我已经创建了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并知道每个产品都会链接到相关的超链接。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

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

为了告诉InDesign 超链接,您可以使用InDesign javascript引擎遍历每个product XML元素,并根据元素的属性将超链接应用于文本。

以下是一个例子:

#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;
      }
   }
}

可能有一种更简单的方法,但我不知道。