[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Destination von Hyperlink im Text

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

Destination von Hyperlink im Text

J.Puff
Beiträge gesamt: 234

4. Feb 2012, 20:20
Beitrag # 1 von 19
Bewertung:
(8552 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Abend,
ich verstehe das Handling der Hyperlinks nicht.
Im Dokument wurden einzelne Worte ausgewählt und in der Palette Hyperlinks eine URL eingegeben. Ergebnis: der Text ist mit einer URL verknüpft.

Diese URL versuche ich nun per Script zu lesen, wenn ich mit dem Script den Text (aus anderen Gründen) sowieso gerade lese:
Code
var _line = app.activeDocument.pages[n].textFrames.lines[n]; // n ist Zähler durch sämtl. Seiten / Zeilen 
var _arrHyperlinks = _line.findHyperlinks(); // Hyperlinks in der aktuellen Zeile finden
var _hyper = app.activeDocument.hyperlinks.itemByID(_arrHyperlinks[n].id); //Hyperlinks des Dokumentes lesen
// so: und wie bekomme ich jetzt die URL aus dem Link der Zeile?


Ein Versuch mit
Code
var _hyper = app.activeDocument.hyperlinkURLDestinations.itemByID(_arrHyperlinks[0].id); 
var _url = _hyper.destinationURL;

bringt leider nur ein undefinied!

Eine Hilfe wäre in diesem Hyperlink-Dschungel toll!

Beste Grüße
J.
X

Destination von Hyperlink im Text

drerol74
Beiträge gesamt: 498

4. Feb 2012, 22:20
Beitrag # 2 von 19
Beitrag ID: #489137
Bewertung:
(8527 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo J.,

Code
app.activeDocument.hyperlinks[0].destination.destinationURL 

liefert als Ergebnis einen STring mit der URL (aber nur wenn als Ziel eine URL eingetragen ist)

Code
app.activeDocument.hyperlinks[0].destination.name 

liefert immer ein Ergebnis (dh z.B. auch für eine Seite als Ziel)

Schöne Grüße
Roland


als Antwort auf: [#489133]

Destination von Hyperlink im Text

J.Puff
Beiträge gesamt: 234

4. Feb 2012, 23:25
Beitrag # 3 von 19
Beitrag ID: #489138
Bewertung:
(8509 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roland,
danke für die Hilfe, so klappt das!
Aber schon taucht ein anderes Problem auf.
ich war davon ausgegangen, dass ich mit
Code
_arrHyperlinks[j].index 

die Position des markierten Texte in der Zeile bekomme. Leider kommt aber nur hartnäckig eine 0 zurück.
Dazu noch eine Idee?

Beste Grüße nach Wien!
J.


als Antwort auf: [#489137]

Destination von Hyperlink im Text

J.Puff
Beiträge gesamt: 234

4. Feb 2012, 23:59
Beitrag # 4 von 19
Beitrag ID: #489139
Bewertung:
(8497 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Und leider noch eine weitere Problematik:
wie finde ich heraus, welcher Art die destination ist: HyperlinkExternalPageDestination?
HyperlinkPageDestination?
HyperlinkTextDestination?
HyperlinkURLDestination?
ParagraphDestination?

Danke!


als Antwort auf: [#489137]

Destination von Hyperlink im Text

Martin Fischer
  
Beiträge gesamt: 12664

5. Feb 2012, 11:10
Beitrag # 5 von 19
Beitrag ID: #489142
Bewertung:
(8456 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo J.,

hast Du mal einen Blick auf die Eigenschaften eines Hyperlinks geworfen?

Schau Dir mal die source etwas genauer an.


als Antwort auf: [#489138]

Destination von Hyperlink im Text

J.Puff
Beiträge gesamt: 234

5. Feb 2012, 11:39
Beitrag # 6 von 19
Beitrag ID: #489143
Bewertung:
(8442 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Martin,
ja hatte ich und ehrlich gesagt habe ich sie den ganzen Abend - leider erfolglos - studiert.

Position des markierten Textes:
Ich hatte die Hoffnung, dass ich mit index von HyperlinkTextSource die Start-Position des für einen Hyperlinks markierten Textes bekomme. Das erweist sich leider als falsch: ich bekomme eine 0 und der markierte Text steht nicht am Anfang der Zeile.

destination:
app.activeDocument.hyperlinks[0].destination.destinationURL funktioniert für URLs. Klar, für Seitenverweise müsste es app.activeDocument.hyperlinks[0].destination.destinationPage heißen.
Aber muss ich nicht vor diesen Abfrage erst wissen, welcher Art der Hyperlink ist? Folge wäre sonst eine Fehlermeldung, wenn ich beispielsweise bei einem URL-Hyperlink InDesign nach destination.destinationPage frage.

Vielleicht stelle ich mich ja auch nur zu glatt an? Eine Hilfestellung wäre toll!
Beste Grüße
Johannes


als Antwort auf: [#489142]

Destination von Hyperlink im Text

Martin Fischer
  
Beiträge gesamt: 12664

5. Feb 2012, 12:07
Beitrag # 7 von 19
Beitrag ID: #489144
Bewertung:
(8419 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
HyperlinkTextSource hat eine Eigenschaft source.
Diese gibt ein Text-Objekt zurück.
Dessen Index ist die Position des ersten Einfügepunkts der Hyperlinktextquelle vom Anfang des Textabschnitts gerechnet.

Ermittle den Index des ersten Einfügepunkts der Zeile der Hyperlinktextquelle und zieh diesen vom Index der Hyperlinktextquelle ab und Du hast die Position der Quelle innerhalb der Zeile.


als Antwort auf: [#489143]
(Dieser Beitrag wurde von Martin Fischer am 5. Feb 2012, 12:08 geändert)

Destination von Hyperlink im Text

Martin Fischer
  
Beiträge gesamt: 12664

5. Feb 2012, 12:11
Beitrag # 8 von 19
Beitrag ID: #489145
Bewertung:
(8417 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zur destination:
Hab grad kein ESTK zur Verfügung.
Schau mal nach dem constructor bzw. dem constructor.name der destination.


als Antwort auf: [#489143]

Destination von Hyperlink im Text

drerol74
Beiträge gesamt: 498

5. Feb 2012, 12:13
Beitrag # 9 von 19
Beitrag ID: #489146
Bewertung:
(8414 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Morgen J.,

Code
// Erste Position 
var _sourceTextOfLink = app.activeDocument.hyperlinks[0].source.sourceText;
var _firstInsertionPoint = _sourceTextOfLink.insertionPoints[0];

// Sprung zur Quelle
app.activeDocument.hyperlinks[0].source.showSource();


Zu deiner zweiten Frage fällt mir auf die Schnelle nur Folgendes ein:
Code
var _dest = app.activeDocument.hyperlinks[0].destination.toSpecifier() 
var _begin = _dest.indexOf("//");
var _end = _dest.lastIndexOf("[");
var _output = _dest.substring(_begin+2,_end);


Vielleicht kennt Martin oder jemand anders noch eine elegantere Methode,

Edit:
... dieses Mal war ich etwas zu langsam ;)

Schöne Grüße
Roland


als Antwort auf: [#489143]
(Dieser Beitrag wurde von drerol74 am 5. Feb 2012, 12:17 geändert)

Destination von Hyperlink im Text

Martin Fischer
  
Beiträge gesamt: 12664

5. Feb 2012, 12:19
Beitrag # 10 von 19
Beitrag ID: #489147
Bewertung:
(8405 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich klinke mich jetzt aus.
Bin unterwegs, Sonne suchen.


als Antwort auf: [#489146]

Destination von Hyperlink im Text

J.Puff
Beiträge gesamt: 234

5. Feb 2012, 14:07
Beitrag # 11 von 19
Beitrag ID: #489150
Bewertung:
(8361 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roland, hallo Martin,
vielen Dank für die Hinweise.
Die Position des Hyperlinks in der Zeile ist gefunden, allerdings stellen sich HL mit Seitenverweisen noch störrisch an, da der Name des Hyperlinks im Text nicht mit dem Namen des Dokument-Hyperlinks übereinzustimmen scheint.

Zur Illustration hänge ich ein Script und eine Datei (CS5.5, idml) an.
Wäre großartig, wenn ich da noch eine Erleuchtung bekommen könnte.
Vielen Dank!

J.


als Antwort auf: [#489146]
Anhang:
Hyperlinks.zip (50.6 KB)

Destination von Hyperlink im Text

drerol74
Beiträge gesamt: 498

5. Feb 2012, 18:11
Beitrag # 12 von 19
Beitrag ID: #489158
Bewertung:
(8303 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Den Mittelteil mit den Namen der Hyperlinks (im folgenden Skript geändert) brauchst du eigentlich gar nicht:

Code
#target InDesign 

main();

function main()
{
var _d = app.activeDocument;
for(var _numPages=0; _numPages<_d.pages.length; _numPages++)
{
var _p = _d.pages[_numPages];
var _tfs = _p.textFrames;

for(var _numTfs=0; _numTfs<_tfs.length; _numTfs++)
{
var _tf = _tfs[_numTfs];

for(var n=0; n<_tf.lines.length; n++)
{
var _lineNr = n+1;
var _line = _tf.lines[n];
var _arrHyperlinks = _line.findHyperlinks();

for(var j=0; j<_arrHyperlinks.length; j++)
{
var _HLInsertionPoint = _arrHyperlinks[j].sourceText.insertionPoints[0];
var _HLLine = _HLInsertionPoint.lines.item(0);
var _HLIndex = _HLInsertionPoint.index - _HLLine.index;
var _lastHLInsertionPoint;

if (_HLInsertionPoint!=_lastHLInsertionPoint)
alert("Link \"" + _arrHyperlinks[j].sourceText.contents + "\" in Zeile " + _lineNr + " nach Zeichen " +_HLIndex);
}

_lastHLInsertionPoint = _HLInsertionPoint;
}
}
}
}



Einfacher wärs natürlich, wenn du nur die Hyperlinks abarbeitest.
Code
#target InDesign 

var _doc = app.activeDocument;

for (i=0; i < _doc.hyperlinks.length; i++) {

var _HLFirstInsertionPoint = _doc.hyperlinks[i].source.sourceText.insertionPoints[0];
var _HLLine = _HLFirstInsertionPoint.lines.item(0);
var _HLIndex = _HLFirstInsertionPoint.index - _HLLine.index;

alert("Link \"" + _doc.hyperlinks[i].source.sourceText.contents + "\" in Zeile nach Zeichen: " +_HLIndex);
}


Aber du willst wahrscheinlich auch die Zeilennummern haben!?

Schöne Grüße
Roland


als Antwort auf: [#489150]

Destination von Hyperlink im Text

J.Puff
Beiträge gesamt: 234

5. Feb 2012, 18:34
Beitrag # 13 von 19
Beitrag ID: #489159
Bewertung:
(8294 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
N’Abend Roland,
danke für Deine Antwort.
Eine Schleife durch die Dokument-HLs lässt das Script anforderungsbedingt leider nicht zu, ich muss von der jeweiligen Zeile ausgehen.

Übersehe ich etwas in Deinem Script?
Die Frage welcher Art der HL ist - und damit auch wie ich die destination richtig abfrage - scheint mir noch offen.
Schönen Abend,
J.


als Antwort auf: [#489158]

Destination von Hyperlink im Text

drerol74
Beiträge gesamt: 498

5. Feb 2012, 19:11
Beitrag # 14 von 19
Beitrag ID: #489160
Bewertung:
(8275 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der Name wird nach 100 Zeichen abgeschnitten, deshalb funktioniert das nicht. Besser mit dem Index.

Versuche es mal damit:
Code
var _HLIndex = _arrHyperlinks[j].index; 
var _HL = app.activeDocument.hyperlinks.item(_HLIndex);
var _HLDestType = _HL.destination.constructor.name;



Schöen Grüße
Roland


als Antwort auf: [#489159]

Destination von Hyperlink im Text

J.Puff
Beiträge gesamt: 234

5. Feb 2012, 20:06
Beitrag # 15 von 19
Beitrag ID: #489161
Bewertung:
(8253 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roland,
danke für den Tipp, mit index und .item() klappt es jetzt!
Einen schönen Abend noch
Johannes


als Antwort auf: [#489160]
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
01.12.2022

Online
Donnerstag, 01. Dez. 2022, 10.00 - 10.45 Uhr

Webinar

Die drei ColorLogic-Programme ZePrA, CoPrA und ColorAnt sind in neuen Versionen mit vielen neuen Funktionen im Jahr 2022 veröffentlich worden oder werden in Kürze veröffentlicht (ColorAnt 9). In unserem ca. 45 minütigen kostenlosen Webinar zeigen wir Ihnen einige dieser neuen Funktionen mit dem Schwerpunkt auf Automatisierung und Produktivitätssteigerungen.

Ja

Organisator: Impressed GmbH

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

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

ColorLogic Update-Webinar ZePrA 10, CoPrA 9 und ColorAnt 9
Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/