[GastForen Programme Print/Bildbearbeitung Adobe InDesign XML Import mit Hyperlinks

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

XML Import mit Hyperlinks

Brummkopp
Beiträge gesamt: 4

13. Jun 2011, 16:24
Beitrag # 1 von 17
Bewertung:
(10748 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich möchte eine XML-Datei in InDesign CS4 importieren. Diese XML-Datei möchte ich mit Hyperlinks versehen, welche in InDesign als Hyperlink erscheinen sollen, d.h. in der erstellten PDF-Datei sollen die Hyperlinks aktiv sein.

Wie sollte ich die Links in XML einbinden?
<benutzer><link href="http://www.homepage.de">Benutzername</link></benutzer>

oder

<benutzer>
<benutzer_link>http://www.homepage.de</benutzer_link>
<benutzer_name>Benutzername</benutzer_name>
</benutzer>

oder noch anders?

Und das muß ich ja dann irgendwie per XSL formatieren, oder? Wie kann ich das so umwandeln, dass damit ein Hyperlink mit einem unsichtbaren Rechteck angelegt wird?

Ich habe niemanden, den ich fragen kann, habe etwas Erfahrung mit XML, keine Erfahrung mit XSL, und hänge seit 8 Tagen da fest, dass ich die Hyperlinks nicht reinbekomme.

Ich habe etliche Foren auf deutsch und englisch durchsucht und bin noch immer nicht schlauer. Ganz im Gegenteil möchte ich fast sagen...

Ich bin für JEDE Hilfe dankbar. Auch für Schubse in die richtige Richtung! :-)

Liebe Grüße,
Brummkopp
X

XML Import mit Hyperlinks

WernerPerplies
Beiträge gesamt: 2689

13. Jun 2011, 17:38
Beitrag # 2 von 17
Beitrag ID: #473537
Bewertung:
(10730 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Brummkopp,

Du wirst sicherlich hier noch einige Tipps bekommen.

Unter Windows würde ich das so machen:

1. Einen gewünschten Hyperlink in InDesign erzeugen, dann die Datei in das IDML-Format exportieren.
2. den Link in der IDML-Datei suchen und als Baustein abspeichern.
3. Die gewünschten Hyperlinks als Text mit einer eindeutigen Kennung, z. B. [Hl::[Name:Text]::[Ziel:http://weepee.de]::], versehen und importieren.
4. Die fertige InDesign-Datei im IDML-Format exportieren, und in dieser Datei (Story-Dateien) die gekennzeichneten Links mit Suchen und Ersetzen in den Baustein einsetzen und dann wiederum durch Suchen und Ersetzen die gekennzeichneten Links mit dem fertigen Baustein ersetzen.

Das alles mache ich mit meinem Programm SearARep.

Wenn die Konvertiertabellen einmal erstellt sind, kann man die gleiche Aufgabe immer wieder weitgehend automatisch erledigen.


Eine ähnliche Aufgabe habe ich hier beschrieben.
http://www.weepee.de/...ic.php?f=7&t=151

Gerade ausprobiert und festgestellt, dass die Hyperlinks nicht nur in die Story-Dateien eingesetzt werden müssen, sondern auch noch modifiziert in die designmap.xml.

Also etwas anspruchsvoller als im Beispiel.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#473532]
(Dieser Beitrag wurde von WernerPerplies am 13. Jun 2011, 17:55 geändert)

XML Import mit Hyperlinks

zaphodbeeblebroxx
Beiträge gesamt: 408

13. Jun 2011, 23:25
Beitrag # 3 von 17
Beitrag ID: #473545
Bewertung:
(10667 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Hallo Brummkopp,

ich würde das per XML-Rule machen. Hier eine Quick+Dirty Variante, die aus Deinem ersten XML-Beispiel Hyperlinks erstellt.
Beim PDF-Export muss unter "Allgemein --> Einschließen" die Option "Hyperlinks" aktiviert sein.

Hier das Script, das aus Deinem XML-Beispiel die Hyperlinks erstellt.
Code
//xml2hyper.jsx 
//An InDesign CS4 JavaScript
#include "glue code.jsx"

var _doc = app.activeDocument;
var _root = _doc.xmlElements.item(0);
var _ruleSet = new Array (new xml2hyper);

__processRuleSet(_root, _ruleSet);

//XML rule
function xml2hyper(){
this.name = "xml2hyper";
this.xpath = "//link";
this.apply = function(_node, myRuleProcessor){
with(_node){
var _attr = _node.xmlAttributes.itemByName("href");
if (_attr.isValid){
var _url = _attr.value;
try{
var _textSource = app.activeDocument.hyperlinkTextSources.add(_node.texts[0]);
var _dest = app.activeDocument.hyperlinkURLDestinations.add({destinationURL:_url});
var _newHyper = app.activeDocument.hyperlinks.add({source:_textSource, destination:_dest});
_newHyper.visible = false;
}
catch(e){}
}
__skipChildren(myRuleProcessor);
}
return true;
}
}



Die Datei "glue code.jsx" muss im selben Verzeichnis wie das Script "xml2hyper.jsx" gespeichert sein.
Code
//======================================================================================== 
//
// $File: //depot/indesign_5.0/gm/build/scripts/xml rules/glue code.jsx $
//
// Owner: Lin Xia
//
// $Author: sstudley $
//
// $DateTime: 2007/02/15 13:37:33 $
//
// $Revision: #1 $
//
// $Change: 505969 $
//
// Copyright 2006 Adobe Systems Incorporated. All rights reserved.
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
// with the terms of the Adobe license agreement accompanying it. If you have received
// this file from a source other than Adobe, then your use, modification, or
// distribution of it requires the prior written permission of Adobe.
//
// DESCRIPTION: JavaScript glue code for XML Rules Processing
//
//========================================================================================

app.scriptPreferences.version = 6 ;


function ruleProcessorObject(ruleSet, ruleProcessor) {
this.ruleSet = ruleSet;
this.ruleProcessor = ruleProcessor;
}


function __makeRuleProcessor(ruleSet, prefixMappingTable){
// Get the condition paths of all the rules.
var pathArray = new Array();
for (i=0; i<ruleSet.length; i++)
{
pathArray.push(ruleSet[i].xpath);
}

// the following call can throw an exception, in which case
// no rules are processed
try{
var ruleProcessor = app.xmlRuleProcessors.add(pathArray, prefixMappingTable);
}
catch(e){
throw e;
}
var rProcessor = new ruleProcessorObject(ruleSet, ruleProcessor);
return rProcessor;
}

function __deleteRuleProcessor(rProcessor) {
// remove the XMLRuleProcessor object
rProcessor.ruleProcessor.remove();

// delete the object properties
delete rProcessor.ruleProcessor;
delete rProcessor.ruleSet;

// delete the object itself
delete rProcessor;
}

function __processRuleSet (root, ruleSet, prefixMappingTable)
{
var mainRProcessor = __makeRuleProcessor(ruleSet, prefixMappingTable);

// if __processTree() fails with an exception,
// delete ruleProcessor and throw e
try {
__processTree(root, mainRProcessor);
__deleteRuleProcessor(mainRProcessor);
} catch (e) {
__deleteRuleProcessor(mainRProcessor);
throw e;
}
}

function __processTree (root, rProcessor)
{
var ruleProcessor = rProcessor.ruleProcessor;
try
{
var matchData = ruleProcessor.startProcessingRuleSet(root);
__processMatchData(matchData, rProcessor);

ruleProcessor.endProcessingRuleSet();
}
catch (e)
{
// no longer deleting ruleProcessor within __processTree
// deletion occurs either in __processRuleSet, or external
// to glue code.
ruleProcessor.endProcessingRuleSet();
throw e;
}
}

function __processChildren(rProcessor)
{
var ruleProcessor = rProcessor.ruleProcessor;
try
{
var matchData = ruleProcessor.startProcessingSubtree();
__processMatchData(matchData, rProcessor);
}
catch (e)
{
ruleProcessor.halt();
throw e;
}
}

function __processMatchData(matchData, rProcessor)
{
var ruleProcessor = rProcessor.ruleProcessor;
var ruleSet = rProcessor.ruleSet;
while (matchData != undefined)
{
var element = matchData.element;
var matchRules = matchData.matchRules;
var applyMatchedRules = true;

// apply the action of the rule.
// Continue applying rules as long as the apply function returns false.
for (var i=0; i<matchRules.length && applyMatchedRules && !ruleProcessor.halted; i++)
{
applyMatchedRules = (false == ruleSet[matchRules[i]].apply(element, rProcessor));
}
matchData = ruleProcessor.findNextMatch();
}
}

function __skipChildren(rProcessor)
{
rProcessor.ruleProcessor.skipChildren();
}



Matthias


als Antwort auf: [#473532]

XML Import mit Hyperlinks

Brummkopp
Beiträge gesamt: 4

14. Jun 2011, 14:23
Beitrag # 4 von 17
Beitrag ID: #473592
Bewertung:
(10624 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
@Matthias

:-) :-) :-)

Jaaaaaaaaaaa!

:-) :-) :-)

Das funktioniert wunderbar! Ein Traum, ein Traum, ein Traum! :-) Danke, danke, danke!!! :-)

