[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:
(8672 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: 501

4. Feb 2012, 22:20
Beitrag # 2 von 19
Beitrag ID: #489137
Bewertung:
(8647 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:
(8629 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:
(8617 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: 12685

5. Feb 2012, 11:10
Beitrag # 5 von 19
Beitrag ID: #489142
Bewertung:
(8576 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:
(8562 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: 12685

5. Feb 2012, 12:07
Beitrag # 7 von 19
Beitrag ID: #489144
Bewertung:
(8539 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: 12685

5. Feb 2012, 12:11
Beitrag # 8 von 19
Beitrag ID: #489145
Bewertung:
(8537 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: 501

5. Feb 2012, 12:13
Beitrag # 9 von 19
Beitrag ID: #489146
Bewertung:
(8534 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: 12685

5. Feb 2012, 12:19
Beitrag # 10 von 19
Beitrag ID: #489147
Bewertung:
(8525 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:
(8481 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: 501

5. Feb 2012, 18:11
Beitrag # 12 von 19
Beitrag ID: #489158
Bewertung:
(8423 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:
(8414 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: 501

5. Feb 2012, 19:11
Beitrag # 14 von 19
Beitrag ID: #489160
Bewertung:
(8395 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:
(8373 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

Aktuell

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.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

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

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/