[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:
(11539 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: 2760

13. Jun 2011, 17:38
Beitrag # 2 von 17
Beitrag ID: #473537
Bewertung:
(11521 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.


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:
(11458 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();
}



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:
(11415 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: 2760

14. Jun 2011, 15:07
Beitrag # 5 von 17
Beitrag ID: #473597
Bewertung:
(11401 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.


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:
(11398 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:
(11361 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:
(11322 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");



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:
(9444 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: 5316

22. Okt 2013, 13:54
Beitrag # 10 von 17
Beitrag ID: #518778
Bewertung:
(9426 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


als Antwort auf: [#518775]

XML Import mit Hyperlinks

Uwe Laubender
Beiträge gesamt: 5316

22. Okt 2013, 13:55
Beitrag # 11 von 17
Beitrag ID: #518779
Bewertung:
(9425 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


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:
(9419 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:
(9402 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:
(9315 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 



als Antwort auf: [#518781]

XML Import mit Hyperlinks

WernerPerplies
Beiträge gesamt: 2760

23. Okt 2013, 06:23
Beitrag # 15 von 17
Beitrag ID: #518819
Bewertung:
(9288 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?


als Antwort auf: [#518816]

XML Import mit Hyperlinks

WernerPerplies
Beiträge gesamt: 2760

23. Okt 2013, 08:08
Beitrag # 16 von 17
Beitrag ID: #518823
Bewertung:
(683 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Entschuldigung , sollte natürlich heißen:
Code
app.scriptPreferences.version >= 6 



als Antwort auf: [#518819]

XML Import mit Hyperlinks

Christian1981
Beiträge gesamt: 16

23. Okt 2013, 08:23
Beitrag # 17 von 17
Beitrag ID: #518825
Bewertung:
(679 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Matthias,

ich habe es so, wie beschrieben, eingefügt und geändert, aber es startet nichts wenn ich auf Script ausführen klicke. So wie vorher. Ich weiß auch nicht mehr was ich falsch mache! Kann mir jemand die scripte noch einmal zukommen lassen? Vielleicht habe ich Sie kaputt gemacht.

Danke


als Antwort auf: [#518816]
X