[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Hyperlink zu Textanker (CC2020, WIN10, JSX)

Martin Fischer
  
Beiträge gesamt: 12885

6. Jun 2020, 20:06
Bewertung:

gelesen: 11569

Beitrag als Lesezeichen
Ja, eigentlich müsste es so richtig sein und bei mir funktioniert das auch mit Deinem oben angegebenen Beispieldokument.

Hier ist noch eine kleine Prüfung zur Existenz der hyperlinkTextDestination eingebaut, aber im Wesentlichen ist das Dein Code:

Code
var myDoc = app.activeDocument; 
var myLinkResult = [];
var myLink = null;
var source = null;
var xref = null;
var i = 0;
var myRandomString = '';

app.findTextPreferences = NothingEnum.nothing;
app.findTextPreferences.appliedCharacterStyle = myDoc.characterStyles.itemByName("start");
myLinkResult = app.activeDocument.findText();

for (i = 0; i < myLinkResult.length; i += 1)
{
myLink = myLinkResult[i];
source = myDoc.hyperlinkTextSources.add(myLink);
if (myDoc.hyperlinkTextDestinations.item(myLink.contents).isValid)
anchor = myDoc.hyperlinkTextDestinations.item(myLink.contents);
else
anchor = myDoc.hyperlinkTextDestinations.add({destinationText:myLink, name: myLink.contents});
xref = myDoc.hyperlinks.add (source, anchor);
myRandomString = String(Math.random());
xref.name = myLink.contents + "_" + myRandomString.slice(2,);
}


Im Moment habe ich keine Erklärung, weshalb es bei Dir mit dem Beispieldokument nicht funktioniert.

---
edit:
Die else-Alternative ist freilich Quatsch, weil sie das Ziel bei der Quelle ergänzt. Das müsstest Du ggf. noch konkreter anpassen. Es sollte nur sicher stellen, dass ein ansprechbares Ziel mit diesem Namen existiert.

(Dieser Beitrag wurde von Martin Fischer am 6. Jun 2020, 20:11 geändert)
Änderungsverlauf:
Beitrag geändert von Martin Fischer (Moderator) am 6. Jun 2020, 20:11