hilfdirselbst.ch
Facebook Twitter gamper-media
« « 1 2 » »  
Brummkopp
Beiträge: 4
13. Jun 2011, 16:24
Beitrag #1 von 17
Bewertung:
(6659 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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
Top
 
X
WernerPerplies
Beiträge: 2177
13. Jun 2011, 17:38
Beitrag #2 von 17
Beitrag ID: #473537
Bewertung:
(6641 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#473532]
(Dieser Beitrag wurde von WernerPerplies am 13. Jun 2011, 17:55 geändert)
Top
 
zaphodbeeblebroxx p
Beiträge: 408
13. Jun 2011, 23:25
Beitrag #3 von 17
Beitrag ID: #473545
Bewertung:
(6578 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


 
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] Top
 
Brummkopp
Beiträge: 4
14. Jun 2011, 14:23
Beitrag #4 von 17
Beitrag ID: #473592
Bewertung:
(6535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


@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] Top
 
WernerPerplies
Beiträge: 2177
14. Jun 2011, 15:07
Beitrag #5 von 17
Beitrag ID: #473597
Bewertung:
(6521 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#473592] Top
 
Brummkopp
Beiträge: 4
14. Jun 2011, 15:17
Beitrag #6 von 17
Beitrag ID: #473599
Bewertung:
(6518 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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] Top
 
Brummkopp
Beiträge: 4
14. Jun 2011, 17:27
Beitrag #7 von 17
Beitrag ID: #473614
Bewertung:
(6481 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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] Top
 
zaphodbeeblebroxx p
Beiträge: 408
14. Jun 2011, 22:48
Beitrag #8 von 17
Beitrag ID: #473632
Bewertung:
(6442 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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] Top
 
Christian1981
Beiträge: 16
22. Okt 2013, 13:14
Beitrag #9 von 17
Beitrag ID: #518775
Bewertung:
(4564 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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] Top
 
Uwe Laubender S
Beiträge: 3991
22. Okt 2013, 13:54
Beitrag #10 von 17
Beitrag ID: #518778
Bewertung:
(4546 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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] Top
 
Uwe Laubender S
Beiträge: 3991
22. Okt 2013, 13:55
Beitrag #11 von 17
Beitrag ID: #518779
Bewertung:
(4545 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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] Top
 
Christian1981
Beiträge: 16
22. Okt 2013, 14:00
Beitrag #12 von 17
Beitrag ID: #518780
Bewertung:
(4539 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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] Top
 
Christian1981
Beiträge: 16
22. Okt 2013, 14:11
Beitrag #13 von 17
Beitrag ID: #518781
Bewertung:
(4522 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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] Top
 
zaphodbeeblebroxx p
Beiträge: 408
23. Okt 2013, 00:05
Beitrag #14 von 17
Beitrag ID: #518816
Bewertung:
(4435 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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] Top
 
WernerPerplies
Beiträge: 2177
23. Okt 2013, 06:23
Beitrag #15 von 17
Beitrag ID: #518819
Bewertung:
(4408 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

XML Import mit Hyperlinks


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
neu: WpsProjectHandler jetzt mit Vollwaschgang
Aktuelles
XING
als Antwort auf: [#518816] Top
 
« « 1 2 » »  
X