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
#include "internal/types.h"

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; }

Version 3.1 R1760, 26. Feb. 2010

priint:comet InDesign® Plug-Ins

frame::get_cometgroup
item::getint

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.

Version 3.1 R1760, 26. Feb. 2010

priint:comet InDesign® Plug-Ins

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.

Version 3.1 R1760, 26. Feb. 2010

priint:comet InDesign® Plug-Ins

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; }

Version 3.1 R1760, 26. Feb. 2010

priint:comet InDesign® Plug-Ins

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..

Version 3.1 R1760, 26. Feb. 2010

priint:comet InDesign® Plug-Ins

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; }

Verwenden Sie stattdessen die Funktion load_placeholder_str.

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; }

Version 4.0.5 R14000, 7. Nov 2016

Verfügbarkeit:
Comet-Plug-Ins, comet_pdf, Illustrator

placeholder::load
comet.placeholder.loadServer

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);
}

Version 4.3.0 R33300, 21. Jul 2023

Verfügbarkeit:
Comet-Plug-Ins, comet_pdf, Illustrator

placeholder::load
comet.placeholder.loadServer

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");
}			 

Version 4.0 R5804, 23. Sep 2014

Verfügbarkeit:
Comet-Plug-Ins, comet_pdf

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:
  1. den Ergebnistyp der DataProvider legen Sie mit der als resultBuffer übergeben Variable fest. Derzeit können folgende Datentypen verarbeitet werden:
    • String oder char*: als Ergebnis wird ein einzelner String (der erste vom DataProvider gelieferte) zurückgegeben
    • StringList: das Ergebnis wird als einfache Stringliste zurückgegeben
    • IDTypeList: als Ergebnis wird eine Liste von IDs des Typs idtype geliefert
    • ProductList: als Ergebnis wird eine Liste von Produkten geliefert
    Das Ergebnis muss nicht immer sinnvoll sein, man sollte also den verwendeten DataProvider kennen und sich sinnvollerweise auf folgende Kombinationen beschränken:
    • String oder char*: nur für DataProvider mit Ergebnistyp String oder List<String>
    • StringList: nur für DataProvider mit Ergebnistyp String oder List<String>
    • IDTypeList: nur für DataProvider mit Ergebnistyp List<RecordId>
    • ProductList: nur fuür DataProvider mit Ergebnistyp List<Product>
  2. die als Parameter übergebene Liste (bzw. der char * / String) muß im Skript selbst mit einer geeigneten alloc-Funktion allokiert sein (es ist wirklich wichtig), sonst kann der Ergebnistyp nicht erkannt werden.
  3. die Liste muß auch im Skript selbst wieder frei gegeben werden. Sollen die Werte außerhalb verwendet werden, müssen sie ggf. in eine über den Kontext definierte globale Liste kopiert werden.

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; }

Version 4.0 R5804, 23. Sep 2014

Verfügbarkeit:
Comet-Plug-Ins, comet_pdf

Verwenden Sie stattdessen die Funktion load_placeholder_str oder eine eigene Java-Methode wie hier beschrieben.
comet.placeholder.loadDataProvider

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

Version v4.1, 1. Okt 2018

priint:comet InDesign® Plug-Ins, comet_pdf

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:

  • uptime=nd | nh | nm | ns documents=n
  • jobs=n
  • memory[=low]
  • time=hh:mm:ss
  • headroom=nG | nM | nK

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:

  • uptime=nd | nh | nm | ns documents=n
  • jobs=n
  • memory[=low]
  • time=hh:mm:ss
  • headroom=nG | nM | nK

One of the criteria described.

-cometxmlparser

Which XML parser to use. You should skip this option or set it to fast.

  • classic
  • optimized
  • 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:

  • $DESKTOP/_soapTEST.log
  • $DESKTOP/_soapSENT.log
  • $DESKTOP/_soapRECV.log
See here for more information.

-

-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:

  • 0 : Do not use the Python Debugger
  • -1 : Default port 5678
  • > 0 : <port number>

<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:

  • 0 : Do not use the cScript Tracer
  • -1 : Default port 5678
  • > 0 : <port number>

<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)); } }

Version v4.1, 18. Feb 2019 (Vietnam)

priint:comet InDesign® Plug-Ins, comet_pdf

count_session_args
get_nth_session_arg

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)); } }

Version v4.1, 18. Feb 2019 (Vietnam)

priint:comet InDesign® Plug-Ins, comet_pdf

get_session_arg
get_nth_session_arg

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)); } }

Version v4.1, 18. Feb 2019 (Vietnam)

priint:comet InDesign® Plug-Ins, comet_pdf

get_session_arg
count_session_args

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; }

Seit
Version 3.1, R1760, 26. Feb. 2010

Verfügbarkeit
priint:comet InDesign® Plug-Ins

Alphabetic index HTML hierarchy of classes or Java