@Werner
Dir auch vielen Dank für Deinen Ansatz. Das hab ich gestern alles ausprobiert, kam aber zu keinem Ergebnis. Trotzdem vielen lieben Dank! :-)


als Antwort auf: [#473545]

XML Import mit Hyperlinks

WernerPerplies
Beiträge gesamt: 2689

14. Jun 2011, 15:07
Beitrag # 5 von 17
Beitrag ID: #473597
Bewertung:
(10610 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat @Werner
Dir auch vielen Dank für Deinen Ansatz. Das hab ich gestern alles ausprobiert, kam aber zu keinem Ergebnis. Trotzdem vielen lieben Dank! :-)


Vielleicht hätte Dir eine Anfrage in meinem Forum geholfen? ;-)

Ganz soviel Code hätte ich vermutlich nicht gebraucht.

Aber wer nicht fragt, kann auch keine Antwort erhalten.

Aber Hauptsache, Dein Problem ist gelöst.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#473592]

XML Import mit Hyperlinks

Brummkopp
Beiträge gesamt: 4

14. Jun 2011, 15:17
Beitrag # 6 von 17
Beitrag ID: #473599
Bewertung:
(10607 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hatte bis heute noch nicht mit Skripten gearbeitet, aber ich liebe es schon jetzt. :-)

