[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:
(9157 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: 507

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

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

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

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

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

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

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

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

Web / SEO / Blockchain / Betriebssystem
300

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
17.04.2024

Online
Mittwoch, 17. Apr. 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

Ja

Organisator: Impressed / Günther Business Solutions

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

Und es geht doch: Automatisierung im Großformatdruck!