[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Hyperlink zu Textanker (CC2020, WIN10, JSX)

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Hyperlink zu Textanker (CC2020, WIN10, JSX)

cwenet
Beiträge gesamt: 1005

6. Jun 2020, 14:00
Beitrag # 1 von 8
Bewertung:
(8541 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

mit folgendem Script versuche ich gerade Hyperlinks zu erstellen.
Die Zielanker sind bereits gesetzt.
Das Script erstellt zwar die gewünschten Hyperlinks, aber das Ziel wird nicht erkannt.
Code
app.findTextPreferences = NothingEnum.nothing; 
app.findTextPreferences.appliedCharacterStyle = "start";
myLinkResult = app.activeDocument.findText();
myDoc = app.activeDocument;

for (i = 0; i < myLinkResult.length; i += 1) {

myLink = myLinkResult[i];
myLinkText = myDoc.hyperlinkTextSources.add(myLink);
myDoc.hyperlinks.add(myLinkText, myLink.contents);

}


Die Namen der Textanker sind identisch mit der Hyperlink-Quelle.

Hier ein Demo-Dok:
https://www.dropbox.com/s/uqs3actdkanw20h/hyperlink.indd?dl=0

Ich bräuchte bitte nochmals Eure Hilfe.
Gruss
Christoph
X

Hyperlink zu Textanker (CC2020, WIN10, JSX)

Martin Fischer
  
Beiträge gesamt: 12513

6. Jun 2020, 17:59
Beitrag # 2 von 8
Beitrag ID: #575614
Bewertung:
(8492 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

schau Dir mal die Syntax des hyperlinks.add()-Befehls an: hyperlinks.add()

Das erste Argument ist hyperlinkSource.
Das ist in Deinem Schnippsel korrekt.

Das zweite Argument ist hyperlinkDestination.
Du übergibst aber einen String.

Hier müsste aber Dein "Anker" als hyperlinkDestination-Objekt (vermutlich HyperlinkTextDestination) angegeben werden.

Wenn dieses Objekt noch nicht definiert ist, musst Du das ggf. aus dem Textobjekt erzeugen: HyperlinkTextDestination.add().

Viele Grüße
Martin




als Antwort auf: [#575609]

Hyperlink zu Textanker (CC2020, WIN10, JSX)

cwenet
Beiträge gesamt: 1005

6. Jun 2020, 18:53
Beitrag # 3 von 8
Beitrag ID: #575616
Bewertung:
(8472 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke fürs heranführen.
Eigentlich müsste es doch jetzt so richtig sein:

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

for (i = 0; i < myLinkResult.length; i += 1) {

myLink = myLinkResult[i];
source = myDoc.hyperlinkTextSources.add(myLink);
anchor = myDoc.hyperlinkTextDestinations.item(myLink.contents);
xref = myDoc.hyperlinks.add (source, anchor);
myRandomString = String(Math.random());
xref.name = myLink.contents+ "_" + myRandomString.slice(2,);
}


Fehler: Ungültiger Wert für Parameter "hyperlinkDestination"
Leider komme ich irgendwie nicht weiter.


als Antwort auf: [#575614]

Hyperlink zu Textanker (CC2020, WIN10, JSX)

Martin Fischer
  
Beiträge gesamt: 12513

6. Jun 2020, 20:06
Beitrag # 4 von 8
Beitrag ID: #575619
Bewertung:
(8430 mal gelesen)
URL zum Beitrag
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.

Viele Grüße
Martin




als Antwort auf: [#575616]
(Dieser Beitrag wurde von Martin Fischer am 6. Jun 2020, 20:11 geändert)

Hyperlink zu Textanker (CC2020, WIN10, JSX)

cwenet
Beiträge gesamt: 1005

6. Jun 2020, 20:39
Beitrag # 5 von 8
Beitrag ID: #575621
Bewertung:
(8411 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank, Martin, für die Aufbereitung.

Es funktioniert fast.
Der erste Hyperlink [1] im Fliesstext verweist komischerweise auf sich selber.
Es wird dort ein Textanker platziert.


als Antwort auf: [#575619]

Hyperlink zu Textanker (CC2020, WIN10, JSX)

Martin Fischer
  
Beiträge gesamt: 12513

6. Jun 2020, 20:46
Beitrag # 6 von 8
Beitrag ID: #575623
Bewertung:
(8401 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von Christoph Der erste Hyperlink [1] im Fliesstext verweist komischerweise auf sich selber.
Es wird dort ein Textanker platziert.


Dann ist Dir das Ziel (der "Anker") vorhin verlorengegangen. Denn mit meinem Code oben wird ein fehlendes Ziel direkt an der Quelle erzeugt.

Siehe Hinweis oben:

Zitat von Martin Fischer 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.


Viele Grüße
Martin




als Antwort auf: [#575621]
(Dieser Beitrag wurde von Martin Fischer am 6. Jun 2020, 20:46 geändert)

Hyperlink zu Textanker (CC2020, WIN10, JSX)

cwenet
Beiträge gesamt: 1005

6. Jun 2020, 20:58
Beitrag # 7 von 8
Beitrag ID: #575624
Bewertung:
(8387 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich glaube, ich habe es nicht verstanden.
So läuft es jetzt fehlerfrei durch, aber ohne die erste Fundstelle.
Das Ziel ist aber da.

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 ++)
{
myLink = myLinkResult[i];
source = myDoc.hyperlinkTextSources.add(myLink);
if (myDoc.hyperlinkTextDestinations.item(myLink.contents).isValid) {
anchor = myDoc.hyperlinkTextDestinations.item(myLink.contents);
xref = myDoc.hyperlinks.add (source, anchor);
myRandomString = String(Math.random());
xref.name = myLink.contents + "_" + myRandomString.slice(2,);
}
}



als Antwort auf: [#575623]

Hyperlink zu Textanker (CC2020, WIN10, JSX)

cwenet
Beiträge gesamt: 1005

6. Jun 2020, 21:02
Beitrag # 8 von 8
Beitrag ID: #575626
Bewertung:
(8380 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Entwarnung.
Ich habe nochmal alle Ziele gelöscht und neu erstellt.
Jetzt tut es.
Die Textanker sind ein Mysterium.
Schönen Abend und vielen Dank
Christoph


als Antwort auf: [#575624]
(Dieser Beitrag wurde von cwenet am 6. Jun 2020, 21:03 geändert)
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
20.01.2022

Zoom Meeting
Donnerstag, 20. Jan. 2022, 08.21 - 08.22 Uhr

Vortrag

Die Neuerungen in Illustrator CC2022 sind sehr umfangreich. Vor allem im Bereich 3D hat Adobe hier einiges umgesetzt, was Grafiker lange vermisst haben. Monika Gause (http://www.gause.de), eine liebe Freundin der IDUG Stuttgart, wird uns einmal mehr Illustrator erklären und vermitteln, wie wir mit dem Funktionsumfang des Programmes unsere Ideen und Vorstellungen umsetzen können. Zudem erzählt sie uns von ihrer „36 Days of Type“ Challenge, bei der alle Buchstaben nur aus jeweils einem Ankerpunkt bestehen. Einen Vorgeschmack darauf könnt ihr auf Monikas Instagram- (https://www.instagram.com/vektorgarten) oder Behance-Account (https://www.behance.net/gallery/118643031/36-Days-of-Type-and-Anchor-Points) bestaunen.

Nein

Organisator: InDesign Usergroup Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailidug AT satzkiste DOT de

idugs78.eventbrite.com

Neues in Illustrator CC2022
Veranstaltungen
14.02.2022

Zürich, Online
Montag, 14. Feb. 2022, 07.30 - 18.00 Uhr

Word Press / Digitalisierung / Selbständigkeit

Digitalisierung und KMU's in der Schweiz Leistungsfähig im Zeitalter der Digitalisierung Machine Learning Künstliche Intelligenz CRM Change Management Kommunikation im Betrieb Kommunikation digitale Medien Digitale Vertriebsmodelle

Ja

Organisator: B. Isik

Kontaktinformation: B. Isik / Daniela Lovric, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/website-mit-wix-erstellen/