[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Skripte für InDesign Server

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

Skripte für InDesign Server

mb_new
Beiträge gesamt: 114

9. Feb 2016, 16:20
Beitrag # 1 von 9
Bewertung:
(3027 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammne!

Ist hier jemand vertreten, der sich mit dem Skripten von InDesign Server auskennt?

Falls ja, bitte melden, ich habe für einen Profi wahrscheinlich eine Kleinigkeit zu lösen.

Danke
Martin
X

Skripte für InDesign Server

WernerPerplies
Beiträge gesamt: 2711

9. Feb 2016, 16:36
Beitrag # 2 von 9
Beitrag ID: #546813
Bewertung:
(3015 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

Zitat Ist hier jemand vertreten, der sich mit dem Skripten von InDesign Server auskennt?

ein wenig! ;-)


als Antwort auf: [#546812]

Skripte für InDesign Server

mb_new
Beiträge gesamt: 114

9. Feb 2016, 17:25
Beitrag # 3 von 9
Beitrag ID: #546818
Bewertung:
(2980 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,
danke für deine Antwort.

Kurz zur Erklärung: in unserem Arbeitsablauf werden die Dokumente mit K4/vjoon verwaltet.

Nun gibt es eine Funktion, die in Zusammenarbeit mit einem Seitenspiegeltool die Pagina richtig stellt.
Das tut es auch.
Einziges Problem: da Indesign Server windowsbasierend ist, weden die Pfade der Verknüpfungen verändert: es wird C:// vor den Pfad geschrieben, was dann in weiterer Folge in allen Indesign Anwendungen dazu führt, dass die Verknüpfung nicht mehr stimmt. (Auch bei der automatischne PDF Erstellung)

Nun habe ich ein Skript gebastelt, das die Verknüpfung wieder repariert:

Code
changeLinks();  

//Ändert den Pfad der Verknüpfungen
function changeLinks() {
var myDoc = app.documents.item(0);
var myImages = myDoc.allGraphics;
for (i = myImages.length-1; i >= 0 ; i--) {
var myImage = myImages[i].itemLink;
// Eingabe was ersetzt werden soll
var myNewName = myImage.filePath.replace("C/:", "");
// Änderung der Links, funktioniert nur, wenn der Pfad vorhanden ist
var myNewLink = new File (myNewName);
if (myNewLink.exists) {
myImage.relink (myNewLink);
myImage.update();
}
}
}


Das funktioniert im Indesign.

Nur ich muss das in ein Serverscript einbauen, welches so aussieht:
Code
function runScript(layoutDocument) {  
layoutDocument.k4GetServerData().k4SaveVersion();
return;
}


Irgendeine Idee wie ich das anstelle?

Mein Gedankengang war, dass am Indesignserver die Verknüpfung wieder geändert wird, danach sollte es ja sonst auch überall wieder funktionieren.

Zweite Idee war, Indesign Server die Verknüpfungen ignorieren zu lassen, doch das hab ich noch nicht weiterverfolgt.

Danke
Martin


als Antwort auf: [#546813]

Skripte für InDesign Server

WernerPerplies
Beiträge gesamt: 2711

9. Feb 2016, 18:39
Beitrag # 4 von 9
Beitrag ID: #546824
Bewertung:
(2946 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

sorry, aber da muss ich passen, die eigentliche Logik steckt in dieser Methode:
Code
layoutDocument.k4GetServerData().k4SaveVersion(); 


"layoutDocument" scheint ein Object von K4 zu sein, und ohne Doku und/oder Sourcen geht da allenfalls eventuell per Debugging, aber das ist eher unwahrscheinlich..

Die Serverprogrammierung unterscheidet sich von der Desktop-Programmierung eher marginal.

Unterschiedlich sind der Aufruf der Skripte und es fehlen eine Reihe von Properties, die die Interaktion mit dem User betreffen.

Aber warum wendest Du Dich nicht an den Hersteller? - K4?

Für mich sieht das so aus, dass in dem Modul der falsche Pfadtyp verwendet wird.

Wer und wie ruft eigentlich die Funktion "runScript" auf?


als Antwort auf: [#546818]

Skripte für InDesign Server

Marc Sidon
Beiträge gesamt: 262

11. Feb 2016, 11:37
Beitrag # 5 von 9
Beitrag ID: #546913
Bewertung:
(2770 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin

Entweder das "layoutDocument" oder der parent von k4GetServerData() könnte bereits das Dokument sein.
Die Funktion k4SaveVersion() sollte (so wie ich das verstanden habe) nur für das letztendliche Speichern des Dokumentes zuständig sein.

Also Versuch mal:

Code
function runScript(layoutDocument) {   
changeLinks(layoutDocument);
layoutDocument.k4GetServerData().k4SaveVersion();
return;
}


oder

Code
function runScript(layoutDocument) {   
changeLinks(layoutDocument.k4GetServerData().parent);
layoutDocument.k4GetServerData().k4SaveVersion();
return;
}


wobei Du dann natürlich das Dokument als Eingangsparameter in Deiner Funktion verwenden musst:

Code
function changeLinks(document) {  
// Noch eine Prüfung, damit die Funktion nur ausgeführt wird,
// wenn der Eingangsparameter auch wirklich das Dokument ist...
if (document.constructor.name != "Document")
return;

var myDoc = document;
/* ... */
}


Meine Vermutung basiert hierauf:
http://theatlantic.github.io/...method-k4SaveVersion

Gruß,
Marc


als Antwort auf: [#546818]
(Dieser Beitrag wurde von Marc Sidon am 11. Feb 2016, 11:44 geändert)

Skripte für InDesign Server

mb_new
Beiträge gesamt: 114

16. Feb 2016, 14:48
Beitrag # 6 von 9
Beitrag ID: #547079
Bewertung:
(2596 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

danke für deinen Input.
Ich werde das in beiden Varianten testen.

Zur Sicherheit: Du meinst komplett sieht das Skript so aus:

Code
function changeLinks(document) {   
// Noch eine Prüfung, damit die Funktion nur ausgeführt wird,
// wenn der Eingangsparameter auch wirklich das Dokument ist...
if (document.constructor.name != "Document")
return;

var myDoc = document;
var myImages = myDoc.allGraphics;
for (i = myImages.length-1; i >= 0 ; i--) {
var myImage = myImages[i].itemLink;
// Eingabe was ersetzt werden soll
var myNewName = myImage.filePath.replace("C/:", "");
// Änderung der Links, funktioniert nur, wenn der Pfad vorhanden ist
var myNewLink = new File (myNewName);
if (myNewLink.exists) {
myImage.relink (myNewLink);
myImage.update();
}
}
}

function runScript(layoutDocument) {
changeLinks(layoutDocument);
layoutDocument.k4GetServerData().k4SaveVersion();
return;
}



Danke
Martin


als Antwort auf: [#546913]

Skripte für InDesign Server

mb_new
Beiträge gesamt: 114

16. Feb 2016, 17:04
Beitrag # 7 von 9
Beitrag ID: #547092
Bewertung:
(2570 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

ich habs getestet. Funktioniert leider nicht.

Das Dokument wird wie gehabt aktiviert und wieder gesichert, doch die Funktion zum Ändern des Pfades greift leider nicht.

Vielleicht siehst du ja im Skript noch Verbesserungsmöglichkeiten.

lg
Martin


als Antwort auf: [#547079]

Skripte für InDesign Server

NorbertK
Beiträge gesamt: 2

22. Feb 2016, 14:35
Beitrag # 8 von 9
Beitrag ID: #547287
Bewertung:
(2301 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
also ich habe keine Ahnung ob es in Verbindung mit K4 eine Besonderheit gibt, aber normalerweise musst du auf einem InDesign Server immer
myDoc = app.documents.firstItem();
verwenden.

probier es aus.
Viel Erfolg


als Antwort auf: [#547092]

Skripte für InDesign Server

mb_new
Beiträge gesamt: 114

23. Feb 2016, 11:20
Beitrag # 9 von 9
Beitrag ID: #547319
Bewertung:
(2199 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Norbert,

danke für den Tipp. Werde ich versuchen.

Die Frage ist nur:

Ist der Beginn der function dann mit einer leeren Klammer?

Code
function changeLinks() {  

var myDoc = document;

.....


Schöne Grüße
Martin


als Antwort auf: [#547287]
X