ich habe eine alte Anwendung in VB6 welche automatisiert Katalogseiten generiert. Meine Anwendung arbeitet mit der InDesign Type Library (Visual Basic.tlb).
Um die Katalogseiten zu generieren brauche ich auf jedem Arbeitsplatz InDesign. Deshalb möchte ich auf InDesign Server umsteigen.
Jetzt zu meiner Frage: Funktioniert mein Code weiterhin mit InDesign Server?
Also zum Beispiel: Set myInDesign = CreateObject("InDesign.Application.CS3") Set myFont = myInDesign.Fonts.Item("Arial") Set myDocument = myInDesign.ActiveDocument Set myPage = myDocument.Pages.Item(1)
Sorry, für die vielleicht blöde Frage. Aber ich will halt sicher gehen, dass es funktioniert.
Muss ich sonst noch etwas beachten? Danke für Eure Hilfe.
Herzliche Grüße
Harald
Umstieg von Indesign Workstation auf InDesign Server
Hallo, Harald! Viel kann ich nicht zu InDesign Server sagen. Aber vielleicht das hier: Alle Scriptaufrufe, die mit dem UI zu tun haben, werden nicht funktionieren, da Server kein "normales" UI besitzt. Bei VB6 bin ich mir nicht sicher, da ich mit ExtendScript arbeite (und das noch ohne Server).
Also z.B. in ExtendScript: "app.pasteInto()"… wird wahrscheinlich nicht funktionieren.
Und: keine Ahnung, ob die Server-Variante von InDesign CS3 noch überhaupt bei Adobe erhältlich ist… ***** Mit herzlichem Gruß, Uwe Laubender
Umstieg von Indesign Workstation auf InDesign Server
Vielleicht könntest Du die Logik Deiner Anwendung so ändern, dass die Arbeitsplatzinstallation nicht nötig ist?
Ich habe noch nicht wirklich viel Erfahrung mit dem Indesign Server, aber ich bin dennoch sicher, dass Dein Code nicht ohne größere Anpassungen funktionieren wird.
Du must dem Server mit einem bestimmten Protokoll oder einer strukturierten Datei einen Auftrag schicken, Dein Serverskript arbeitet dann die Aufgabe ab und schickt das Ergebnis zurück.
Ist eigentlich ganz einfach, aber ob es die lokale Installation von InDesign überflüssig macht, wage ich zu bezweifeln.
Generell würde sich solch eine Arbeitsweise auch mit jeder InDesign-Workstion-Version realisieren lassen, aber solche Lösungen verbieten die Adobe Lizenzbestimmungen.
Ein weiterer Unterschied zwischen Workstation-Version und Server besteht wohl darin, dass der Server in mehreren Instanzen auf einem System laufen kann. Ich weiß allerdings nicht, ob das die Lizenzbestiummungen erlauben.
Meine Empfehlung: Lade die Testversion herunter, schaue die Beispiele und die Dokus an, und erstelle einige Testskripts.
Mein Bauchgefühl sagt mir, dass Dir die Serverversion vermutlich keine Vorteile bringt.
Ach ja, Uwe schrieb ja schon, das keine GUI-Ausgaben möglich sind, also auch keine Alerts.
Dies bedingt eine sorgfältige Fehlerbehandlung, Protokollierung und Ergebnisrückgabe, auftretende Fehler müssen auf dem Client zusätzlich berücksichtigt werden und ggf. , wenn möglich, durch Wiederholungsaufträge korrigiert werden.
ich habe mir die Doku angesehen. Es gibt mehrere Möglichkeiten für die Integration von InDesign Server: SOAP, Java, COM.
InDesign Server veröffentlicht also eine COM-Typenbibliothek, mit der COM-Komponenten mit Schnittstelle zu InDesign Server entwickelt werden können.
Set myApp = CreateObject("InDesignServer.Application") REM Um einen Verweis auf eine bestimmte Instanz von InDesign Server zu erstellen Set myApp = GetObject("configuration_12345")
Es sollte theoretisch also mit COM funktionieren. Hat das schon jemand gemacht?
Herzliche Grüße
Harald
Umstieg von Indesign Workstation auf InDesign Server
zu COM kann ich dir nicht weiter helfen, aber zumindest für SOAP gibt es im SDK für InDesign-Server bereits eine fertige kleine Beispielanwendung (sampleclient.exe), die nichts anderes macht, als ein Skript auszuführen. (Die SOAP-Anbindung kann auch außer "runScript" nicht viel mehr...)
Damit müsstest Du schon hinkommen, indem das Skript dann über Parameter die zu verarbeitenden Datei-Pfade etc. übegeben bekommt, oder es läuft sowieso auf ein festes Verzeichnis los.
Viele Grüße Jo
Umstieg von Indesign Workstation auf InDesign Server
kenne mich mit der VB-Skriptvariante jetzt nicht so aus, aber das:
wird wahrscheinlich nicht funktionieren. Zumindest bei der JavaScript/ExtendScript-Variante gibt es im InDesign Server kein "active document". Ich benutze daher immer "app.documents.item(0)". Das schien bisher immer das Gegenstück zu "app.activeDocument" zu sein (funktioniert auch in InDesign "Desktop").
Gruß, René
-- René Treuber axaio software GmbH https://www.axaio.com
Umstieg von Indesign Workstation auf InDesign Server
InDesign Server besitzt eine Visual Basic.tlb, welche ich in mein Projekt einbinde. Dann sollte es (hoffentlich) funktionieren.
Ja, über SOAP kann ich JavaScript und VBScript ausführen. Aber das möchte ich gerade nicht. Da ich eine VB6 COM Anwendung habe und eine Datenbank, wollte ich diese auch weiter verwenden.
Danke für den Tipp. Ich hoffe das Objektmodell ist beim InDesign Server gleich. Ich arbeite viel mit Mustervorlagen, generierten Tabellen und GREP Ausdrücken.
Hat jemand da Erfahrung?
Umstieg von Indesign Workstation auf InDesign Server
Das weiß ich doch. Und Du kannst ganz sicher über diese Schnittstelle mit einer VLB-Anwendung, die auf dem Server läuft, mit dem InDesign-Server kommunizieren.
Wovon ich die ganze Zeit schreibe, betrifft die Kommunikation zwischen Workstation und Server.
Lass mich bitte an Deinem Ergebnis teilhaben.
Im SDK gibt es übrigens, ich glaube, ich wiederhole mich, Beispiele, auch für VB.
Soweit vorhanden, sind die Befehle zwischen InDesign Server und InDesign Desktop *fast* gleich.
Neben dem offensichtlichen ScriptUI fehlt das Konzept der Selektion (app.selection sowie alles was mit .active beginnt), auch die UI-bezogenen Parameter von open/save usw, sowie von ScriptPreferences. Ansonsten gibt es beim CS4 Server noch eine Abweichung bei irgend einem Text-Property (ich glaube das war GridAlignment).
documents[0] funktioniert als Ersatz für activeDocument, wenn der Server einfache Jobs abarbeitet. Wenn man für quasi interaktives Arbeiten mehrere Dokumente vorhalten will, muss man schon selber verwalten.
Weitere absichtliche Unterschiede: Undo kennt der Server nicht, für platzierte Bilder werden unter Umständen bzw. bestimmten Einstellungen keine Voransichten eingefügt (die sind dann beim Öffnen über den Desktop grau). Ausserdem gibt es ein paar mehr Performance-Metriken.
Zu den Problemchen:
Zumindest beim Mac muss man aufpassen, wenn sich mehrere Instanzen um die gleiche .indt Vorlage-Datei prügeln (besser eine private Kopie verwenden), oder ähnliche eigentlich readonly gedachte Dateien (Konfiguration usw.) speziell auf Shares. Ausserdem sollte man auf $.writeln() besser verzichten, der Aufruf wird mit langen Wartezeiten bestraft.
Im Vergleich zur Desktop Version verwende ich an ein paar Stellen mehr die Funktion recompose(), zum Beispiel sind die geometricBounds von verankerten Objekten nicht immer sofort verfügbar.
CS3 - war das unter Windows schon 64 Bit? Sonst sollte man über 'ne etwas höhere Versionsnummer nachdenken/probieren. Ist ja schon ziemlich lange aus jeglicher Wartung raus. Ab CS5 soll es auch Ansätze für einen Loadbalancer geben, den hab' ich aber noch nicht probiert, das macht sowieso besser der Application Server. Ich halte es für gewagt, wenn Clients den/die InDesign Server direkt unter Feuer nehmen, woher sollen die denn wissen, welche Instanz gerade mit einem Langläufer belegt ist?
Zum COM oder gar DCOM Zugriff kann ich nichts beitragen, da ich fast nur mit dem Mac arbeite. Dass man da noch über GetObject zwischen den Instanzen wählen kann klingt aber gut. Die Konfigurations-Nummer bestimmt ja sonst den Port für die SOAP Aufrufe sowie die Verbindung aus dem ESTK Debugger (auch manchmal etwas zickig).