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

4. Feb 2012, 20:20
Beitrag # 1 von 19
Bewertung:
(9172 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: 509

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

4. Feb 2012, 23:25
Beitrag # 3 von 19
Beitrag ID: #489138
Bewertung:
(9129 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: 238

4. Feb 2012, 23:59
Beitrag # 4 von 19
Beitrag ID: #489139
Bewertung:
(9117 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: 12812

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

5. Feb 2012, 11:39
Beitrag # 6 von 19
Beitrag ID: #489143
Bewertung:
(9062 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: 12812

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

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

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

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

5. Feb 2012, 14:07
Beitrag # 11 von 19
Beitrag ID: #489150
Bewertung:
(8981 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: 509

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

5. Feb 2012, 18:34
Beitrag # 13 von 19
Beitrag ID: #489159
Bewertung:
(8914 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: 509

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

5. Feb 2012, 20:06
Beitrag # 15 von 19
Beitrag ID: #489161
Bewertung:
(8873 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
16.07.2024

Online
Dienstag, 16. Juli 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 16.07.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 30.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen Anlage von Beschnittzugaben Automatische Erzeugung der Schnittkontur Erstellung von Strichcodes, Textmarkierungen und Registrierungen ... IWS LFP Edition: 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? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix2Switch ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

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

So optimieren Sie Ihren LFP-Workflow
Veranstaltungen
30.07.2024

Online
Dienstag, 30. Juli 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 16.07.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 30.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen Anlage von Beschnittzugaben Automatische Erzeugung der Schnittkontur Erstellung von Strichcodes, Textmarkierungen und Registrierungen ... IWS LFP Edition: 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? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix2Switch ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

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

So optimieren Sie Ihren LFP-Workflow