[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt hyperlinkURLDestinations schon von einem anderen Objekt verwendet

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

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

4. Dez 2017, 14:30
Beitrag # 1 von 10
Bewertung:
(2220 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen

Ich habe ein Problem mit identischen URLs im selben Dokument, die ich in Hyperlinks umwandeln möchte.

Wenn ich in der for-Schleife die gefundenen URLs abarbeite, beschwert sich das Skript bei 'hyperlinkURLDestinations.add()', dass diese Destination schon von einem anderen Objekt verwendet wir.
Hier mein Code dazu:
Code
var _myURL = _myDoc.findGrep(); 

for (var x = 0; x < _myURL.length; x++){ //Schleife durch alle gefundenen URLs, verlinke neu
var _URL = _myURL[x]; // Text-Objekt
var _source = _myDoc.hyperlinkTextSources.add(_URL); //hier muss Text sein, weil die Quelle ein Text-Objekt sein muss
var _URLstring = _myURL[x].contents; // String
var _dest = _myDoc.hyperlinkURLDestinations.add(_URLstring, {name: _URLstring}); //Destination will einen String
var _hyperlink = _myDoc.hyperlinks.add(_source, _dest, {name: _URLstring});
}


Ich habe versucht, die Destination über die ID oder den Namen anzusteuern, bin aber von der Syntax grade überfordert.

Vielleicht hat jemand eine Idee?

Danke und Gruss
Gaby
Hier Klicken X

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Martin Fischer
  
Beiträge gesamt: 11871

4. Dez 2017, 14:44
Beitrag # 2 von 10
Beitrag ID: #561168
Bewertung:
(2219 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gaby,

ein Textobjekt (Zeichen, Wort, ...) kann nur für je einen Hyperlink als Quelle dienen.
Was sollte dabei herauskommen, wenn Text auf mehrere unterschiedliche Ziele zielt. :-)

Prüfe vor der Zuweisung eines Hyperlinks, ob der Text bereits als Quelle für einen Hyperlink dient.
Wenn ja, entscheide, ob der alte Hyperlink weiter gelten oder gelöscht und durch den neuen ersetzt werden soll.

Viele Grüße
Martin


als Antwort auf: [#561164]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

4. Dez 2017, 14:52
Beitrag # 3 von 10
Beitrag ID: #561169
Bewertung:
(2215 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin

Vielen Dank für deine rasche Antwort! Das ist mir im Prinzip ja klar, aber ich habe doch mehrere Textobjekte, an unterschiedlicher Stelle im Dokument, sie haben einfach denselben Inhalt, also der String ist identisch...?

Allfällige alte Hyperlinks, Quellen und Ziele habe ich vorgängig gelöscht, die können das Problem nicht sein.

Entschuldige, ich steh ich grad etwas auf dem Schlauch.

Lieber Gruss
Gaby
Gaby Leuenberger


als Antwort auf: [#561168]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Kai Rübsamen
Beiträge gesamt: 4540

4. Dez 2017, 16:20
Beitrag # 4 von 10
Beitrag ID: #561181
Bewertung:
(2191 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Kann es sein, dass das nicht sauber programmiert ist? Wenn ich z.B. ein Hyperlinkziel per Skript anlege, das danach im UI lösche (es ist nicht mehr in der Liste), dann das Skript erneut starte, erhalte ich den Fehler auch. Offenbar spukt da noch etwas im Hintergrund …

Gruß Kai Rübsamen


als Antwort auf: [#561169]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

5. Dez 2017, 11:13
Beitrag # 5 von 10
Beitrag ID: #561206
Bewertung:
(2095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Kai

Ja, das dachte ich anfangs auch, weswegen ich ja alle Sources, Hyperlinks und Destinations zuerst entferne, und zwar je einzeln, weil die Arrays verschieden lang sein können.

Hier mal der ausführlichere Code (Warnung: Anfängerin):
Code
var  _myURL; 
var _myDoc = app.activeDocument;
var _oldDest = _myDoc.hyperlinkURLDestinations.everyItem().getElements();
var _oldSource = _myDoc.hyperlinkTextSources.everyItem().getElements();
var _aHyperlink = _myDoc.hyperlinks.everyItem().getElements(); //Array mit existierenden Hyperlinks

for (var i=_aHyperlink.length-1; i>=0; i--){//Hyperlinks entfernen
var _aHyperlinkRemove = _aHyperlink[i].remove();
_aHyperlink.pop();
}
for (var i=_oldDest.length-1; i>=0; i--){//Ziele entfernen
var _oldDestRemove = _oldDest[i].remove();
_oldDest.pop();
}
for (var i=_oldSource.length-1; i>=0; i--){//Quellen entfernen
var _oldSourceRemove = _oldSource[i].remove();
_oldSource.pop();
}




app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
//matche ALLE URLs
app.findGrepPreferences.findWhat = '((?:(?:https?|ftp|file)://|www\\.|ftp\\.)[-A-Za-z0-9+&@#/%=~_|$?!:,.]*[A-Za-z0-9+&@#/%=~_|$])';
var _myURL = _myDoc.findGrep();

for (var x = 0; x < _myURL.length; x++){ //Schleife durch alle gefundenen URLs, verlinke neu
var _URL = _myURL[x]; // Text-Objekt
try{
var _source = _myDoc.hyperlinkTextSources.add(_URL); //hier muss Text sein, weil die Quelle ein Text-Objekt sein muss
var _URLstring = _myURL[x].contents; // String
var _dest = _myDoc.hyperlinkURLDestinations.add(_URLstring, {name: _URLstring}); //Destination will einen String
var _hyperlink = _myDoc.hyperlinks.add(_source, _dest, {name: _URLstring}); }
catch (e){}
}


Und hier auch noch ein Muster meines Test-Dokuments:
Code
<https://www.revision.ch/liquiditaetsplanung.html> 
(zuletzt besucht am 29.06.2017).
https://www.nzz.ch
Blablabla
https://www.irgendeinewebseite.ch/index.html#id-1

https://www.irgendeinewebseite.ch/#a2343

https://www.nzz.ch


InDesign hätte ja das nette Hyperlink-Interface, das URLs zu Hyperlinks macht, aber das matcht a) die admin.ch-URL mit den # nicht korrekt und b) fügt es bei zwei identischen URLs auch nur einen Link ein. Ich verstehe aber auch nicht genau, was Martin denn nun meinte, aber vielleicht reden wir da nicht vom selben? Jedenfalls führt das Skript auch mit dem try-Block nicht zum Ziel.

Vielen Dank fürs Mitdenken, mir raucht schon der Kopf!

LG
Gaby
Gaby Leuenberger


als Antwort auf: [#561181]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

5. Dez 2017, 11:24
Beitrag # 6 von 10
Beitrag ID: #561207
Bewertung:
(2095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich glaube, ich habe das Problem gefunden:

Ich kann nicht denselben Namen vergeben für identische URLs...

Wenn ich bei
Code
   var _dest = _myDoc.hyperlinkURLDestinations.add( _URLtext, {name: _URLtext}); //Destination will einen String 
var _hyperlink = _myDoc.hyperlinks.add(_source, _dest, {name: _URLtext});


je die Option name: rauslösche, läuft es durch und setzt die Links (nummeriert sie dann halt und sie sind im Hyperlink-Panel dann nicht ohne weiteres zu identifizieren...

Vielleicht hat mir jemand eine schlaue Lösung?
Gaby Leuenberger


als Antwort auf: [#561206]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Kai Rübsamen
Beiträge gesamt: 4540

5. Dez 2017, 11:37
Beitrag # 7 von 10
Beitrag ID: #561210
Bewertung:
(2091 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gaby,

ich hab leider keine Zeit das heute zu testen. Ich löse das bei mir in der Praxis so, dass ich für alles einen Zähler mitlaufen lasse und damit gibt es quasi nichts doppelt.

Gruß Kai Rübsamen


als Antwort auf: [#561207]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

5. Dez 2017, 11:45
Beitrag # 8 von 10
Beitrag ID: #561212
Bewertung:
(2088 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai

Kein Stress, ich muss auch gleich wegrennen, und kann erst morgen wieder weitermachen.

Ich werd das mit dem Zähler mal versuchen, aber ich weiss grad noch nicht so recht, wie ich den der name-Option mitgeben soll.

Interessant: Wenn ich zu Fuss verlinke, macht ID auch einen Zähler hinter den URL-Namen, wenn ich über das Panel automatisch verlinke, dann setzt mir ID nummerierte Links unter ein- und dieselbe URL, oh Objektmodell, du treibst mich in den Wahnsinn...

Merci und Gruss
Gaby
Gaby Leuenberger


als Antwort auf: [#561210]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

WernerPerplies
Beiträge gesamt: 2211

5. Dez 2017, 12:18
Beitrag # 9 von 10
Beitrag ID: #561214
Bewertung:
(2071 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gaby,

ja Hyperlinks haben es in sich, und mit dem Namen liegst Du richtig.

Ich habe das bei meinen Skripten , z. B. bei (
WpsHyperlinkInspector – Alle Hyperlinkinformationen einer Adobe InDesign Datei auf einen Blick), gelöst, indem ich entweder eine eigene Buchhaltung der Links gepflegt oder alternativ vor Erzeugung das Vorhanden sein geprüft habe.

Wenn ein Link schon vorhanden ist und voll gültig ist, erzeuge ich einen neuen Namen + (Zähler).

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#561207]

hyperlinkURLDestinations schon von einem anderen Objekt verwendet

Gaby Leuenberger
Beiträge gesamt: 29

6. Dez 2017, 08:29
Beitrag # 10 von 10
Beitrag ID: #561242
Bewertung:
(2005 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner (und Kai)

Danke für die Antwort. Heute morgen bin ich wacher und mir hat auch gleich gedämmert, wie ich den Zähler beim Namen setzen kann. Jetzt flutscht alles wunderbar! :)

Vielen Dank allen fürs Mitdenken, ich finde es immer wieder faszinierend, wie sehr ich mich vor eine Wand fahren kann und dann gar nichts mehr durchschaue, und einen Tag später fällt es wie Schuppen von den Augen ... (leider nicht immer :)).

Einen schönen Nikolaus wünsch ich

Liebe Grüsse
Gaby


als Antwort auf: [#561214]
Hier Klicken X
Hier Klicken

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
26.09.2018

Hochschuloe der Medien, Stuttgart
Mittwoch, 26. Sept. 2018, 19.00 - 21.00 Uhr

Vertrag

Nur auf den ersten Blick scheint dieses Thema exotisch. Aber eine neue EU-Richtlinie und deren Auswirkungen auf deutsche Gesetze werden dieses Thema auch für Publisher interessant machen. Die EU-Richtlinie "2102 zu Barrierefreiheit" besagt folgendes: Ab dem 23. September 2018 müssen alle öffentlichen Stellen ihre neuen (Office- oder PDF-) Dokumente grundsätzlich barrierefrei veröffentlichen. Im Juni wurde der Gesetzentwurf zur Umsetzung dieser Richtlinie im deutschen Bundestag vom "Ausschuss für Arbeit und Soziales" (19/2728) angenommen. Es wird also ernst für "öffentliche Stellen" und damit auch für deren Dienstleister, die mit der Umsetzung beauftragt werden. Die Richtlinie gilt nämlich nicht nur für Bundes- und Landesbehörden, sondern auch für Verbände, die im Allgemeininteresse liegende Aufgaben erfüllen. Das wären somit auch Gerichte, Polizeistellen, Krankenhäuser, Universitäten, Bibliotheken und einige mehr. Weitere Informationen findest Du hier, hier und hier. Wenn also oben genannte Auftraggeber zu Deinen Kunden zählen, solltest Du Dich vorbereiten. Und da es neben Websites auch um alle downloadbaren Dateien geht sind eben auch PDFs zukünftig barrierefrei zu erstellen. Arbeitet man in InDesign, können dort einige Vorbereitungen getroffen werden. Klaas Posselt ist der ausgewiesene Spezialist im deutschsprachigen Raum für alle Fragen rund um das Thema. Deshalb freuen wir uns, dass er uns in einem Vortrag die Grundlagen dazu vermitteln wird. Wir setzen voraus, dass Du den Umgang mit InDesign gewohnt bist, die Gründe und Vorteile von der Nutzung von Formaten kennst und weißt, wie man lange Dokumente „richtig“ aufbaut. Der Vortrag setzt bewusst DANACH ein. Inhalt des Vortrages ist der Hintergrund von „Barrierefreiheit“ und Möglichkeiten und Grenzen innerhalb von InDesign. Es wird erklärt, welche Bedeutung das kostenpflichtige PlugIn MadeToTag hat und warum und für was man es braucht. Ziel ist es den Rahmen aufzuzeigen, in dem sich das Thema „Barrierefreiheit“ in InDesign abspielt. Du weißt hinterher, wo die „Baustellen“ sind, wo Du weitergehende Infos bekommst und welchen Weg Du einschlagen musst. Am nächsten Tag veranstalten wir zwei Bootcamps, die das Thema praktisch vertiefen. "IDUGS Bootcamp #2" und "IDUGS Bootcamp #3" Klaas Posselt ist studierter Dipl.-Ing. für Druck- und Medientechnik und kam über verschiedene Anfragen zum Thema barrierefreie PDF Dokumente. Seit über 10 Jahren arbeitet er in den Bereichen Medientechnik und Publishing zwischen Medienherstellern, Druckermaschinen und digitalen Ausgabekanälen. Er schult, begleitet und unterstützt Kunden bei der Einführung und Optimierung von Publikationsprozessen und auf dem Weg zu neuen digitalen Ausgabekanälen — egal ob E-Books, barrierefreie PDFs oder Webplattformen. Als Chairman des PDF/UA Competence Center der PDF Association beteiligt er sich an der Weiterentwicklung und Verbreitung des Standards PDF/UA für barrierefreie PDF Dokumente. Diese Veranstaltung kommt nur zu Stande durch die freundliche Unterstützung von "Six Offene Systeme GmbH" -- Enterprise-Content-Management-System und Media-Asset-Management-System.

Nein

Organisator: IDUG Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailchristoph.steffens AT gmail DOT com

https://idug47.eventbrite.de

Veranstaltungen
27.09.2018

Screen IT, Uster
Donnerstag, 27. Sept. 2018, 17.30 - 20.00 Uhr

Infoveranstaltung

Das Angebot an Publishing-Software ist gross. Deshalb empfiehlt sich eine externe Beratung durch unabhängige Software-Experten aus der jeweiligen Branche. Nicht immer muss es eine teure Mietlösung sein, die nach Beendigung der Mietdauer einem nicht einmal gehört. Es gibt sehr gute und auch in der Qualität ausreichende Alternativen, ja sogar kostenlose Freeware. Lassen Sie sich an diesem Abend einmal vor Augen führen, was diese Programme können und wie viel sie kosten.

Ja

Organisator: Screen IT und pre2media

Kontaktinformation: Peter Jäger, E-Mailinfo AT pre2media DOT ch

https://www.pre2media.ch/-1/de/infoanlass/

Hier Klicken