[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: 1139

6. Jun 2020, 14:00
Beitrag # 1 von 8
Bewertung:
(11442 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: 12783

6. Jun 2020, 17:59
Beitrag # 2 von 8
Beitrag ID: #575614
Bewertung:
(11393 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().


als Antwort auf: [#575609]

Hyperlink zu Textanker (CC2020, WIN10, JSX)

cwenet
Beiträge gesamt: 1139

6. Jun 2020, 18:53
Beitrag # 3 von 8
Beitrag ID: #575616
Bewertung:
(11373 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: 12783

6. Jun 2020, 20:06
Beitrag # 4 von 8
Beitrag ID: #575619
Bewertung:
(11331 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.


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: 1139

6. Jun 2020, 20:39
Beitrag # 5 von 8
Beitrag ID: #575621
Bewertung:
(11312 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: 12783

6. Jun 2020, 20:46
Beitrag # 6 von 8
Beitrag ID: #575623
Bewertung:
(11302 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.



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: 1139

6. Jun 2020, 20:58
Beitrag # 7 von 8
Beitrag ID: #575624
Bewertung:
(11288 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: 1139

6. Jun 2020, 21:02
Beitrag # 8 von 8
Beitrag ID: #575626
Bewertung:
(11281 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
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!