Funktionen zur Unterstützung des Datenaustausches zwischen Whiteboard und InDesign® Server.
Ein allgemeines Beispiel zur Verwendung der Klasse server finden sie hier.
Funktionen zur Unterstützung des Datenaustausches zwischen Whiteboard und InDesign® Server. Die Funktionen dienen dazu, aktuelle Inhalte von InDesign® Dokumenten in XML-Strukturen für den Datenaustausch zu exportieren.
Die XML-Strukturen, die von den Funktionen geliefert werden, können mit den im Modul xmlquery definierten Methoden bearbeitet werden. Insbesondere kann xmlquery::serialize verwendet werden, um die Struktur in einen String zu konvertieren und xmlquery::write, um die Struktur in eine Ausgabedatei zu schreiben.
static XMLTree server::get_spreads(
ItemRef docRef,
int scope,
int parentID,
char* options = 0)
Export von Dokumentdaten in XML. Die Methoden erzeugen jeweils einen XMLTree der gefundenen und aufbereiteten Dokumentdaten. Auf den erhaltenen Baum können Sie mit den Methoden des Moduls xmlquery zugreifen. (z.B. xmlquery::write für den Export in eine Datei oder xmlquery::serialize zum Schreiben in einen String). Wenn sie die Daten nicht mehr benötigen, muss der Baum mit xmlquery::close wieder gelöscht werden.
Die Funktion get_spreads sammelt Informationen zu den Seiten und Spreads des Dokumentes.
Name | Typ | Default | Beschreibung |
Return | XMLTree | Ein neu erzeugter XML-Baum mit den exportierten Daten. | |
docRef | ItemRef | - | gültige Dokumentreferenz |
scope, parentID | int, int | - | Quellbereich im InDesign® Dokument kScopeDocument : parentID wird ignoriert kScopeSpread : parentID ist der 1-basierte Spreadindex kScopePage : parentID ist die 1-basierte Seite des Dokumentes kScopeCometGroup : parentID ist die Cometgruppen-ID (siehe frame::get_cometgroup) kScopeElement : parentID ist die UID des Rahmens. Sie können diese Zahl mit item::getint aus einem ItemRef holen. |
options | String oder char* | "" | Einstellungen zum Umfang und Format der exportierten Daten, siehe Server-Optionen |
Export der Platzhalter der Seite 2 des Dokumentes.
#include "internal/types.h"
int main () { XMLTree tree = server::get_placeholders (0, kScopePage, 2, "xmlindent:1;content:plain,tagged;");
if (tree) { xmlquery::write (tree, "$DESKTOP/placeholders.xml"); xmlquery::close (tree); } else showmessage ("Error while fetching data.");
return 0; }
static XMLTree server::get_cometgroups(
ItemRef docRef,
int scope,
int parentID,
char* options = 0)
Die Funktion sammelt Informationen zu einer gegebenen Cometgruppe im Dokument. Eine Beschreibung der Funktionsparameter finden Sie hier.
Unterstützung für Cometgruppen bieten auch die folgenden Funktionen :
\Ein Beispiel für das Setzen der Parameter und den Export des XMLTrees in eine Datei ...
... finden Sie hier.
static XMLTree server::get_elements(
ItemRef docRef,
int scope,
int parentID,
char* options = 0)
Die Funktion sammelt Informationen zu den Elementen im Dokument. Eine Beschreibung der Funktionsparameter finden Sie hier.
Ein Beispiel für das Setzen der Parameter und den Export des XMLTrees in eine Datei ...
... finden Sie hier.
static XMLTree server::get_placeholders(
ItemRef docRef,
int scope,
int parentID,
char* options = 0)
Die Funktion sammelt Informationen zu Platzhaltern im Dokument. Eine Beschreibung der Funktionsparameter finden Sie hier.
Ein Beispiel für das Setzen der Parameter und den Export des XMLTrees in eine Datei ...
... finden Sie hier.
Lade alle Templates eines PubServers herunter und schreibe alle dort verwendeten Platzhalter in ein Logfile.
#pragma plain #include "internal/types.h"
// ****************************************************************************
char stPHLog[] = "$DESKTOP/phLog.log"; char stDownloadPath[] = "$DESKTOP/TTT";
// ****************************************************************************
int check_placeholders (ItemRef docRef, int templateID) { XMLTree tree = 0; char path [512]; int pid; char pname [512]; char ptype [512];
// Collect all placeholders of the given document // tree = server::get_placeholders (docRef, kScopeDocument, 0, "svg:none"); if (!tree) { wlog (stPHLog, "\nCannot read placeholders of template %d (%s)\n", templateID, document::name (0, docRef)); return 1; }
// Get all found placeholders // and do something (here we write them to the log). // xmlquery::send(tree, "select distinct pid, name, type node placeholders.placeholder"); xmlquery::output(tree, kInt, &pid); xmlquery::output(tree, kString, pname, 511); xmlquery::output(tree, kString, ptype, 511); xmlquery::exec(tree);
wlog (stPHLog, "\nPlaceholders in template %d (%s):\n", templateID, document::name (0, docRef)); while (xmlquery::fetch (tree)) { wlog (stPHLog, " ID %d (%s) of type %s\n", pid, pname, ptype); }
// Clean up (do not forget this!) // release (tree);
return 0; }
// ****************************************************************************
int main() { SOAP gSoap = soap::connection (); XMLTree tree = 0; int id; char name [512]; char sid [512]; char sid2 [512]; char path [512]; char destPath [512]; int numberOfTemplates = 0; int counter = 0; ItemRef docRef; int mustShowDocument = 0;
// In versions prior 35610 the function // server::get_placeholders only works on the front document. // if (val (system::revision ()) < 35610) mustShowDocument = 1;
if (!gSoap) { showmessage ("This instruction is intended to analyse the templates of a PubServer installation.\n\nBut you are not connected to a PubServer at all!"); return 0; }
tree = xmlquery::open ("pageitems.xml"); if (!tree) { showerror ("Cannot read templates from PubServer!"); return 0; }
// This loop is to count the templates only. // The number of templates is used for the // progress bar :-) // xmlquery::send(tree, "select id node pageitems.pageitem where id > 0 orderby id"); xmlquery::output(tree, kInt, &id); xmlquery::output(tree, kString, name, 511); xmlquery::exec(tree); while (xmlquery::fetch (tree)) { numberOfTemplates++; }
// Open progress bar // sprintf (sid, "Checking Paceholders of %d Templates", numberOfTemplates); progress::start (sid, numberOfTemplates*2);
// Create the dest folder for the downloads // strcpy (destPath, file::uncurtain (stDownloadPath)); file::create (destPath, 1, 1);
// Examine all templates found // xmlquery::send(tree, "select id, name node pageitems.pageitem where id > 0 orderby id"); xmlquery::output(tree, kInt, &id); xmlquery::output(tree, kString, name, 511); xmlquery::exec(tree); while (xmlquery::fetch (tree)) { // Update the progress and write some log messages // Unfortunately, at least InDesign 2025 does not always update the progress bar. // However, it helps to move the progress window back and forth a little while working. counter++; sprintf (sid, "Downloading Template '%s', ID %d", name, id); sprintf (sid2, "%d / %d", counter, numberOfTemplates); progress::step (sid); progress::unit (sid2); wlog ("", "%s\n", sid);
// Download the template sprintf (sid, "pageitems/data/%d.indd", id); sprintf (path, destPath); soap::download_tofile (gSoap, sid, path);
// Update the progress bar again sprintf (sid, "Checking Template '%s', ID %d", name, id); progress::step (sid); wlog ("", "%s\n", sid);
// Real work is done here sprintf (path, "%s/%d.indd", destPath, id); docRef = document::open (path, 1.0, 0, 0, 0, 0, mustShowDocument); check_placeholders (docRef, id); document::close (docRef, 0, kSuppressUI, 0, kImmediate); // If you do not change the document, kImmediate will work here. BUT ONLY IN THIS CASE! item::release (docRef); }
// Clean up (do not forget this!) // progress::stop (); release (tree);
return 0; }
static XMLTree server::get_notes(
ItemRef docRef,
int scope,
int parentID,
char* options = 0)
Die Funktion sammelt Informationen über die Comet-Notizen im Dokument. Eine Beschreibung der Funktionsparameter finden Sie hier.
Zur Unterstützung der Comet-Notizen können Sie auch die folgenden Funktionen verwenden :
\Ein Beispiel für das Setzen der Parameter und den Export des XMLTrees in eine Datei ...
... finden Sie hier..
static int (
char* buffer,
int maxLen,
...)
DEPRECATED! Verwenden Sie stattdessen die Funktion load_placeholder_str.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
buffer | char* | - | Allokierter char*-String |
maxLen | int | 0 | Länge des allokierten Strings inkl. der abschließenden 0 in Bytes (nicht in Zeichen!). Ist der Speicher zu klein für das Ergebnis,
wird die angegebene Anzahl Bytes (minus 1) in das Ergebnis kopiert und die Funktion liefert den Fehler allocatedStringTooShortErr (=1288). Mit
serror (0, &neededBytes) können Sie die Anzahl der benötigten Bytes nach dem Aufruf erfragen. Achtung : Zu kleine Ergebnisstrings können zu fehlerhaftem TaggedText oder fehlerhaften UTF-8-Zeichen führen. Diese Fehler können im Extremfall zum Absturz von InDesign® führen! 0 : beliebige Länge. Stellen Sie in diesem Fall sicher, dass der Ergebnisstring groß genug ist. Zu kleine Strings können zum Absturz von InDesign® führen! |
Einfachst denkbares Platzhalterskript
int main () { char * buffer = alloc (1000); int neededBytes; int result = server::load_placeholder(buffer, 1000);
if (result == 1288) { serror (0, &neededBytes); if (neededBytes > 0) { release(buffer); buffer = alloc (neededBytes); result = server::load_placeholder(buffer, neededBytes); } }
if (result == 0) textmodel::replace(buffer);
release(buffer); return result; }
static int server::load_placeholder_str(String str, ...)
Ausführen der Laden-Methode eines Platzhalters im PublishingServer-Umfeld. Diese Funktion darf nur in Platzhalter-Laden Skripten verwendet werden!
Die Funktion verwendet den Datentyp String (und nicht char*) für das Ergebnis. Der Vorteil besteht darin, dass Sie hier die Ergebnislänge nicht vor dem Aufruf kennen müssen. Sie können auf den char*-Inhalt eines Strings mit string::get (your_stringvar) zugreifen. Achten Sie aber bitte auf folgendes:
Die Key-Value-Paare der Funktion sind eine reine Textersetzung in der Laden-Anweisung
des Platzhalters und werden vor dem Senden des Befehles ersetzt. So ersetzt z.B. das Paar
"MYTAG", "Mein Wert"
das Tag <MYTAG> im Text der Anweisung durch Mein Wert.
Welche Tags in der Anweisung enthalten sind, kann man sehen, wenn man sich die Lade-Anweisung (z.B. im Ison) ansieht.
Zu Ihrer Unterstützung schreiben wir die Original-Anweisung aber zusätzlich noch mal ins Log:
Hier eine Beispielanweisung vor dem Anwenden der Key/Value-Paare:
# server::load_placeholder_str statement received from server:
"call stringlist plugin(globalName='DataProviderManager',methodName='get')[ <Session.Id>, 'PackagingUnitFirstPrice', <Model.Id>, <Entity.Id>, 'customervariantproducts.eur1Price', <Record.Id>, <Record.GroupId>,'', <xml.assortment>, <layer.1>, <layer.2>, '', <xml.publication>, '','', <xml.documentId>,<Java.ResultClass>]:placeholder#268435830#get"
Die meisten dieser Tags werden automatisch von den Plugins ersetzt. Eine vollständige Liste der automatisch ersetzten Tags und deren Werte finden Sie hier. Beachten Sie bitte auch den Link ganz unten in der Tabelle bei PubServer spezifische Variablen!
Ihre Key/Vaue-Paare werden aber noch vor der automatischen Ersetzung angewendet. Wenn Sie also beispielsweise für <layer.1> und <layer.2>, die gewöhnlich als Land und Sprache verwendet werden, eigene Werte setzen wollen, dann sollte Ihr Funktionsaufruf die folgenden Key/Values enthalten:
"layer.1", "Scheibenwelt", "layer.2", "UUgh"
Name | Typ | Default | Beschreibung |
Return | int | 0 oder ErrorCode | |
str | String | - | Buffer für das Ergebnis der Laden-Methode |
... | String oder char*, String oder char* |
0 | Key/Value Paare zum überschrieben der Standard-Ersetzungen, siehe Beispiel. |
Einfachst denkbares Platzhalterskript
int main () { String str = string::alloc (); int result = server::load_placeholder_str(str);
if (result == 0) { textmodel::replace(string::get (str)); } string::release(str);
return result; }
überschreiben / explizites Setzen bestimmter Werte
int main () { String str = string::alloc (); int result = server::load_placeholder_str (str, "Record.Id", "12345");
if (result == 0) { textmodel::replace(string::get (str)); } string::release(str);
return result; }
static int server::load_elements(ElementList result, ...)
Ausführen der Aufbau-Methode eines Mutliframe Platzhalters im PublishingServer-Umfeld. Diese Funktion darf nur in Platzhalter-Aufbau Skripten verwendet werden!
Die Funktion verwendet den Datentyp ElementList für das Ergebnis. In der Regel werden Sie der Funktion die in Build Skripten definierte globale Variable
gElements übergeben. Diese Variable darf nicht allokiert oder gelöscht werden.
Sofern Sie eine lokale / selbst allokierte Liste verwenden, muss diese am Ende auch gelöscht werden.
Beachten Sie die für server::load_placeholder_str dokumentierten Hinweise bzgl. der Key-Value-Paare und Ersetzungen.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder ErrorCode | |
elements | ElementList | - | (allokierte) Liste für das Ergebnis der Build-Methode |
... | String oder char*, String oder char* |
0 | Key/Value Paare zum überschrieben der Standard-Ersetzungen, siehe Beispiel. |
Einfachst denkbares Build-Skript
int main () { return server::load_elements (gElements); }
static int server::load_table_ids(
IDTypeList products,
StringList moreGroups,
...)
Ausführen der Laden-Methode einer TabellenInsert-Methode. Dieses Funktion darf nur in Tabellen-Laden Skripten verwendet werden!
Name | Typ | Default | Beschreibung |
Return | int | 0 oder ErrorCode | |
products | IDTypeList | - | Ergebnisliste für aufzubauende Produkt IDs, in aller Regel gProducts |
moreGroups | StringList | - | StringListe für zusätzliche Gruppen-Informationen, in aller Regel gMoreGroups. |
... | String oder char* | 0 | KeyValue Paare zum überschrieben der Standard-Ersetzungen, siehe Beispiel. |
Einfachst denkbares Tabellenskript
int main () { return server::load_table_ids(gProducts, gMoreGroups); }
Wie bei server::load_placeholder können auch hier Werte überschrieben werden
int main () { return server::load_table_ids(gProducts, gMoreGroups, "TableRecord.Id", "12345"); }
static int (
StringList resultBuffer,
char* dataProviderId,
char* resultEntityId,
char* search,
...)
Lade Daten von einem DataProvider.
Bitte beachten Sie:
In den meisten Fällen sollten Sie statt server::dataprovider_load eine der folgenden Lösungen vorziehen:
Aus Gründen der Rückwärtskompatibilität wird die server::dataprovider_load Funktion auch in zukünftigen Versionen erhalten bleiben, von der weiteren Verwendung wird jedoch abgeraten.
Bitte beachten Sie für das Ergebnis in resultBuffer:Name | Typ | Default | Beschreibung |
Return | int | 0 oder ErrorCode | |
resultBuffer | int | - | Ergebniszeiger vom Typ String oder char*, ProductList, IDTypeList oder StringList. Diese Liste bzw. der String müssen im Skript selbst allokiert werden! |
dataProviderId | String oder char* | - | Identifier des DataProviders |
resultEntityId | String oder char* | 0 | Identifier der Result Entities. Der Inhalt ersetzt das Tag <Entity.ResultId> der Anweisung von dataProviderId. |
search | String oder char* | 0 | Suchstring. Der Inhalt ersetzt das Tag <Record.SearchStr> der Anweisung von dataProviderId. |
{key, value} | String oder char*, String oder char* | 0 | Beliebig viele Key/Value Paare bestehend jeweils aus zwei Strings für weitere Ersetzungen. Das Ersetzen der Key/Value-Paare ist ein reines Suchen und Ersetzen in der Anweisung von dataProviderId: In der Anweisung werden alle Vorkommen von <key> durch 'value' ersetzt. Einfache Anführungszeichen in Values werden dabei maskiert. Um alle verwendeten Tags der Anweisung zu ersetzen, müssen Sie die Anweisung natürlich kennen. Die Originalanweisung des DataProviders wird mit der Einleitung # DataProvider statement received from server ins Logfile geschrieben. Das Ergebnis der Ersetzungen finden Sie mit der Einleitung # Preprocessed data provider statement ebenfalls im Logfile. Welcher Wert für welchen Schlüssel erwartet wird, muß möglicherweise dort erfragt werden, wo die DataProviderMethode erstellt wurde. Werte zum Ersetzen der gebräuchlichen PublishingServer-spezifischen Tags finden Sie hier. Weitere Werte gebräuchlicher Keys finden Sie hier. |
Beispiel: Füllen einer IDTypeListe.
int main () { IDTypeList ids = idtypelist::alloc(); int result = 0; int index = 0;
result = server::dataprovider_load(ids, "ChildBuckets", 0, 0, "Record.Id", gPSRecordId, "Entity.Id", gPSEntityId); if (result == 0) { // copy ids to the global IDTypeList gProducts (will only work this way, if executed as a TableInsert method) for (index = 0; index < idtypelist::length(ids); ++index) { idtypelist::insert(gProducts, -1, idtypelist::get(ids, index)); } }
// clear list, but do not clear entries idtypelist::clear(ids, 0); return result; }
Beispiel: Holen eines einfachen Strings.
int main () { char * value = alloc(32768); int result = 0;
result = server::dataprovider_load(value, "FirstText", 0, 0, "Record.Id", gPSRecordId, "Entity.ContextLanguage", "deu"); if (result == 0) { textmodel::replace(value); }
release(value); return result; }
static int server::individualization(ItemRef docRef, char* dataFilePath)
Serienbrief eines Dokumentes erstellen. Informationen zu Serienbriefen finden Sie hier.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
docRef | ItemRef | - | Dokument, das serialisiert werden soll, siehe hier 0 : aktuelles Frontdokument |
dataFilePath | char* oder String | - | Vollständiger Pfad der Datendatei für die Serialisierung, siehe hier |
static char* server::get_session_arg(char* option)
Ermittle den Wert einer Option des Programmaufrufes oder einer Umgebungs-Konfiguration.
Der Aufruf liefert nur in InDesign® Server sinnvolle Werte. In InDesign® Desktop und comet_pdf ist das Ergebnis immer leer.
Die folgenden Tabelle enthält alle von den priint_comet Plugins definierten Zusatzparameter für InDesign® Server:
Option | Beschreibung | Werte |
-cometconfig |
[Deprecated] Path to the Autocomet configuration file (batch mode). |
<config.xml path> |
-cometlog |
Enable common logging and write logs to <comet log file path>. You should enable logging on development systems and to trace errors on productive systems. The destination folder must exist, otherwise logging will fail. If set, the cometlog option must be unique for each InDesign Server instance running on the same machine. |
<comet log file path> |
-cometlic |
Read license from <license file path> rather than from the standard locations for license files. |
<license file path> |
-cometcache |
Set the comet cache path. The cache path must be unique for each InDesignServer instance running on the same machine, so it’s highly recommended using this option. The default is ~/Documents/XCache, which might not be useful in a server environment. |
<cache folder path> |
-cometapilog |
Enable API logging and write logs to <api log file path>. This will trace the complete communication between priint:cometserver and InDesignServer. The destination folder must exist, otherwise logging will fail. If set, the cometapilog option must be unique for each InDesignServer instance running on the same machine. |
<api log file path> |
-cometaccepttimeout |
Default: 1 (= 1 ms) |
<accept timeout in ms> |
-cometreceivetimeout |
Default: 60000 (=60s) |
<receive timeout in ms> |
-cometsendtimeout |
Default: 60000 (=60s) |
<send timeout in ms> |
-cometyield |
Milliseconds to yield between listen attempts, currently unused. |
<yield ms> |
-cometlogrotate |
Rotate comet logs, if the log file exceeds the size of <# bytes> bytes. Default is 2097152 (2 MB), -1 will disable log rotate at all (not recommended). This setting applies to all log files. |
<# bytes> |
-cometthreshold |
Threshold in bytes before writing script results (like XML strings) in tmp files rather than returning the string. This setting is relevant for the Corba connection only, the default value is 32768. Higher values may improve performance, on the other hand large result strings (> 512k) sometimes cause failures in the Corba connection. The argument is not relevant for SOAP/PubServer communications. |
<# bytes> |
-cometparanoidlog |
Unused |
|
-cometdrawidle |
Enable / disable draw idle features. If turned on (default), InDesignServer will prepare previews whenever “idle”. You should not turn it off, except you notice problems with previews. |
true | false |
-cometparanoidredraw |
With paranoidredraw turned on, every spread is forced to be rendered in kPrinting mode before the first preview request, even if the spread has not been changed after the document has been openend.
Customers reported, that they had occasional problems with text placeholders, which appeared to be empty in previews. This is a known problem for placeholders, that have just been loaded or updated, but not yet rendered in kPrinting mode; it is not a known problem for placeholders in documents just opened. However, since it seems to be a potential problem, the potential solution would be to turn cometparanoidredraw on. |
true | false |
-cometidmlcache |
Turn IDML cache on (default is off). With IDML cache turned on, all templates will be resaved as IDML and then opened from the IDML file. This will slow down the first builds a little bit, but can help to speed up subsequent builds, reduce size of generated documents and solve problems caused by sorrupted or outdated templates.
You can skip this option, unless you encounter frequent performance or stability issues when generating pages. |
on | off |
-legalnotes |
After starting the InDesignServer, the Legal Notes of the priint:comet plug-ins are shown in the standard browser. |
- |
-iorfile |
[Deprecated] This is the communication endpoint for Corba connections. You must provide a file name, the destination folder must exist and must be writeable for the InDesignServer user. If the file provided already exists, this file must be writeable for the InDesignServer user. |
<path to iorfile> |
-shutdowntrigger |
Shutdown the InDesignServer instance after (every) n days / hours / minutes / seconds uptime, after n documents or n jobs have been processed, when memory is low, at a certain time or when no more n GB memory can be allocated. See Section 10 Troubleshooting for more information. The following criteria are supported:
|
One of the criteria described. |
-purgetrigger |
[Deprecated] Purge memory after (every) n days / hours / minutes / seconds uptime, after n documents or n jobs have been processed, when memory is low, at a certain time or when no more n GB memory can be allocated. See Section 10 Troubleshooting for more information. The following criteria are supported:
|
One of the criteria described. |
-cometxmlparser |
Which XML parser to use. You should skip this option or set it to fast. |
|
-playback |
Use of recorded data in $XCACHE. priint:comet plugins can record received data from external data sources. Recorded data can used in playback. See here for more information about recording data. mode. WERK II reserves the right to turn off this feature at any time – please contact WERK II if you plan to use recoreded data. |
|
-playbackpath |
Complete path to record(ed) data. URL[See here for more information about recording data.]{../InDesign/Plugins/w2plugins.html#Playback-Modus} |
<playback data path> |
-soaplog |
Turn on logging the the complete SOAP traffic. The SOAP traffic is looeg to these files:
|
- |
-debugpy |
Activate the Python debugger at the specified port. If set, the debugpy option must be unique for each InDesignServer instance running on the same machine. In addition, if debugpy and debugscript are used both, they must be unique too. The following values are supported:
|
<port-number> |
-debugscript |
Activate the cScript Tracer at the specified port. If set, the debugscript option must be unique for each InDesignServer instance running on the same machine. In addition, if debugpy and debugscript are used both, they must be unique too. The following values are supported:
|
<port-number> |
Name | Typ | Default | Beschreibung |
Return | char* | Wert der Programm-Option als char*-String. Beachten Sie bitte, dass auch int und bool Werte als Strings zurückgegeben werden! Der zurückgegebene Zeiger kann in Funktionen verwendet werden, die
einen char*-String als Parameter erwarten.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
option | char* oder String | - | Gültige Programm-Option oder Umgebungs-Konfiguration. Folgende Angaben sind zulässig: InDesign® Programm-Optionen. Ein Beschreibung der Optionen finden Sie in Documentation/German/Einführung in InDesign® Server NNN.pdf des Programm-Ordners von InDesign® Server. "-adminport" "-configuration" "-console" | "-noconsole" - Ergebnis "0" oder "1" "-errorlist" | "-noerrorlist" - Ergebnis "0" oder "1" "-heartbeatupdateinterval" "+home" "-host" "-iorfile" "-LogToApplicationEventLog" - Ergebnis "0" oder "1" "-maxerrors" "-maxwaitss" "-noblockss" - Ergebnis "0" oder "1" "-onmainthread" - Ergebnis "0" oder "1" "-pluginpath" "-port" "-previews" | "-nopreviews" - Ergebnis "0" oder "1" "-rxidletimeout" "-seh" - Ergebnis "0" oder "1" "-sendcrashlogs" | "-nosendcrashlogs" - Ergebnis "0" oder "1" priint:comet Zusatzoptionen, siehe hier Environment-Setting durch app.comet.setEnvironment "endpoint" "getEnvironment" "instanceID" "isConnected" "isPubserverConnection" "scriptIO" "upTime" |
int main () { int i; int n = server::count_session_args ();
showmessage ("log ---%s---\n", server::get_session_arg ("-cometlog")); showmessage ("treshold ---%s---\n", server::get_session_arg ("-cometthreshold")); showmessage ("confi ---%s---\n", server::get_session_arg ("-configuration")); showmessage ("rxidletimeout ---%s---\n", server::get_session_arg ("-rxidletimeout")); showmessage ("port ---%s---\n", server::get_session_arg ("-port"));
for (i = 0; i < n; i++) { showmessage ("%d : '%s'\n", i, server::get_nth_session_arg (i)); } }
static int server::count_session_args()
Mit wieviel Argumenten wurde das Programm aufgerufen? Das Ergebnis is auch richtig für InDesign® Desktop, wenn das Programm direkt aus dem Terminal gestartet wurde.
Name | Typ | Default | Beschreibung |
Return | int | Anzahl der Programm-Argumente beim Start des Programmes. Der Programm-Name wird dabei als Argument 0 mitgezählt. |
int main () { int i; int n = server::count_session_args ();
showmessage ("log ---%s---\n", server::get_session_arg ("-cometlog")); showmessage ("treshold ---%s---\n", server::get_session_arg ("-cometthreshold")); showmessage ("confi ---%s---\n", server::get_session_arg ("-configuration")); showmessage ("rxidletimeout ---%s---\n", server::get_session_arg ("-rxidletimeout")); showmessage ("port ---%s---\n", server::get_session_arg ("-port"));
for (i = 0; i < n; i++) { showmessage ("%d : '%s'\n", i, server::get_nth_session_arg (i)); } }
static char* server::get_nth_session_arg(int nth)
Wert des n-ten Programm-Argumentes. Der Pgrogrammname selbst ist dabei Argument 0.
Name | Typ | Default | Beschreibung |
Return | char* | Wert des n-ten Programm-Argumentes. Beachten Sie bitte, dass auch die Optionsnamem wie -port usw. als Argumente zählen! Der zurückgegebene Zeiger kann in Funktionen verwendet werden, die
einen char*-String als Parameter erwarten.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
nth | int | - | 0-basierter Index des Argumentes. |
int main () { int i; int n = server::count_session_args ();
showmessage ("log ---%s---\n", server::get_session_arg ("-cometlog")); showmessage ("treshold ---%s---\n", server::get_session_arg ("-cometthreshold")); showmessage ("confi ---%s---\n", server::get_session_arg ("-configuration")); showmessage ("rxidletimeout ---%s---\n", server::get_session_arg ("-rxidletimeout")); showmessage ("port ---%s---\n", server::get_session_arg ("-port"));
for (i = 0; i < n; i++) { showmessage ("%d : '%s'\n", i, server::get_nth_session_arg (i)); } }
So finden Sie heraus, ob ein PubServer DEV, TST, ACC, PRD, ... ist. Achtung: Das Skript läuft nur mit einer gültigen PubServer-Verbindung!
#include "[pubserver]/plugin/stdlib.c"
int getPubServerInstanceId() { char * instanceId = stdlib::get_server_property("PUBSERVER_INSTANCE_ID"); if (instanceId) { if (strlen(instanceId)) { return val(instanceId); } release(instanceId); } return -1; }
int main() { int instanceId = getPubServerInstanceId();
// see https://kb.priint.com/index.php/article/glassfish-server-properties/
showmessage ("Instance ID: %d\n", instanceId);
if (instanceId < 0) { // illegal / instance ID could not be obtained } if (instanceId == 0) { // production } else if (instanceId == 1) { // acceptance } else if (instanceId == 2) { // testing } else if (instanceId == 3) { // shared development } else if (instanceId == 4) { // single developer } else { // other single developers }
return 0; }
Alphabetic index HTML hierarchy of classes or Java