Kann ich in dem Zusammenhang
Code
_newHyper.visible = false; 

den Hyperlinks auch das Zeichenformat "Hypalinx" zuordnen? Also dass alle Links dann fettgedruckt und farbig werden?

Code
_newHyper.format = Hypalinx; 


So in der Art vielleicht? Oder bin ich da total auf dem Holzweg?

Sasch.
(Brummkopp ist nach dem Erfolg nämlich verschwunden! ;-))


als Antwort auf: [#473545]

XML Import mit Hyperlinks

Brummkopp
Beiträge gesamt: 4

14. Jun 2011, 17:27
Beitrag # 7 von 17
Beitrag ID: #473614
Bewertung:
(10570 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Manchmal sieht man den Baum vor lauter Wäldern nicht...

Code
<link aid:cstyle="Hypalinx" href="http://www.homepage.de">Benutzer</link> 


:-)


als Antwort auf: [#473599]

XML Import mit Hyperlinks

zaphodbeeblebroxx
Beiträge gesamt: 408

14. Jun 2011, 22:48
Beitrag # 8 von 17
Beitrag ID: #473632
Bewertung:
(10531 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sasch-Brummkopf,

wenn das ZF nicht über "aid" in den XML-Daten definiert ist geht es so:
Code
					 
var _textSource = app.activeDocument.hyperlinkTextSources.add(_node.texts[0]);
_textSource.appliedCharacterStyle = app.activeDocument.characterStyles.itemByName("Hypalinx");



Matthias


als Antwort auf: [#473614]

XML Import mit Hyperlinks

Christian1981
Beiträge gesamt: 16

22. Okt 2013, 13:14
Beitrag # 9 von 17
Beitrag ID: #518775
Bewertung:
(8653 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Matthias,

ich stehe nur genau vor dem selben problem, ich wollte deine Scripte einbauen und habe sie auch, aber in CS6 funktioniert das leider nicht. Was muss ich in den jsx Dateien umändern? Kannst du mir helfen?

Vielen Dank.

Indesign Version CS6 (8.0.1)

Lieben Gruß Christian


als Antwort auf: [#473545]

XML Import mit Hyperlinks

Uwe Laubender
Beiträge gesamt: 5226

22. Okt 2013, 13:54
Beitrag # 10 von 17
Beitrag ID: #518778
Bewertung:
(8635 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Christian!

"Funktioniert nicht" ist leider, leider keine hinreichende Beschreibung eines Problems.

Was genau funktioniert nicht?
Z.B.: "Tut nichts" oder "Tut etwas, aber falsch" => Was genau ist falsch?

Oder gibt's sogar eine Fehlermeldung?

PS: Es gibt einen neuen Patch für InDesign CS6: v8.0.2:

Download des Patches für Mac-Users:
http://www.adobe.com/...etail.jsp?ftpID=5664

Für Windows-User kann ich gerade den Link nicht finden :-(

Release-Notes:
http://helpx.adobe.com/...2-release-notes.html
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#518775]

XML Import mit Hyperlinks

Uwe Laubender
Beiträge gesamt: 5226

22. Okt 2013, 13:55
Beitrag # 11 von 17
Beitrag ID: #518779
Bewertung:
(8634 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nachtrag:

Da isser der Direktdownload des Patches v8.0.2 für Windows-User:

http://www.adobe.com/...etail.jsp?ftpID=5663
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#518778]

XML Import mit Hyperlinks

Christian1981
Beiträge gesamt: 16

22. Okt 2013, 14:00
Beitrag # 12 von 17
Beitrag ID: #518780
Bewertung:
(8628 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

es passiert leider gar nichts. Ich möchte das Script bei geöffnetem Domument ausführen aber es tut sich gar nichts.

Danke für das Patch! Werde ich einmal probieren.

Gruß Christian


als Antwort auf: [#518778]

XML Import mit Hyperlinks

Christian1981
Beiträge gesamt: 16

22. Okt 2013, 14:11
Beitrag # 13 von 17
Beitrag ID: #518781
Bewertung:
(8611 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Patch ist drauf,

daran lag es wohl nicht.

Also ich erkläre mein Vorhaben vielleicht noch einmal genauer.
ich habe einen Flyer, der mit einer XML aus unserem Datenbestand gefüllt wird. Bilder werden gezogen, Preise, Texte. Jetzt möchte ich gerne ein PDF davon für unsere Kunden bereitstellen und das Sie nicht unsere Artikelnummer in unseren Shop eingeben müssen, sondern nur noch in dem PDF auf den Artikel (Bild) klicken und direkt auf den Artikel in unseren Shop gelangen.
Ich möchte nicht jedesmal (monatlich) 100 Artikel mit kopierten Links befüllen. Also jedem Bildrahmen einen Hyperlink zuweisen.

Hast du vielleicht einen Lösungsansatz?

Gruß Christian


als Antwort auf: [#518778]

XML Import mit Hyperlinks

zaphodbeeblebroxx
Beiträge gesamt: 408

23. Okt 2013, 00:05
Beitrag # 14 von 17
Beitrag ID: #518816
Bewertung:
(8524 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christian,

glue code.jsx aus dem ID CS6 Script-Verzeichnis in das Verzeichnis kopieren, in dem xml2hyper.jsx gespeichert ist. Dann funktioniert das auch mit ID CS6.

glue code.jsx findest Du hier:
Code
[ID CS6 Programmverzeichnis]/Scripts/XML Rules/glue code.jsx 


oder diese Zeile in der alten glue code.jsx für ID CS6:
Code
app.scriptPreferences.version = 6 

ändern in:
Code
app.scriptPreferences.version = 8 



Matthias


als Antwort auf: [#518781]

XML Import mit Hyperlinks

WernerPerplies
Beiträge gesamt: 2689

23. Okt 2013, 06:23
Beitrag # 15 von 17
Beitrag ID: #518819
Bewertung:
(8497 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Matthias

wäre
Code
app.scriptPreferences.version > 6 

dann nicht besser?

Oder gibt es Probleme mit den Versionen dazwischen?

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#518816]
X

Aktuell

InDesign / Illustrator
ScreenShot 274 Warum Templates in InDesign benutzen_ - Satzkiste in Stuttgart - Satz und technische Umsetzung - Google Chrome (300x300 HilfDirSelbst)

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
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

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

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

Enfocus World Tour 2022
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

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

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

Enfocus World Tour 2022