我们导入过程的一部分是从word文档中删除超链接。我们现有的脚本非常简单,直接且在某种程度上起作用。
我们遇到的问题是,即使我们使用下面的代码删除链接也很困难,超链接符号仍然显示在故事编辑器中,这阻止我们将来手动添加链接到此文本块。
我还从inDesign手动添加了一个超链接,以显示两个超链接之间的区别,请参见下图。话虽如此,即使我在从inDesign添加链接后运行脚本,结果与上述相同。
var activeDocument = app.activeDocument;
trace("There are " + activeDocument.hyperlinks.length + " link(s) in the document.");
for(var i=(activeDocument.hyperlinks.length - 1); i >= 0; i--)
{
trace("Removing hyperlink: " + activeDocument.hyperlinks.item(i).destination.name);
activeDocument.hyperlinks.item(i).remove();
}
trace("There are " + activeDocument.hyperlinks.length + " link(s) in the document.");
There are 1 link(s) in the document.
Removing hyperlink: http://www.google.com
There are 0 links(s) in the document.
答案 0 :(得分:2)
超链接由几个不同的部分组成,您必须小心地删除它们中的每一个。单个“超链接”对象只是一种抽象容器对象;它包含对超链接项及其目标的引用。
试试这个:
app.activeDocument.hyperlinkTextDestinations.everyItem().remove();
app.activeDocument.hyperlinkTextSources.everyItem().remove();
app.activeDocument.hyperlinks.everyItem().remove();
答案 1 :(得分:0)
我来到这里时也遇到了类似的问题,并非常感谢usr2564301的回答,因为它使InDesign中超链接的性质更加明了。但是在我自己的脚本中的某些事情未能按预期工作后,我进行了更多探索,发现答案并不完全准确。
为了测试hyperlink
,hyperlinkTextSource
和hyperlinkURLDestination
之间的关系,我编写了一个脚本,该脚本仅删除了三个对象之一,并使用共享和非共享对象对其进行了测试。超链接。这是我发现的:
具有非共享的超链接目标:
删除超链接:
超链接已删除?:是
来源已删除?:否
目的地已删除?:是删除源:
超链接已删除?:是
来源已删除?:是
目的地已删除?:是删除目的地:
超级链接已删除?:否
来源已删除?:否
目的地已删除?:是具有共享的超链接目标:
删除超链接:
超链接已删除?:是
来源已删除?:否
目的地已删除?:否删除源:
超链接已删除?:是
来源已删除?:是
目的地已删除?:否删除目的地:
超级链接已删除?:否
来源已删除?:否
目的地已删除?:是
删除目标完全符合您的期望,它只是删除目标并将超链接和源保留在原处。就像超链接中的目标字段为空。
您发现,删除包含的超链接的结果不太直观。您可能希望它会删除所有内容,但是只会删除目的地(如果未共享)。
让我真正感到惊讶的是,仅删除源就足以删除所有内容(对于非共享目标)。我认为这种说法是有道理的-没有源的超链接是毫无意义的。
所以你去了。在我需要删除单个超链接的脚本中,此行为实际上简化了事情。删除hyperlinkTextSource
即可完成工作,而不必担心它是否是共享目的地(其他超链接可能会使用它)。