Mit den priint.comet Plugins von WERK II können sie datenbankgestützt publizieren und Dokumente automatisch aufbauen. Mit Hilfe der Plugins können Texte und Bilder von Dokumenten mit sogenannten Platzhaltern versehen werden. Über diese Platzhalter können die verknüpften Dokumentteile aus der Datenbank geladen, geprüft und in den Datenbankbestand zurückgeschrieben werden.
Die Aktionen zum Laden, Prüfen und Zurückschreiben der Platzhalter werden im Datenpool definiert und sind nicht Teil von priint:comet.
Das Dokument und alle verlinkten Seiten beschreiben die Grundfunktionen der priint:comet Plugins und technische Details zur Konfiguration der Plugins.
Diese Dokumentation ist kein Anwender-Handbuch.
Die Inhalte von Textplatzhaltern werden üblicherweise in einem abgekürzten TaggedText-Format namens %!TT-Format importiert. Statt vollständiger Definitionen der im Import verwendeten Stile enthält dieses Format ledigich Leerdefinitionen. InDesign® verwendet dann beim Import die Stildefinitionen des Dokumentes.
In der Standardkonfiguration zeigt InDesign® bei fehldenen Stildefinintionen in Importen eine Fehlermeldung an, die besagt, dass Formatinformationen fehlen. Diese Fehlermeldung muss für einen ununterbrochenen Workflow unterdrückt werden. Führen Sie dazu die folgenden Schritte aus:
Über das Plugin wird die Verbindung zum Datenpool hergestellt.
Das Plugin liegt in mehreren Varianten vor. Es darf nur eins der CoreService/Servlett-Plugins installiert sein. Werden mehrere Varianten von CoreService/Servlett installiert, wird beim Start von InDesign® eine Fehlermeldung gezeigt, dass es zu Konflikten beim Laden der Plugins gekommen ist. Entfernen Sie in diesem Fall zuviel installierte Varianten von CoreService und starten Sie InDesign® erneut.
Über das Menü Plug-ins -> Logfile -> Schreiben... (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) können Sie das Schreiben von Logfiles aktivieren und deaktivieren. Die Einstellung bleibt nach Neustart von InDesign® erhalten. Bitte beachten Sie, dass Änderungen erst nach Neustart von InDesign® für alle priint:comet Plugins sichtbar sind. In das Logfile werden Informationen zum Arbeitsablauf der priint:comet Plugins und alle Abfragen an den Datenpool geschrieben. Logfiles werden für den Support von WERK II benötigt. Sie können Logfiles mit Dienstprogamme/Konsole (Mac) oder Programmen wie mtail (Windows) anschauen. Einige dieser Progamme (wie z.B. Konsole von Apple) haben den Vorteil, dass sie Änderungen im Logfile automatisch anzeigen und Sie so die Arbeit der priint:comet Plugins "beobachten" können.
Wird das Schreiben des Logfiles ohne weitere Zusatztasten aktiviert, wird das Logfile in Ihrem Dokumente-Ordner abgelegt. Mit gehaltener ALT-Taste werden Sie nach dem Zielordner für das Logfile gefragt. Als Name des Logfiles wird immer idlog_csX.log verwendet mit X als InDesign®-Version (17 für ID 2022, 18 für ID 2023, usw.).
In Skripten können Sie Logmeldungen mit den Befehlen wlog und wtlog schreiben.
Achtung: Das Schreiben des Standardlogs kostet etwa 10-20% mehr Rechenleistung. In ungünstigen Konstellationen kann die Bearbeitung aber auch weit stärker verlangsamt werden. Folgende Faktoren können das Schreiben der Logfiles ungünstig beeinflussen:
Insgesamt empfehlen wir dringend, das Schreiben des Standardlogs im Produktivbetrieb nicht zu aktivieren. Wenn Sie auf eigene Logs nicht verzichten können, verwenden Sie die Skriptfunktionen wlog und wtlog und legen im ersten Parameter eine eigene Log-Datei fest. Diese Meldungen werden auch bei deaktiviertem Standard-Log geschrieben.
Mit Plug-ins -> Logfile -> Im Finder/Windows-Explorer zeigen (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) wird die Logdatei im Mac-Finder bzw. Windows-Explorer gezeigt.
Mit Plug-ins -> Logfile ->Datei öffnen wird das Logfile mit dem Standardprogramm für .log-Dateien Ihres Rechners geöffnet.
Mit Plug-ins -> Logfile ->Leeren wird das Logfile geleert (aber nicht gelöscht). Die Aktion kann nicht rückgängig gemacht werden.
In allen Varianten können Verbindungen zu XML Datenordnern hergestellt werden. Verwenden Sie dazu das Menü Plug-ins -> Datenordner -> XML Datenordner wählen... (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025). Die eingestellte Verbindung wird nach Neustart von InDesign® und nach dem Trenner von Datenbank- oder PubServer/SOAP-Verbindungen automatisch wieder hergestellt. Mit folgenden Zusatztasten kann der Befehl modifiziert werden:
Unterhalb des Menüpunktes XML Datenordner wählen... werden die letzten zehn Verbindungen angezeigt und können von dort aus direkt eingestellt werden. Mit folgenden Zusatztasten können die Menüpunkte der zuletzt verwendeten Verbindungen modifiziert werden :
In Versionen vor v4.2 R33270 heißt das Menü lediglich Plug-ins -> Datenordner... (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) und hat keine keine Untermenüs.
XML-Datenordner müssen eine von WERK II definierte Struktur haben und enthalten XML-Daten zur Beschreibung der verwendeten Konfiguarions- und Inhaltsdaten.
Basis-Versionen von priint.comet XML-Ordner erhalten Sie von WERK II und dessen Partnern.
Einen vollständigen XML-Datenordner mit Beispielen finden Sie außerdem im Tutorial für den Seitenaufbau. Entpacken Sie dazu das Archiv Tutorial pagebuilding.zip. Der Ordner xmldata ist ein vollständiger XML-Datenordner.
Das Plugin unterstützt Verbindungen zu Datenbanken und XML-Offline. Datenbankverbindungen werden über ODBC gemacht.
Hier eine schematische Darstellung von Datenbankabfragen mit Hilfe von ODBC:
Folgende Installationen nötig:
Driver Manager : Der Treiber-Manager wird zur Startzeit geladen und ohne diese Installation können die Plugins und comet_pdf nicht geladen werden! (Und da unsere Software gar nicht erst gestartet werden kann, können wir auch keine entsprechenden Fehlermeldungen zeigen. In den meisten Fällen bricht der Programmstart einfach ab.)
sudo apt install -y libodbc1 sudo apt install -y tdsodbc
ODBC Drivers : Um eine konkrete Verbindung zu einer Datenbank herzustellen, wird die Installation und Konfiguration eines entsprechenden sogenannten ODBC-Treibers benötigt. ODBC-Treiber finden Sie z.B. bei OpenLink oder bei Devart. Unter Windows kann für SQL Server auch der native Treiber vom Microsoft verwendet werden. Für Apples M-Serien konnten wir ausschließlich die Treiber von Devart erfolgreich testen.
Bitte beachten Sie: ODBC-Treiber kosten in der Regel Geld und müssen lizensiert sein. Diese Kosten sind nicht Teil der Kosten für die priint:comet Plugins oder comet_pdf.
Über Installation und Konfiguration der Treiber informieren Sie sich bitte bei den jeweiligen Anbietern der Software. Zusätzliche Hinweise zur Konfiguration finden Sie hier.
Wir haben die Treiber der genannten Hersteller mit Basis-priint:comet Installationen
auf SQL Server und mySQL getestet.
Bitte haben Sie Verständnis dafür, dass wir nicht garantieren
können, dass alle verwendeten Treiber auch in Zukunft genau so funktionieren werden wie heute und jegliche Haftung
dafür ausschließen.
Die WERK II GmbH behält sich hiermit ausdrücklich das Recht auf Änderungen in der priint:comet Datenbankstruktur vor.
Darüberhinaus kann WERK II ausdrücklich keinerlei Verantwortung für das Funktionieren von SQL-Aufrufen von Drittanbietern übernehmen.
Insbesondere Dokumente (Publikationen), Templates und Seitentemplates können mitunter recht groß sein. Wir holen diese Daten bei Bedarf in Teilstücken (sogenannten chunks) ab. Aus Performancegründen empfiehlt es sich trotzdem, diese Paketgröße (sinnvoll) zu erhöhen. Die folgende Einstellung in der odbc.ini hat sich bewährt:
FetchBufferSize=6000000 max_allowed_packet=6000000
Manche ODBC-Treiber unterstützen sogenannte Multiple Active Result Sets (MARS). MARS entstehen, wenn SQL-Abfragen geschachtelt werden, z.B. wenn die Ergebnisse einer Abfrage direkt beim Abholen der Einzelergebnisse für eine weitere Abfrage verwendet werden.
Hier ein einfaches Beispiel:
#include "internal/types.h" Query qu; int load_action (int id) { query::send (qu, "select name, statement from actions where ID = ?"); query::input (qu, kInt, id); query::exec (qu); while (query::fetch (qu)) { // Do your work here } return 0; } main () { DBC dbc = sql::dbconnection (); int id; qu = sql::query (dbc); query::send (qu, "select ID from actions where ID > 0"); query::exec (qu); query::output (qu, kInt, &id); while (query::fetch (qu)) { load_action (id); } query::close (qu); return 0; }
In ODBC-Treibern ist MARS normalerweise standardmäßig deaktiviert und wir empfehlen, MARS nicht zu aktivieren. Wir haben in unserer Software komplett auf die Verwendung von MARS verzichtet.
Im obigen Beispiel ist die Auflösung der MARS einfach (select ID, name, statement from actions where ID > 0). In komplexeren Abfragen müssen die Ergebnisse des ersten Aufrufes in einer geeigneten Zwischenliste gesammelt werden. Sind alle Ergebnisse abgeholt, werden die Unterabfragen mit Hilfe dieser Liste gemacht. Alternativ (aber etwas langsamer) können Sie auch in der Unterfunktion einen neuen Query öffnen (und am Ende wieder schließen!) und die Unterabfragen über diesen zweiten Query abwickeln:
#include "internal/types.h" int load_action (int id) { DBC dbc = sql::dbconnection (); Query qu = sql::query (dbc); char name[1024]; query::send (qu, "select name from actions where ID = ?"); query::input (qu, kInt, id); query::output (qu, kString, name); query::exec (qu); while (query::fetch (qu)) { // Do your work here wlog ("", "%d : %s\n", id, name); } query::close (qu); return 0; } main () { DBC dbc = sql::dbconnection (); Query qu = sql::query (dbc); int id; query::send (qu, "select ID from actions where ID > 0"); query::output (qu, kInt, &id); query::exec (qu); while (query::fetch (qu)) { load_action (id); } query::close (qu); return 0; }
Der mySQL-Treiber von Devart enthält offenbar einen kleinen Fehler: Ist die verwendete Datenbank nicht bereits in der ODBC-Konfiguration festgelegt (etwa mit Database=%your_dbname%) sondern wird erst im Login-Dialog angegeben, dann wird die Datenbank nur im ersten geöffneten Query richtig festgelegt. Öffnet man parallel weitere Queries, erzeugen diese den folgenden Fehler:
# [Devart](ODBC][MySQL]#3D000No database selected, SOLSTATE-HY000
Diese Situation kommt auch in den Plugins und in comet_pdf vor. Um das Problem zu umgehen, ist es unbedingt erforderlich, dass der Data Source Name (DSN) in odbc.ini die beiden Worte Devart und MySQL (in beliebiger Groß/Kleinschreibung) enthält. Der DSN wird im Login-Dialog als Service angegeben. Hier ein Beispiel:
[Generic_DEVART_MYSQL] Driver=Devart ODBC Driver for MySQL Port=3306 : :
Der Datentyp uniqueidentifier wird in SQL-Abfragen häufig wie ein String verwendet. Das funktioniert in den meisten ODBC-Treibern. Die Treiber von Devart sind an dieser Stelle etwas genauer und erzeugen z.B. bei der folgenden Anweisung, in der d.id vom Typ uniqueidentifier ist, einen Typecast-Fehler:
d.id =<STRINGID>
Es ist hoffentlich klar, dass diese Anweisung äußerst gefährlich ist. Die übergebene StringID kann ja alles andere als ein gültiger (und eindeutiger) Identifier sein. Devart handelt mit der Fehlermeldung also vollkommen korrekt! Richtig wäre eine Anweisung der Art
d.id = CONVERT (uniqueidentifier, <STRINGID>) # oder mglw. convert(varchar(38), d.id) = <STRINGID>
(die immer noch einen falschen Identifier setzen kann, aber dann hat man wenigstens darüber nachgedacht :-))
Nach erfolgreicher ODBC-Installation kann mit Hilfe des Menüs Plug-ins -> Login... (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) eine Verbindung zu Datenbank hergestellt werden. Im erscheinenden Dialog geben Sie Ihre Login-Daten ein. Nach erfolgreichem Login ändert sich der Name des Menüs in Logout und Sie können die Verbindung hier wieder beenden. Ist ein XML-Ordner eingestellt, wird dann automatisch die Verbindung zu diesem Ordner wieder hergestellt.
Mit Hilfe der Buttons können Sie die Dialogeinstellungen für spätere Verwendungen sichern.
Folgende Palettenaktionen (panelstaements) werden (wenn sie definiert und nicht leer sind) ausgeführt:
Wie CoreService [Database], aber statt ODBC wird OCI verwendet. Als Zieldatenbank kommen in diesem Fall natürlich nur Oracle-Datenbanken in Frage.
Das Plugin ist nur für MacOSX erhältlich. Damit das Plugin ausgeführt werden kann, muss auf Ihrem Rechner die Software für OCI 12.2 installiert sein und die von OCI verwendete Datei tnsnames.ora die korrekten Verbindungsbeschreibungen enthalten.
So installieren Sie OCI:
Hier ein Beispiel für einen gültigen tnsnames.ora Eintrag. Unter der gegebenen Adresse muß ein Oracle Server mit dem SID orcl laufen:
DEMO=(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=192.168.2.33)
(PORT=1521) ) )
(CONNECT_DATA= (SID=orcl) ) )
Wenn Sie aus älteren Installationen noch Dinge wie ./MacOSX/environment.plist, /etc/launchd.conf und Ähnliches im Kopf haben - diese Eunstellungen sund Neustarts sind mit den ab CC2014 verwendeten OCI-Libs nicht mehr nötig.
Zur individuellen Anpassung der Verbindung kann die Datei ociflags.ini verwendet werden. Die Datei ist optional, aber wenn sie verwendet werden soll, muß sie sich im gleichen Ordner wie die priint.comet Plug-Ins befinden. Ein kommentiertes Beispiel dieser Datei finden Sie hier. Die Konfigurationseinstellungen von ociflags.ini sind in der Regel nicht erforderlich, um sich mit einem ORACLE-Service zu verbinden, erlauben aber Anpassungen an die jeweilige IT-Infrastruktur oder bestimmte ORACLE Implementierungen.
Das Plugin unterstützt folgende Datenverbindungen
Die Verbindung zum Service wird über das Menü Plug-ins -> Verbinden mit Publikationsserver... (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) hergestellt. Im erscheinenden Dialog geben Sie Ihre Login-Daten ein. Nach erfolgreichem Login ändert sich der Name des Menüs in Trennen vom Publikationsserver und Sie können die Verbindung hier wieder beenden. Ist ein XML-Ordner eingestellt, wird nach dem Trennen der Verbindung automatisch die Verbindung zu diesem Ordner wieder hergestellt.
Für die Arbeit nötige Dateien wie Templates und Pagetemplates werden vor ihrer Verwendung automatisch vom Server heruntergeladen und im sogenannten Ordner XCache abgelegt.
Als Ziel der lokalen Ablage wird der Ordner $DOCUMENTS/XCache/ID_NN.0 verwendet. Mit Hilfe des Menüs Plug-ins -> Interne Dateiablage ... (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025) können Sie einen beliebigen anderen Ordner für die Ablage wählen. Die Unterordner XCache und XCache/ID_NN.0 werden automatisch in diesem Ordner angelegt. Sie benötigen volle Lese- und Schreibberechtigungen auf den ausgewählten Ordner. Aus Performance-Gründen sollten Sie keinen Netzwerk-Ordner und erst recht keinen Ordner einer sogenannten Cloud verwenden. Die Einstellung wird bei Neustart von InDesign® wiederhergestellt.
Sind Sie bereits mit einem PubServer oder SOAP-Service verbunden, kann der XCache aus naheliegenden Gründen nicht mehr geändert werden und das Menü Plug-ins -> Interne Dateiablage ... ist deaktiviert.
Alternativ zur manuellen Auswahl kann ab v4.1.8 R28150 der XCache auch automatisch gesetzt werden.Legen Sie dazu im Ordner $PREFS/werkii die Datei prefs.xml mit folgendem Inhalt an:
<?xml version="1.0" encoding="utf-8"?> <prefs> <pref plugin="CoreService" setting="xcache"> <value>$DESKTOP/hahaha</value> </pref> </prefs>
Im Element value geben Sie den gewünschten Pfad (wie immer ohne XCache/ID_NN.0) an. Bei jedem Start von InDesign® wird der XCache jetzt auf den so festgelegten Pfad gesetzt. Beachten Sie dabei aber bitte folgendes:
Bei InDesign® Server wird der XCache in aller Regel mit Hilfe der Programmoption -cometcache festgelegt. Achten Sie unbedingt darauf, dass jede Server-Instanz einen eindeutigen XCache-Pfad verwendet!
Bei comet_pdf wird als XCache automatisch der Ordner XCache/pid_of_process verwendet. Hinweise zur Konfiguaration des XCache von comet_pdf finden Sie hier.
SOAP- und PubServer-Verbindungen werden mit Hilfe von gSoap gemacht und basieren auf einer von WERK II definierten Struktur (wsdl). Es sind keine zusätzlichen Installationen auf Ihrem Rechner nötig. Für Installation und Konfiguration des Datenpools wenden Sie sich bitte an unseren Support.
Die priint_comet Plugins unterstützen Single Sign On (SSO) als Anmeldemethode für priint:comet PubServer. Verwenden Sie dazu das Menü Plug-ins -> Verbinden mit Publishing Server (SSO)....
Allgemeine Informationen zum Login für priint:comet PubServer finden Sie hier. Achtung: Für diese Seite benötigen Sie einen registrierten Login, den Sie über unseren Support support@priint.com erhalten können.
Für einen SSO-Login sind einige HTML-Seiten erforderlich. Diese Dateien sind in einer Standardversion in den priint:comet Plugins enthalten. Hier die Standard-Versionen der verwendeten Browser-Dateien.
Für jede dieser Dateien können Sie im Ordner login des Ordners der priint:comet Plugins ($COMET/login) eine eigene Version installieren. Um die SSO-Login-Seiten an Ihre Bedürfnisse anzupassen, gehen Sie wie folgt vor:
Die folgende Tabelle beschreibt die verwendeten Browser-Seiten:
Datei | Beschreibung |
landing.html | Called first. Purpose is to redirect to the authentication service. This file should contain the "meta http-equiv" header and / or initiate javascript redirection. Also a 'cancel' button is nice to have, in case the user entered an invalid address and doesn't want to wait until connection times out. |
accept.html | Called, when the authentication service accepts login. There are no special requirements for this page. You should avoid referring to further resources (css files, images etc.) in this file,. because immediately after delivering this file, the local webservice is shut down, i.e.: no further requests will be served. |
denied.html | Called, when the authentication service denies login. There are no special requirements for this page. You should avoid referring to further resources (css files, images etc.) in this file,. because immediately after delivering this file, the local webservice is shut down, i.e.: no further requests will be served. |
cancel.html | Called, when the user cancels authentication. There are no special requirements for this page. You should avoid referring to further resources (css files, images etc.) in this file,. because immediately after delivering this file, the local webservice is shut down, i.e.: no further requests will be served. |
test.html | This page is shown, when you enter 'test' in the Server input field in the login dialog. Purpose is to test the SSO Plug-In implementation. The values usually provided by the authentication service can here just be entered manually |
400.html, 404.html, index.html | Error pages for Bad Request resp. Not Found and general fallback page. |
details.html | Not mandatory. This file shows some request / response details and is included by all default (built-in) pages. |
css/main.css | Various style definitions used in the HTML files |
SOAP- und PubServer-Verbindungen unterstützen SSL. Ab v4.1 R23456 wird zusätzlich TLSv1.2 unterstützt. Bttte beachten Sie folgende Einschränkungen für TLS:
TLSv1.2 kann unter Mac OS X erst ab InDesign® CC2017 und mindestens Mac OS X 10.11 Yosemite unterstützt werden. Für TLSv1.2 benötigt das Plugin CoreServie die beiden Systembibliotheken /usr/lib/libssl.35.dylib und /usr/lib/libcrypto.35.dylib, die erst ab Mac OS X 10.11 Bestandteil des Betriebessystemes sind.
Für CC 2017 und Mac OS X 10.10 können die Bibliotheken nachinstalliert werden. Für die Installation werden Admin-Rechte benötigt:
- Entpacken von libssl35.zip
- Dann im Terminal
cd Ausgepackter Ordner
sudo mv libssl.35.dylib /usr/lib
sudo mv libcrypto.35.dylib /usr/lib
Spezielle Eigenschaften der SOAP-Verbindung können in einer Konfigurationsdatei namens soapflags.ini hinterlegt werden. Diese Datei muss sich im Installationsverzeichnis der priint:comet Plugins bzw. von comet_pdf befinden. Ein kommentiertes Beispiel dieser Datei finden Sie hier. Die Konfigurationseinstellungen von soapflags.ini sind in der Regel nicht erforderlich, um sich mit einem SOAP-Service zu verbinden, erlauben aber Anpassungen an die jeweilige IT-Infrastruktur oder bestimmte SOAP Implementierungen.
Folgende Einstellungen können vorgenommen werden:
Gruppe | Option | Werte | Verfügbarkeit |
Proxy | Einstellungen zur Verbindung über einen HTTP Proxy | ||
proxy_host |
IP Adresse oder Name des HTTP Proxy. Falls leer oder nicht definiert, wird kein Proxy zur Verbindung verwendet |
SOAP/PubServer | |
proxy_port |
Port des HTTP Proxy. Falls leer oder nicht definiert, wird der Standard HTTP Port verwendet |
||
proxy_user |
Benutzername für den Proxy-Server. Sofern leer oder undefiniert werden keine Credentials bei der Verbindungsherstellung über den Proxy Server verwendet. |
||
proxy_passwd | Passwort für den Proxy-Server. Sofern leer oder undefiniert werden keine Credentials bei der Verbindungsherstellung über den Proxy Server verwendet. | ||
SOAP | SOAP Versionsunterstützung | ||
soap-version | 1.1 oder 1.2 (default) | SOAP/PubServer | |
service-version | 0 (default), 1 oder 2 Die Plug-Ins und PDF Renderer unterstützen 2 Service-Versionen: die ältere ("Version 1") basiert auf SwA zur Übertragung von binären Daten, die neuere ("Version 2") auf MTOM. Die vom Service unterstützte Version wird automatisch ermittelt, der Wert sollte also nur gesetzt werden, wenn Version 1 oder 2 erzwungen werden muss. |
||
keep-alive |
yes (default) oder no [seit v4.0.5 R19503] Achtung : Die Einstellung no ist nur bei Verbindungen mit sehr langen Antwort- und Transferzeiten und nur bei neueren Windows-Betriebssystemen auf der Serverseite nötig. Die interne TCP-Verbindung wird hier bei jedem Datenpaket neu aufgebaut. Das führt zwar zu einer sichereren SOAP-Verbindung - aber die Verbindung kann dadurch bis zu 6x langsamer werden! Achtung II : Werden Verbindungen server-seitig getrennt (z.B. nach einer gewißen Zeit ohne weitere Requests) muß die Einstellung no auch ab Mac OS Mojave gesetzt werden. Die Security-Prüfungen des Betriebssystems bei der Wiederaufnahme einer server-seitig getrennten Verbindung führen hier leider zum sofortigen Programmende. |
||
use-ie-options |
no (default) oder yes [seit v4.1 R23232] Die Einstellung hat nur unter Windows eine Bedeutung. Unter Mac OS X und Linux wird sie ignoriert. Hier die Beschreibung des Autors Robert van Engelen: The WinInet plugin for gSOAP enables client applications (not servers) to communicate through Microsoft's WinInet API on Windows. This offers all of the advantages of WinInet-managed internet access through the Internet Options control panel of Windows, such as HTTP (proxy) authentication, TLS/SSL, and HTTP compression. Therefore, "if IE works, gSOAP works. since these options are shared by IE". Siehe https://www.genivia.com/doc/wininet/html/index.html für Details. |
||
Timeouts | Verbindungs- und Anfrage Timeouts | ||
login-timeout |
SOAP/Pubserver Timeout für Verbindungsaufbau und Login in Sekunden, Standard 5 Sekunden HTTP und AEM Timeout für den Verbindungsaufbau, Standard 3 Sekunden Die Einstellung wird bei aktiver HTTP- oder AEM-Verbindung auch für Web-Bilder verwendet. Wurde mit prefs::set_urllink_timeout ein anderer Wert eingestellt, wird diese Zeit als Timeout für den Verbindungsaufbau verwendet. |
SOAP/PubServer HTTP AEM |
|
request-timeout |
Request timeout in Sekunden, standardmäßig Mac: deaktiviert, Windows: 3600. In Windows InDesign® Server Umgebungen kann es Sinn machen, einen höheren Wert einzustellen, falls sehr aufwändige Generierungen mit Laufzeiten > 1h unterstützt werden müssen. Leider ist es auf Windows-Systemen NICHT möglich, Request-Timeouts komplett zu deaktivieren, daher muss der Wert ausreichend hoch gesetzt werden. Die Einstellung wird bei aktiver HTTP- oder AEM-Verbindung auch für Web-Bilder verwendet. |
||
Protokoll | Protokoll der Datenübertragung für CURL-Aufrufe | ||
ip-resolve |
Ermöglicht die Auswahl, welche Art von IP-Adressen bei der Auflösung von Hostnamen verwendet werden sollen. Dies ist nur bei der Verwendung von Hostnamen interessant, die Adressen mit mehr als einer Version von IP auflösen. Die zulässigen Werte sind:
Die Einstellung wird auch von Web-Bilder verwendet, wenn eine HTTP- oder AEM-Verbindung aktiv ist und die Bild-Adresse (URL) zu dieser Datenquelle zeigt. |
HTTP AEM |
|
update-protocol |
Welches Protokoll soll beim Upload verwendet werden? Die Angabe ersetzt bei Uploads den Protokollnamen der URL, also z.B. ftp://www.hi13.de/aaa.jpg statt http://www.hi13.de/aaa.jpg. Gültige Werte sind:
|
HTTP | |
Header | Feinsteuerung der SOAP Header ( notwendig für einige .Net Service Implementierungen) | ||
http-multipart-type |
SOAP 1.1: application/xop+xml; charset=utf-8 SOAP 1.2: application/soap+xml; charset=utf-8 |
SOAP/PubServer | |
http-multipart-start-info |
SOAP 1.1: text/xml; charset=utf-8 SOAP 1.2: application/soap+xml; charset=utf-8 |
||
soap-multipart-type |
SOAP 1.1: application/xop+xml; text/xml; charset=utf-8 SOAP 1.2: application/xop+xml; charset=utf-8; type="application/soap+xml" |
||
http-type |
SOAP 1.1: text/xml; charset=utf-8 SOAP 1.2: application/soap+xml; charset=utf-8 |
||
soap-type |
SOAP 1.1: text/xml; charset=utf-8 SOAP 1.2: application/soap+xml; charset=utf-8 |
||
SSL | Einstellungen zur SSL Verbindungsvalidierung | ||
ca-file |
Pfad zu einer PEM kodierten Zertifikatsdatei. Ins System importierte Zertifikate werden von der in unsere SOAP Bibliothek eingebundenen OpenSSL Implementierung nicht unterstützt, daher können eigene Zertifikate über die ca-file Option eingebunden werden. Ist diese Option leer oder nicht definiert, wird das Serve Zertifikat nicht verifiziert. Zertifikate liegen häufig DER kodiert vor, zur Umwandlung in ein PEM Zertifikat kann das Terminalprogramm openssl verwendet werden, z.B. openssl x509 \ Eine Zertifikatsdatei kann mehrere Zertifikate enthalten, jedes Zertifikat beginnt mit -----BEGIN CERTIFICATE----- und endet mit -----END CERTIFICATE-----. Die Pfadangabe kann die für das File-Objekt definierten Platzhalter ($DESKTOP, $PLUGINS etc.) enthalten. Achtung: Die SSL Umgebung wird für jede Anwendung einmalig initialisiert, daher muss nach Änderung de ca-file Angabe InDesign® bzw. InDesign® Server neu gestartet werden. Eingelesen werden die Zertifikate allerdings erst beim Verbindungsaufbau - und zwar jedesmal. Daher werden Änderungen der Zertifikatsdatei auch ohne InDesign®-Neustart beim nächsten Verbindungsversuch sofort wirksam. [Seit v4.0.5 R20471] Ist keine Zertifikatsdatei angegeben, wird automatisch versucht, die Datei werkii/certs.pem des aktuellen im Preferences-Ordner ($PREFS) des Benutzers zu laden. |
SOAP/PubServer | |
Failover | Fehlerbehandlung | ||
failover-trap |
Nur implementiert für Services, die auf der neueren Service-Spezifikation (aka Version 2) basieren Mit der Angabe Zweck ist in der Regel die bedingte Wiederholung von SOAP Anfragen bei bestimmten Fehlern. Dabei wird davon ausgegangen, dass Fehler auf HTTP Ebene - wie in SOAP üblich - auf Kommunikations-Ebene auftreten, die Anfrage semantisch also in Ordnung ist (oder sein mag), eine einfache Wiederholung also durchaus erfolgreich sein kann. Folgende Routinen stehen zur Fehlerbehandlung zur Verfügung:
Allgemeines Format der Definition ist: Status Code(s) Regel(n)
failover-trap=[ ... ]:retry=3,sleep=500,log Bis zu 3 mal Wiederholen, vor jeder Wiederholung 500 Millisekunden warten und für die Wiederholungen das SOAP Log aktivieren
Vollständiges Beispiel:
failover-trap=500..599:retry=3,log Achtung I: bitte beachten Sie die Notation akribisch. Fügen Sie keine weiteren Leerzeichen, Punkte oder sonstige Angaben ein. Es wird weder garantiert, dass eine ungültige Syntax verarbeitet werden kann - im schlimmsten Fall kann diese zum Programmabsturz führen - noch, dass durch abweichende ltige Syntax erreichtes Verhalten in zukünftigen Versionen reproduzierbar ist. Achtung II: Regeln werden in der Reihenfolge der Definition ausgeführt. Beachten Sie die daraus folgenden Unterschiede etwa der beiden folgenden Angaben: Hinweis: Die beiden folgenden Definitionen sind äquivalent. |
SOAP/PubServer |
Der Datenverkehr von SOAP- und PubServer-Verbindungen kann in Logfiles mitgeschnitten werden. Informationen dazu finden Sie hier.
Verbindungen zu einem Adobe Experiance Manager® (AEM) werden durch ein einleitendes aem@ vor der Server-Adresse gekennzeichnet und müssen am Ende den verwendeten Port (Default ist 4052) angeben.
Hier ein Beispiel einer AEM-Adresse (URL) im Login:
aem@https://192.168.0.206:4052
Die Verbindung zum AEM setzt die Installation eines XML-Offline-Ordners in der AEM voraus. Dieser Ordner kann an beliebiger Stelle in der AEM liegen und muss als vollständiger Pfad im Projekt des Logins angegeben werden .
Angenommen, die priint-Konfigurationsdaten befinden sich im Ordner priint/project_1 der AEM-Assets. Da der Asset-Pfad selbst /content/dam bzw. /api/assets lautet, geben Sie als Projekt einen der beiden folgenden Pfade an:
/contest/dam/priint/project_1
/api/assets/priint/project_1
Der Aliasname $COMETDATA am Beginn von Dateipfaden zeigt auf den aktuellen XML-Ordner, in AEM-Verbindungen also die Adresse (URL) der AEM plus der Projekt-Angabe des Logins.
Aus den obigen Angaben von Adresse (URL) der AEM und Projekt ergibt sich damit für $COMETDATA
https://192.168.0.206:4052/api/assets/priint/project_1
Hinweis: Wenn Ihre Bildplatzhalter nur Bilder laden, die innerhalb des XML-Ordners liegen und die Bildpfade mit $COMETDATA beginnen, können Bildplatzhalter unverändert auch aus der AEM verwendet werden. Beachten Sie aber bitte, dass Bilder für Web-Bilder ausschließlich aus den Assets des AEM geladen werden können. Befindet sich Ihre Konfiguration an anderer Stelle der AEM, sollten Bildverweise mit einem $ALIAS eingeleitet werden, den Sie in der Palette Einstellungen defnieren müssen.
Wie oben bereits erwähnt, muß in den AEM-Assets ein XML-Ordner mit Konfigurationsdaten für priint:comet liegen. Dafür kann ein gewönhlicher XML-Offline-Ordner verwendet werden.
Hier finden Sie einen XML-Ordner mit allen nötigen Dateien aber ohne weitere Daten. Der Ordner ist bereits so konfiguriert, dass Asset-Bilder per Drag&Drop in InDesign®-Dokumente gezogen werden können (siehe hier). Schön wäre es, man könnte diesen Ordner direkt auf das Browser-Fenster der AEM-Assets ziehen - aber leider wird das Platzieren ganzer Ordner von AEM bisher nicht unterstützt - Dateien und Unterordner müssten also manuell eingefügt bzw. angelegt werden. Nicht sehr verlockend. Wir haben deshalb eine Importdatei vorbereitet, die den Import automatisiert :
Hier finden Sie eine ausführliche Beschreibung, wie Drag and Drop von Bild-Assets individuell angepasst werden kann.
[Seit v4.1.6 R26580] Der Zugriff auf priint:comet XML-Offline Datenordner kann auch Online erfolgen. Legen Sie dazu den Datenordner unter einer beliebigen Internet-Adresse ab. Die Verbindung zum Datenordner wird durch folgende Angaben im Login-Dialog hergestellt:
Wert | Beschreibung | Beispiel | |
Service | xml@URL |
xml@ gefolgt von der vollständigen Adresse (URL) der Website |
xml@http://www.hi13.de |
Benutzer/Passwort |
Öffentlich zugängliche Websites können ohne Login-Angaben verwendet werden. Ohne Angabe von Benutzername und Passwort haben Sie aber lediglich Leseberechtigung, es können keine Daten geschrieben werden. Sie können in diesen Fällen also keine Templates anlegen oder ändern und keine Skripte editieren. |
||
Sprache | Bleibt leer | ||
Zeichensatz | UTF8 | ||
Projekt | Ordnerpfad |
Vollständiger Pfad des Datenordners unterhalb der URL |
/xmldata-tutorial |
Lokale Verweise innerhalb des Datenordners werden lokal zum angegebenen Projekt-Ordner der URL aufgelöst.
Hinweis: Web-Bilder benötigen in der Regel einen Dateipfad des Zieldokumentes. Um Web-Bilder laden zu können, muß das Zieldokument also mindestens einmal gesichert worden sein. Hier finden Sie Hinweise zur Konfiguration des Ablageortes von Web-Bildern.
Ein Beispiel für einen vollständigen XML Online Ordner finden Sie hier. Der XML-Ordner ist so konfiguriert, dass Web-Bilder im Ordner $DESKTOP/URL Images abgelegt werden.
xml@http://www.hi13.de/xmldata-tutorial
Die Konfiguration von XML-Online-Verbindungen erfolgt wie bei SOAP- und PubServer-Verbindungen in der Datei soapflags.ini. Folgende Angaben werden unterstützt:
Option | Werte | |
HTTP | Einstellungen für XML Online Verbindungen | |
connect-timeout |
Timeout zum Herstellen der Verbindung Angabe in Millisekunden Default: 1500 msec |
|
request-timeout |
Timeout zum Übertragen der Daten Angabe in Millisekunden Default : Unbegrenzt |
|
update-protocol |
Welches Protokoll soll zum Upload von Daten verwendet werden? Folgende Angaben werden unterstützt:
Default : inherited |
Das Plugin unterstützt alle drei Verbindungsarten XML Offline, ODBC und Internet (SOAP, PubServer, AEM und XML Online).
[Ab v4.0.5 R16600, EXPERIMENTELL] Aus Datenverbindungen erhaltene Daten können aufgezeichnet werden. Bei aktivierter Datenaufzeichnung werden auch alle verwendeten Skripte, Templates, ... und alle Anweisungen an die priint.comet Javascript-Schnittstelle (app.comet Scripting DOM) aufgezeichnet. Bidldateien, die über priint.comet Funktionen (z.B. frame::image) eingesetzt werden, werden ebenfalls mit gesichert.
Die Datenaufzeichnung enthält damit alle nötigen Daten um die gleichen Schritte wie bei der Aufzeichnung auch ohne Datenquelle ausführen zu können. Dazu müssen Sie sich eine genaue Beschreibung der durchgeführten Arbeitsschritte bei der Dateiaufzeichnung geben lassen. Ausgeführte Javascriptanweisungen der app.comet Scripting DOM werden in der Datei synopsis.jsx protokolliert. Im Serverfall genügt es also in der Regel, diese Datei auszuführen.
Aufgezeichnete Daten können kundenspezifische und sensible Daten enthalten! Bitte beachten Sie bei der Weitergabe aufgezeichneter Daten die jeweils gültigen Datenschutz-Bestimmungen!
Bitte beachten Sie: Das Playback-Feature ist ausdrücklich nicht freigegeben für Produktiv-Systeme. Die Datenaufzeichnug dient ausschließlich zur Entwicklung und Fehlersuche. Beachten Sie bitte auch die unten beschriebenen Einschränkungen.
In InDesign® Desktop wird der Playback-Modus im Login-Dialog eingestellt. Dazu öffnen Sie den Login-Dialog bei gleichzeitig gehaltener SHIFT - Taste. Im unteren Teil des Dialoges kann dann der Modus dann im Popup Dateiablage ausgewählt werden:
Im Playback-Modus (☀) wird kein Passwort benötigt. Der gewählte Modus (☂ oder ☀) wird in den Verbindungsanzeigen der Comet-Paletten angezeigt.
Einige Paletten müssen bereits beim Login Anweisungen ausführen. So wird zum Beispiel das Popup der verfügbaren Templates der Produktrecherche direkt beim Login gefüllt. Unterschiedlich geöffnete Paletten während Aufnahme und Verwendung können daher zu Fehlermeldungen beim Login führen. Diese Fehlermeldungen können Sie in der Regel ignorieren.
Als Datenablage wird immer ein Unterordner des aktuellen Datenordners $XCACHE/ID_NN.M/XDATA verwendet. Der Name des Unterordners wird automatisch aus den Logindaten ermittelt und entspricht der Verbindungsanzeige in den Comet-Paletten. Um fehlerfreie Dateinamen zu erhalten, werden Doppelpunkte und Slashes in den Verbindungsnamen automatisch durch Unterstriche ( _ ) ersetzt.
Hier ein Beispiel des Pfades eines Playback-Datenordners einer PubServer-Verbindung
admin[PriintDev]@http___172.16.10.123_40080_CometBridge_Comet4Service_deu
Aus diesem Ordnernamen sind die Login-Daten wie folgt zu ermittlen:
In InDesign® Server und comet_pdf wird der Playback-Modus über Programmoptionen festgelegt:
In comet_pdf werden benannte Programmparameter durchgängig mit -- (zweimal Minus )eingeleitet. Die Optionen müssen hier also vollständig --playback und --playbackpath heißen.
Unter InDesign® Server bewirkt die Option record, dass grundsätzlich alle Daten aufgezeichnet werden, unabhägig davon, welche Datenverbindung das Programm gerade verwendet. Im Allgemeinen ist hier besser, gezielt eine bestimmte Datenverbindung in den Playback-Modus zu versetzen, siehe dazu unter Javascript.
In Javascript kann der Playmodus beim Verbindungsaufbau mit app.comet.use im Parameter options festgelegt werden
Hier ein Beispiel für einen direkten Verbindungsaufbau mit Datenaufzeichnung:
var gOptions = app.comet.ping() + ";-1;";
app.comet.use (
"##server:demo;type:odbc_utf8;language:;db:comet_config;client:;",
"demo",
"***",
false,
gOptions+"playback:record;playback-path:/Users/paul/Desktop/abc2;");
Die Datenaufzeichnung enthält jede an die Datenquelle gesendete Abfrage und deren Ergebnisse inklusive aller verwendeten Skripte und Binärdaten wie Templates und Seitentemplates.
ACHTUNG! Die Datenstruktur der aufgenommenen Daten kann sich ändern!
Die sogenannten Panelactions wie z.B. das After-Login Script mit der ID 92 werden in der Datei panelstatements.xml definiert. Achten Sie bei Änderungen in dieser Datei bitte auf korrektes XML. So müssen etwa die Zeicchen < und > mit < bzw. > kodiert werden.
Aktionen von Platzhaltern, Gestaltungsregeln etc. können nach dem Verbindungsaufbau in InDesign® geändert werden. Die Änderungen werden in den Datenordner zurückgeschrieben. Alternativ können Sie die Aktionen auch direkt im Unterordner actions editieren.
Templates können nach dem Verbindungsaufbau in InDesign® geändert werden. Die Änderungen werden in den Datenordner zurückgeschrieben. Alternativ können die Template-Dateien auch direkt in den Unterordnern pageitems/data und pagetemplates/data geändert werden.
Anweisungen und deren Ergebnisse werden jeweils in eigenen Ordnern abgelegt. Die Ordner enthalten in CMD.txt die komplette Anweisung und für jede Ergebniszeile des Aufrufes eine nummerierte Textdatei mit den Spalten des Ergebnisses:
Als Ordnername wird der MD5-Hash der Anweisung verwendet. In _recording.log finden Sie eine vollständige Liste aller Anweisungen und ihrer MD5-Hashs.
Um gezielt das Ergebnis einer Anweisung A einer Aktion (oder aus dem Logfile) zu verändern, gehen Sie also wie folgt vor:
Bei der nächsten Ausführung der Anweisung A werden die geänderten Ergebnisse verwendet werden.
Alle von InDesign® ausgeführten Javascriptbefehle der priint:comet Scripting DOM werden in die Datei synopsis.jsx geschrieben und können von dort wieder ausgeführt werden. Die Datei befindet sich im jeweiligen Datenorder der Recording-Session:
Bei Verwendung von InDesign® Server durch einen Publishing Server kann die Datei synopsis.jsx ein Vielzahl von Aufrufen wie app.comet.ping und app.comet.getDocumentList enthalten. Diese Anfragen werden vom Publishing Server gesendet um den aktuellen Status der Anwendung zu erfragen und können in der Regel aus der Datei entfernt werden.
So verwenden Sie eine Javascript-Datei (jsx) in InDesign®:
Bitte beachten Sie folgende einschränkende Hinweise für die Verwendung aufgezeichneter Daten:
CoreServlett wird in der Reader-Version von priint.comet verwendet.
Das Plugin implementiert die Scriptsprache cscript und stellt die Basisfunktionalitäten für alle WERK II Plugins zur Verfügung.
Das Plugin liegt in mehreren Varianten vor. Es darf nur eins der Comet-Plugins installiert sein. Werden mehrere Varianten von Comet installiert, wird beim Start von InDesign® eine Fehlermeldung gezeigt, dass es zu Konflikten beim Laden der Plugins gekommen ist. Entfernen Sie in diesem Fall zuviel installierte Varianten von Comet-Plugins und starten Sie InDesign® erneut.
CometXML ist die Standard-Variante des Plugins für die Desktop-Version von InDesign®.
Die Namens-Endung XML steht nicht für die unterstützte Datenverbindung, sondern dafür, dass in dieser Variante speziell definierte Skripte in der XML-Struktur des Dokumentes ausgeführt werden können. Mehr dazu siehe hier.
Das Plugin Comet++ bietet die Möglichkeit einer Stapelverarbeitung von Dokumenten.
Aufgrund der Lizenzbestimmungen von Adobe darf InDesign® Desktop nicht mehr für Stapelverarbeitungen verwendet werden. Sie dürfen dieses Plugin also nur noch im Serverbetrieb zur Stapelverarbeitung einsetzen.
Weitere Infos zum Plugin finden Sie hier.
Reader-Version des Plugins Comet. Das Plugin hat keine eigene Palette und keine eigenen Menüs.
In der Palette Front Row können häufig benutzte Skripte als Buttons abgelegt werden. Mehr Infos dazu finden Sie hier.
Das Plugin stellt die Palette Einstellungen zur Verfügung.
Die Palette hat zwei Aufgaben:
Das Plugin hat keine eigene Oberfläche und keine Menüs. Es stellt wichtige Funktionen für alle anderen priint:comet Plugins zur Verfügung und muss unbedingt installiert sein.
Über das Plugin Designate können Sie den Dokumentbereich einschränken, in dem Platzhaltern bearbeitet werden können. Es fügt in die InDesign®-Werkzeugpalette ein Button ein, mit dem die gewünschte Einschränkung festgelegt werden kann
Unter dem Button für den Dokumentbereich werden drei weitere Buttons bereitgestellt:
Mit diesen Buttons können Sie die Aktionen zum Änderungsmanagement ausführen (in dieser Reihenfolge)
Mit den Aktionen können teilweise große Änderungen gemacht. Insbesondere ein vollständig konfiguriertes Zurückschreiben der Daten in den Datenbestand kann dort viele Änderungen machen. Sie müssen dehalb zum Auslösen der Aktionen in jedem Fall die Alt-Taste festhalten.
Das Zurückschreiben in den Datenbestand kann von den priint:comet Plugins nicht mehr rückgängig gemacht werden.
Die Aktionen können auch über die Paletten Platzhalter und Produktrecherche ausgeführt werden. Entsprechende Einträge befinden sich in den Palettenmenüs.
Das Plugin stellt im Menu Bearbeiten des InDesign®-Hauptmenüs und den entprechenden Kontext-Menüs einige Comet-spezifische Copy/Paste-Erweiterungen zur Verfügung.
Besondere Vorsicht ist beim normalen Copy/Paste von Textplatzhaltern geboten: Dadurch, dass die Platzhalter der Zwischenablage beim Einsetzen natürlich ebenfalls übernommen werden, wird der Platzhalter an der Einsetzstelle in zwei Teile geteilt:
Die folgende Tabelle beschreibt alle zusätzlichen Menüs:
Menü |
Beschreibung |
Einfügen in Text |
|
Einfügen ohne Platzhalter |
Der Text der Zwischenablage wird ohne die darin mglw. enthaltenen Platzhalter in die aktuelle Textauswahl eingefügt. |
Einfügen in Platzhalter |
Wie Einfügen ohne Platzhalter, aber der Platzhalter der Einfügeposition wird auch auf den eingefügten Text angewendet. |
Unformatiert einfügen in Platzhalter |
Wie Einfügen in Platzhalter, aber Formatierungen der Zwischenablage werden ignoriert. |
Rahmen einfügen. Enthält die Zwischenablage keinen Rahmen, wird ein neuer Rahmen mit dem Text der Zwischenablage angelegt. |
|
Einfügen als neue Cometgruppe |
Die Rahmen der Zwischenablage werden nach dem Einsetzen als neue Cometgruppe zusammengefasst. Comet-Untergruppen werden dabei aufgelöst. |
An Originalposition einfügen als neue Cometgruppe |
Die Rahmen der Zwischenablage werden an ihrer originalen Seitenposition eingesetzt und als neue Cometgruppe zusammengefasst. Comet-Untergruppen werden dabei aufgelöst. Der Befehl ist ab v4.1.8 R28925 verfügbar. Werden Dokumentrahmen aus älteren Plugin-Versionen nicht richtig platziert, muß vor dem Kopieren einmal die Rahmenposition der Originalrahmen geändert werden. Am einfachsten errreichen Sie das, indem Sie vor dem Kopieren in die Zwischenablage einmal die Tasten ▲ und ▼ drücken. |
Einfügen mit analogen Cometgruppen |
Die Rahmen der Zwischenablage werden eingefügt und entsprechend der Originalrahmen zu neuen Cometgruppen zusammengefaßt. |
An Originalposition einfügen mit analogen Cometgruppen |
Die Rahmen der Zwischenablage werden an ihrer originalen Seitenposition eingefügt und entsprechend der Originalrahmen zu neuen Cometgruppen zusammengefaßt. Der Befehl ist ab v4.1.8 R28925 verfügbar. Werden Dokumentrahmen aus älteren Plugin-Versionen nicht richtig platziert, muß vor dem Kopieren einmal die Rahmenposition der Originalrahmen geändert werden. Am einfachsten errreichen Sie das, indem Sie vor dem Kopieren in die Zwischenablage einmal die Tasten ▲ und ▼ drücken. |
Comet-Funktionen |
|
Comet-Text einfügen |
Einfügen des Textes der Zwischenablage mit Comet-Funktionalität. Der Text darf Comet-TaggedText sein, also z.B. mit %!TT oder %!TT_html_ beginnen. Der Menübefehl ist hilfreich zum Testen von Comet-formatiertem Platzhaltertext oder -tabellen. |
Comet-Bild einfügen |
Der Text der Zwischenablage wird als Bildpfad interpretiert und das Bild in jeden Rahmen der aktuellen Rahmenauswahl eingefügt. Der Befehl ist hilfreich zum Testen von Bildplatzhaltern. Der Bildpfad darf mit einem definierten Aliasnamen, z.B. $COMETDATA, beginnen. Enthält die Zwischenablage eine Web-Adresse (URL), z.B. http://www.hi13.de/aaa.jpg, wird automatisch ein Web-Bild erzeugt. Enthält ein Zielrahmen noch kein Bild, wird das Bild skaliert und zentriert in den Rahmen eingefügt. Hat ein Rahmen bereits ein Bild, werden die aktuellen Bildeinstellungen übernommen. |
Bildpfad kopieren |
Der Pfad des ersten gefundenen Bildrahmens der aktuellen Rahmenauswahl wird in die Zwischenablage kopiert. |
Mit Hilfes des Menüs Bearbeiten -> Tastaturbefehle.... können den Befehlen eigene Tastaturkürzel zugewiesen werden. Sie finden den Tastaturbefehl wie alle anderen WERK II Menübefehle im Produktbereich priint.comet.
Das Plugin stellt die Palette Comet Tests zur Verfügung.
Comet Tests dient dazu die Funktionaliät von beliebigen Testfällen beim Releasewechsel verschiedener Comet-Versionen sicherzustellen.
Weitere Informationen zur Anwendung erhalten Sie hier.
Für jede neue Version der priint:comet Plugins erhalten Sie eine 30-tägige Testphase für eine Basislizenz. Sie verfügen damit währende der Testphase über den vollen Leistungsumfang der Plugins. Lediglich der Produktaufbau ist auf maximal eine Doppelseite beschränkt. Die Testphase beginnt automatisch mit dem ersten Start der Plugins und kann nicht unterbrochen werden.
Die Testphase wird nur einmal pro InDesign- und priint:comet-Plugins-Version gewährt und kann auch von unserem Help-Desk nicht zurückgesetzt werden.
Ohne gültige Lizenz und während der Testphase werden beim ersten Verwenden einer priint-comet Funktionalität alle geöffneten und alle danach geöffneten oder neuen Dokumente mit dem Wasserzeichen priint.com versehen. Nach Neustart von InDesign® wird das Anlegen der Wasserzeichen bis zum nächsten Verwenden einer priint-comet Funktionalität wieder ausgesetzt.
Das Wasserzeichen erscheint auch in den Dokument-Previews und in den PDFs der Dokumente.
Sobald die Plugins lizensiert sind, wird das Wasserzeichen nach einem Neustart von InDesign® beim Öffnen der Dokumente automatisch entfernt.
Folgende Lizenzen sind für die priint:comet InDesign Plugins verfügbar:
Bitte geben Sie im erscheinenden Bestelldialog unbedingt eine gültige E-Mail-Adresse zum Zurücksenden an. Mit dem Sichern-Button des Dialoges wird noch keine Bestellung gesendet. Es wird lediglich eine gültige Bestelldatei erzeugt.
Beachten Sie bitte, dass zeitlich unbegrenzte Lizenzen in aller Regel bei der Bestellung auf 3 JAHRE BEGRENZT werden!
Diese Begrenzung dient ausschließlich der Qualitätssicherung, die es mglw. erforderlich macht, Software regelmäßig zu aktualisieren.
Die Begrenzung verringert keinesfalls die Gültigkeitsdauer erworbener Lizenzen
und Sie erhalten jederzeit neue Anschluß-Lizenzen.
Vor dem Ablauf einer Lizenz werden Sie automatisch gewarnt.
Die Lizenzbestellung senden Sie bitte an license@priint.com. Sie erhalten dann schnellstmöglich die entsprechende Lizenz.
Im Gegensatz zur Erstbestellung einer Lizenz für den priint:comet gibt es einen zusätzlichen Schritt für die Erneuerung der Lizenzschlüssel: Wenn Sie die neue Bestelldatei an license@priint.com senden, senden Sie uns doch bitte die alte Lizenzdatei im Anhang mit. Die Datei wird für die Erstellung der neuen Lizenzschlüssel benötigt. Wenn die alte Lizenzdatei nicht mehr vorhanden ist (z. B. durch einen Hardwareabsturz), kann die neue Lizenz trotzdem erstellt werden. Dies nimmt jedoch mehr Zeit in Anspruch.
Nach Erhalt der Lizenzdatei können Sie die Lizenz mit dem folgenden Menübefehl installieren:
Lizenzen für InDesign® Server können Sie im Ordner werkii/licenses/InDesign Server/vNN (mit NN = Versionsnummer Ihres InDesign® Servers) Ihrer Voreinstellungen ($PREFS) ablegen. Die Installation muß manuell gemacht werden.
Lizenzen für die prrint:comet InDesign® Plugins werden pro Rechner, InDesign®-Version und Comet-Version vergeben. Um eine Lizenz global für alle Benutzer des Rechners verfügbar zu machen, installieren (kopieren) Sie die Lizenz an einen der folgenden Orte (Für das Kopieren der Lizenzdatei sind Admin-Rechte nötig!):
Vor dem Ende der Testphase und von zeitlich begrenzten Lizenzen werden Sie beim ersten InDesign®-Start wie folgt gewarnt:
Tage vor Ablauf | Warnung | Bestelldialog |
14 - 8 | Einmal | Nein |
7 - 3 | Einmal täglich | Ja |
2 - 0 | Jeder Programmstart | Ja |
Die Gültigkeitsdauer einer Lizenz können Sie zusätzlich jederzeit über die About-Menüs der Plugins erfahren:
Platzhalter sind die zentralen Objekte der priint:comet Plugins. Sie stellen eine bidirektionale Verbindung zwischen Dokument und Datenbestand dar. Es wird zwischen zwei Grundtypen von Platzhaltern unterschieden. den Textplatzhaltern und den Rahmenplatzhaltern.
Platzhalter können verschiedene Aktionen ausführen:
Aktionen können direkte Anweisungen oder cScript-Skripte sein.
Direkte Anweisungen müssen in der Sprache der aktuellen Datenverbindung geschrieben sein:
Skripte werden in cScript geschrieben.
Mit einer Partner-Lizenz können Aktionen direkt im InDesign® editiert werden. Verwenden Sie dazu die Palette Platzhalterwerte.
Einige Aktionen sind spezielle Skripte z.B. für eigene Gestaltungregeln. Diese Skripte können ebenfalls mit Hilfe der Palette Platzhalterwerte editiert werden. In den meisten Fällen werden diese Skripte zudem an den entsprechenden Stellen in Popup-Menüs gezeigt und können von dort aus ebenfalls editiert werden, indem Sie bei der Auswahl des Menüeintrages die ALT-Taste festhalten.
In PubServer-Verbindungen können Skripte nicht zurückgeschrieben werden. Sie können die Skripte aber trotzdem editieren - die Skripte werden dabei aber lediglich im aktuellen Cache geändert. Sie können auf diese Weise Änderungen lokal testen. Lokale Änderungen gehen beim Trennen der Verbindung verloren!
Im Datenbank-Fall (ODBC) werden Skripte in der Tabelle actions gesichert.
Unter XML-Offline und SOAP werden Aktionen in der Datei actions.xml defniert. Der eigentliche Skriptcode (bzw. die eigentliche Anweisung) werden im Ordner actions neben der Datei actions.xml in Einzeldateien aufbewahrt und haben als Namen die ID der Aktion mit der Endung crpt.
Um die Aktion eines Platzhalters in XML-Offline oder SOAP auszuführen, ist es nicht nötig, einen entsprechenden Eintrag in actions.xml zu definieren. Ist die Datei actions/1401.crpt vorhanden, kann die Aktion 1401 auch ausgeführt werden.
Um Ihre Skripte auch in XML-Offline-Verbindungen zu schützen, werden die Skripte hier verschlüsselt (daher die Endung crpt). Die Inhalte der Aktionen sind hier also nicht direkt lesbar.
[ab v4.1.6 R25153] Mit dem Hinweis
#pragma plain
am Beginn der Aktion können Sie festlegen, dass Aktionen nicht verschlüsselt werden.
Bitte beachten Sie:
Der Schlüssel #pragma plain darf nur in Aktionen von XML-Offline verwendet werden.
Zwischen #pragma und dem Wort plain muß genau ein Leerzeichen stehen.
Zur Migration eines bestehenden actions-Ordners in unverschlüsselte Skripte können Sie das Programm bin/crpt mit der Zusatzoption -plain verwenden:
> crpt your_xmldata_folder/actions -plain
Achtung: Die Option -plain überschreibt Ihre crpt-Dateien. Machen Sie daher vorher eine Sicherungskopie des Ordners!
Das Plugin stellt die Funktionalität für Textplatzhalter und ihre Darstellungen im Dokument zur Verfügung. Es besitzt keine eigene Benutzeroberfläche.
Das Plugin stellt die Funktionalität für Rahmen-Platzhalter und ihre Darstellungen im Dokument zur Verfügung. Es besitzt keine eigene Benutzeroberfläche.
Über die Palette Platzhalter können Texte und Bilder von Dokumenten mit Platzhaltern versehen werden, die diese Dokumentteile mit datenbankgestützten Aktionen verbinden. Die Platzhalter beinhalten insbesondere die folgenden Informationen
Platzhalteraktionen werden als einfache Anweisungen implementiert. Für komplexere Aktionen kann die integrierte Skriptspache cScript verwendet werden. Zur Pflege der Platzhalteraktionen verwenden Sie das Programm priint:workbench.
Mit einer Partner-Lizenz können Platzhalteraktionen und andere Skripte auch direkt aus InDesign® geändert werden. Verwenden Sie dazu die Palette Platzhalterwerte.
Einfache Anweisung zum Laden eines Produktnamens
select value_string
from
comet_attribute
where
keyname = 'Name'
and infoobject_id = <StringID>
and lang = <layer>
and active = 1
Eine vollständigen Beschreibung der Werte, die Markierungen enthalten, finden sie in der Beschreibung des Plugin Platzhalterwerte. Die Werte der Platzhalter können auch über cScript gesetzt werden, siehe dazu die Funktion placeholder::change_tags.
Die Verknüpfung von Texten und Rahmen mit Datenbankwerten geschieht immer in zwei Schritten:
Beim automatischen Seitenaufbau oder beim Import von Text mit Platzhaltern werden diese beiden Schritte automatisch erledigt.
Über die sogenannte Individualisierung können Serienbriefe von Dokumenten erstellt werden. Die Erstellung von Serienbriefen eines Dokumentes wird gestartet mit dem Menü
Platzhalter-Palette -> Fly out -> Individualisierung ...
Die Serialisierung wird in drei Schritten gemacht:
Serienbriefdaten müssen in XML-Dateien abgelegt sein. Das XML-Format der Dateien ist dabei beliebig, die einzige Anforderung ist valides XML.
Der erste Datensatz der Datei kann Angaben zu den den einzelnen Dokumenten der Serie enthalten und muss dann preferences heißen. Die Preferences sind optional, fehlen sie, werden die serialisierten Dokumente neben das Original gelegt und durchnummerniert. Folgende Elemente des preferences-Element werden ausgewertet (und müssen direkte Inhalte haben):
Hier ein Beispiel für ein Serienbrief-Datendatei mit Voreinstellungen
<?xml version="1.0" encoding="utf-8"?> <persons> <!-- Generell Settings --> <preferences> <destname>#1 #2 #3</destname> <destpath>$DESKTOP/serials</destpath> <!-- DOCPATH, MYPATH, full path --> <postaction>440000739</postaction> </preferences> <!-- Repeating Data Sets --> <person> <id>1</id> <title>Frau Dr.</title> <firstname>Barbara</firstname> <surname>Seidel</surname> <email>paul@werk-ii.de</email> <sessions>1 10 14 20 24</sessions> </person> <person> <id>2</id> <title>Herr</title> <firstname>Paul</firstname> <surname>Seidel</surname> <email>paul@priint.com</email> <sessions>3 8 17 26 31</sessions> </person> </persons>
Zur Unterstützung der Serienbrief-Funktion gibt es drei spezielle Platzhalter. Die Festlegung des Platzhltertyps wird im Attribut type der Platzhalterdefinition gemacht:
Typ | Icon | placeholder.xml | Tabelle placeholder |
Serien-Text | ![]() |
serialtext | 10 |
Serien-Rahmen | ![]() |
serialframe | 11 |
Serien-Vorlage | ![]() |
serialpageitem | 12 |
Hier ein Screenshot von drei verschiedenen Serienbrief-Platzhaltern:
Das Laden der Serienbriefplatzhalter ist auf die Anwendung Serienbrief zugeschnitten und etwas anders als in "normalen" Platzhaltern.
Sie erhalten beim Laden eines Serienbrief-Platzhalters jeweils einen Datensatz der Datendatei. Im Feld Datenindex (dort, wo normalerweise die ID des Lade-Aktion steht) tragen Sie die (1-basierte) Nummer eines Unterlementes dieses Elementes an. Dieses Element muß einen direkten Wert haben, darf also nicht selbst Unterlemente haben.
Im obigen Beispiel würde also die Laden-ID 2 im ersten Datensatz "Frau Dr." ergeben und im "Herr". Mit der ID 3 erhalten Sie "Barbara" resp. "Paul" usw..
Für komplexere XML-Abfragen oder Aufgaben, in denen mehr als nur Text eingesetzt werden muß, setzen Sie die Laden-ID auf den Wert 0 und tragen im Feld Datenskript (dort, wo normalerweise die Sync-ID steht) die ID einer Aktion ein. Diese Aktion muß den aktuellen Wert ermitteln und einsetzen. Der aktuelle Datensatz der Datendatei steht als
XMLNode gData;
im Skript zur Verfügung.
Lies den Text des Elementes email aus dem obigen Beispiel und erzeuge daraus einen QR-Code im Serienbrief.
int main () { char to [4096]; strcpy (to, xmlnode::content_of_child (gData, "email")); if (strlen (to)) image::barcode (gFrame, to, "qrcode", 72, 72, 10, 10); return 0; }
Im zweiten Beispiel sollen bestimmte Absätze des Serienbriefes optisch hervorgehoben werden. Dazu enthäkt dier Datendatei das Element sessions mit den leerzeichen-getrennten Nummern der Absätze.
int main () { int pos = textmodel::start (); int pstart = 0, plen =0; int parnum = 0; int i; char pn [50]; char sessions [5000]; while (pstart < pos) { pstart = textmodel::find_surrounding_paragraph (gFrame, pstart, &plen, 0); pstart = pstart + plen; parnum = parnum +1; } sprintf (pn, "%d", parnum); strcpy (sessions, xmlnode::content_of_child (gData, "sessions")); for (i = 0; i< strtokencount (sessions, ' '); i++) { if (strcmp (strtoken (sessions, ' ', i), pn) == 0) { textmodel::set_parastyle (gFrame, 0, 1, "SessionPlus"); break; } } return 0; }
Platzhalter können in der Palette Platzhalter in einer Baumstruktur angezeigt werden. Platzhalter können zu beliebigen Bereichen zusammengefasst werden.
In v4.0.5 der priint:comet Plugins wird nur eine Hierarchie-Ebene unterstützt.
Ab v4.1 der priint:comet Plugins können Bereiche beliebig tief geschachelt werden. Die Verschachtlung wird automatisch aus den Namen der Bereiche ermittelt. Als "Pfadtrenner" wird das Zeichen ^ verwendet.
Um einem Platzhalter einem Bereich zuzuordnen, gehen Sie wie folgt vor:
In XML- und SOAP-Verbindungen tragen Sie dazu im Attribut <metadata.placeholder.domain> der Datei placeholder.xml den gewünschten Bereich ein.
Das Attribut <metadata.placeholder.domainID> hat unter XML und SOAP keine Bedeutung.
In ODBC-Verbindungen legen Sie den Bereich in der Tabelle domains mit einer eindeutigen ID an. In der Tabelle placeholder setzen Sie dann im Attribut domainID die ID des gewünschte Bereich ein.
Im Gegensatz zu Bereichen von Platzhaltern, die im Datenpool definiert werden, können Gruppen von Platzhaltern lokal und individualisiert angelegt werden. Gruppen von Platzhaltern fassen häufig benutzte Platzhalter zusammen und können mit einem Mausklick alle gleichzeigig mit einem Auge markiert werden. Markieren Sie zum Anlegen einer Gruppe eine beliebige Anzahl von Platzhaltern mit einem Auge und wählen Sie den Eintrag "Neue Gruppe" des Popupmenüs "Bereich". Sie werden nach Name und Farbe für die neue Gruppe gefragt. Für jede Gruppe, in der ein Platzhalter Mitglied ist, wird in der Palette ein kleiner Punkt in der Gruppenfarbe gezeigt :
Wählen Sie eine Gruppe im Gruppen-Popup aus, werden alle Platzhalter dieser Gruppe (und nur diese) mit einem Auge versehen.
Verwenden Sie die Hinweise im Tooltip des Popupmenüs "Gruppe" zur Pflege der Platzhaltergruppen.
XML- und SOAP-Datenpools müssen die Datei placeholdergroups.xml beinhalten bzw. bereitstellen.Die XML-Struktur muss mind. ein 0-Element wie beschrieben enthalten.
<?xml version="1.0" encoding="utf-8"?> <placeholdergroups> <placeholdergroup> <ID>0</ID> <name></name> <user></user> <color></color> <placeholders> <placeholder> <ID>0</ID> </placeholder> </placeholders> </placeholdergroup> </placeholdergroups>
Die Datenbank muss die Tabellen placeholdergroups und placeholdergroupsXplaceholders enthalten. Die Tabellen müssen wie folgt definiert sein:
placeholdergroups | Typ | Beschreibung |
ID | int(11) | Primary Key |
Name | varchar(255) | Gruppenname |
User | varchar(255) | Für alle oder nur für einen spezifischen Benutzer? |
Color | int(11) | interne FarbID |
placeholdergroupsXplaceholders | Typ | Beschreibung |
GroupID | int(11) | |
PlaceholderID | int(11) |
Weitere Hinweise zur Installation der Platzhaltergruppen finden Sie hier.
[seit v4.1 R24442] Mit generischen Platzhaltern kann ein und derselbe Platzhalter so verschiedene Daten wie Farbe, Gewicht, Größe und Preis eines Produktes anzeigen: Welche Eigenschaft der Platzhalter im Dokument anzeigen soll wird im Dokument, nicht in der Datenquelle festgelegt. Dadurch reduziert sich der Aufwand für Programmierung und Pflege der Platzhalter drastisch. Aber auf der anderen Seite können Sie die Bearbeitung der Platzhalter im Dokument nicht mehr auf eine spezielle Ausprägung eines generischen Platzhalters einschränken: Wenn Sie die Preisplatzhalter aktualisieren, werden die Platzhalter für Farbe, Gewicht und Größe, die über den gleichen generischen Platzhalter dargestellt werden, ebenfalls geladen. Generische Platzhalter sind Platzhalter, deren Ausprägung direkt im Dokument festgelegt wird. Diese Lücke wird durch Platzhalter-Varianten geschlossen.
Platzhalter-Varianten können von jeder Ableitung eines generischen Platzhalters gemacht und in der Platzhalterliste angezeigt werden. Mit gesetzter Augen-Markierung werden beim Bearbeiten des Dokumentes nur die Ableitungen des generischen Platzhalters bearbeitet, die exakt der Platzhalter-Variante entsprechen.
Zum Anzeigen der Platzhalter-Varianten aktivieren Sie das Button links oben in Palette.
Aus einem eher technischen Blickwinkel heißt das gesetzte Auge der Abbildung: Variante 1 des Platzhalters 0001 AAA enthält eine Liste von Name/Wert-Paaren. Die Bearbeitung der Dokument-Platzhalter wird auf folgende Platzhalter eingeschränkt:
Varianten von Platzhaltern werden in die Liste der Platzhalter aufgenommen, wenn die Checkbox Varianten anzeigen der Palette aktiviert ist. Sie müssen die Varianten-Ebenen der Platzhalter nicht extra öffnen : Sind die Varianten sichtbar, werden immer alle Varianten angezeigt. Die Varianten werden wie folgt sortiert:
Wird ein Platzhalter im Dokument ausgewählt, wird die passende Variante in der Liste ausgewählt. Zeigt die Liste mehrere Varianten mit den gleichen Einstellungen, wird der unterste Eintrag ausgewählt.
Klicken Sie den Namensteil einer Variante in der Platzhalterliste, wird die Dokumentauswahl mit diesem Platzhalter verlinkt. Alle Einstellungen der Variante werden in den Dokumentplatzhalter übertragen.
Mit dem Button der Platzhalter-Palette können Sie neue Varianten anlegen. So legen Sie eine neue Variante an:
Achtung: Von unkonfigurierten Platzhaltern und Platzhaltern ohne Funktionsvariablen können keine Varianten erstellt werden. Leider ist es sehr rechenaufwendig, schon in der Liste zu erkennen, ob ein Platzhalter Funktionsvariablen in einem seiner Skripte hat - dazu müssten die Platzhalterskripte alle zuerst geladen und untersucht werden. Es gibt daher keine Markierung in der Liste, ob ein Platzhalter Varianten haben kann oder nicht.
Zum Ändern einer bestehenden Variante folgen Sie den Schritten 1-6 der obigen Anleitung und geben als neuen Namen den Namen der Variante an, die Sie überschreiben wollen. Wenn Sie die Beschreibung leer lassen, bleibt dabei die alte Beschreibung erhalten.
Mit einem Trick können Sie die Beschreibung einer Variante ändern. Setzen Sie die Variante irgendow ins Dokument. und folgen Sie dann den Schrittn 3-6 der obigen Anleitung. Geben Sie im Dialog die neue Beschreibung an und bestätigen Sie das Überschreiben.
Wählen Sie gewünschten Varianten mit Klicks neben den (farbig hinterlegten) Namen der Listeneinträge aus und klicken Sie das Löschen-Button der Palette.
Für XML und SOAP-Verbindungen sind keine Installationen nötig. Die für die Platzhalter-Varianten nötige Konfigurationsdatei placeholder_variants.xml wird automatisch angelegt, wenn Sie nicht existiert.
Einzige Bedingung für SOAP- und PubServer-Verbindungen ist, dass der Server das Hochladen der neuen Konfigurationsdatei placeholder_variants.xml erlaubt. Ist das Anlegen neuer Dateien nicht erlaubt, muss eine leere placeholder_variants.xml wie unten beschrieben in der priint:comet-Konfiguration des Servers angelegt werden.
Hier die allgemeine Syntax einer placeholder_variants.xml
<?xml version="1.0" encoding="utf-8"?> <placeholder_variants> <placeholder_variant> <placeholderID>0</placeholderID> <name>0</name> <description></description> <user></user> <definitions></definitions> </placeholder_variant> </placeholder_variants>
Die Datenbank muss die Tabellen placeholder_variants und placeholder_variants_values enthalten. Hier die Tabellebeschreibung in mySQL-kompatibler Syntax:
create table placeholder_variants
(
ID int(10),
placeholderID int(10),
name varchar(4000),
description varchar(4000),
use varchar(4000)
);
alter table placeholder_variants add primary key (ID);
create table placeholder_variants_values
(
placeholder_variants_ID int(10),
type int(10),
name varchar(4000),
value longtext
);
Das Plugin stellt die Palette Platzerhalterwerte zur Verfügung. Die Palette zeigt alle Informationen über den ersten Platzhalter der aktuellen Dokumentauswahl. In der Palette können lokale Einstellungen des Platzhalters geändert werden und die Funktionsvariablen des Platzhalters konfiguriert werden. Mit einer Partner-Lizenz können zusätzlich die Platzhalterskripte editiert werden. Im unteren Fensterbereich können zudem zusätzliche Skripte wie Gestaltungsregeln und Aufbauhilfe-Skripte editiert werden.
Die Werte aller in Schrägschrift beschrifteten Felder können im Dokument geändert werden. Verwenden Sie diese Möglichkeit eher sparsam und nur, wenn Sie in der Entwicklungs- und Testphase sind. Klicken Sie auf um Skripte zu editieren.
Die Werte der Platzhalter können auch über cScript gesetzt werden, siehe dazu die Funktion placeholder::change_tags.
Um vierten Fensterbereich (hier mit der Beschriftung "unbenanntes Objekt" sehen Sie die ID des Objektes, mit dem der Platzhalter verknüpft ist. IDs bestehen immer aus drei Zahlen und einem String.
Für Entwickler-Zwecke können Sie hier die ID in die Zwischenablage kopieren.
Im unteren Fensterbereich können Sie beliebige in Ihrem Datenpool definierte Aktionen editieren. Wählen Sie die Aktion im Popup Aktion aus. Die ID der Aktion wird ins Feld Skript eingetragen. Mit können Sie das Skript editieren. Sie können die ID natürlich auch gleich selbst in das Feld eintragen.
Weitere Infos zum Plugin finden Sie hier.
Seit v4.1
Mit den Plugins können Preflight-Regeln zum Testen der Platzhalter des Dokumentes erstellt und ausgeführt werden. Folgende Plugins werden benötigt:
Achtung: Es wird immer der aktuelle Sync-Status geprüft. Neuberechnungen der Platzhalter-Stati sind aus Performance-Gründen nicht möglich.
Die Definition von Preflight-Regeln zum Prüfen von Platzhaltern wird mit Hilfe des Flyout-Menüs Profile definieren der Palette Preflight gemacht. Sie können wählen, ob Rahmen- und/oder Textplatzhalter geprüft werden sollen. Hier ein Screenshot:
Platzhalter, die einen Status ungleich 1 (also Nicht Okay) haben, werden in die Ergbnisliste des Preflights aufgenommen. In den Informationen zum Fehler finden Sie weitere Angaben zum verknüpften Objekt und dem Platzhalter. Hier ebenfalls ein Screenshot:
Templates stellen neben den Platzhaltern das zweite zentrale Konzept der priint:comet Plugins dar. Templates sind eine beliebige Anzahl beliebig gestalteter Dokumentrahmen. Rahmen und Texte der Templates sind üblicherweise mit Platzhaltern versehen, die nach dem Einfügen ins Dokument mit einem Produkt verknüpft und geladen werden.
Achtung: Templates sind abhängig von der verwendeten InDesign®-Version. Templates, die mit einer höheren Version von InDesign® erstellt oder geändert wurden, können in älteren InDesign®-Versionen nicht mehr verwendet werden. Umgekehrt müssen ältere Templates vor der Verwendung in die aktuelle InDesign®-Version konvertiert werden. Aus Preformance-Gründen sollten Sie beim Wechsel auf eine neue InDesign®-Version daher so bald wie möglich (aber erst wenn alle Arbeitsplätze die neue InDesign®-Version verwenden) die Templates konvertieren.
In der Palette Templates können Templates von Dokumentrahmen und gruppierten Dokumentrahmen verwaltet werden. Die Einträge können über die Palette angelegt, verändert und ins Dokument eingesetzt werden. Templates werden unter anderem in den folgenden Skriptbefehlen verwendet.
Eine ausführliche Beschreibung des Plugins finden Sie hier.
In der Palette Template-Verhalten stellen Sie rahmenbezogene Eigenschaften des Templates ein : Die Reihenfolge, in der die Platzhalter der Rahmen geladen werden sollen, ob Rahmen im Textfluss verwendet werden sollen und wie, Überschneidungseigenschaften und ähliches.
Weitere Informations dazu finden Sie hier.
Das Pluign stellt die zwei Paletten Gestaltungsregeln und Aufbauregeln zur Verfügung.
Die Palette Aufbauregeln wird ab Comet 4 nicht mehr verwendet. Mehr dazu siehe hier.
[ab Comet 3.1] Gestaltungsregeln sind Skripte, die mit Rahmen verbunden werden und in den folgenden Situationen ausgeführt werden können :
Rahmen können beliebig viele Gestaltungsregeln haben. Jede Regel kann mit bis zu vier zusätzlichen Parametern versehen werden.
Template-Verhalten und Gestaltungsregeln sind zwei unterschiedliche Dinge : Mit dem Template-Verhalten steuern Sie, wie das Template mit dem Rahmen umgeht. Gestaltungsregeln verwenden Sie, um das Aussehen des Rahmens zu beeinflussen.
Eine ausführlichere Beschreibung der Gestaltungsregeln finden Sie hier.
Seitentemplates steuern den Produktaufbau. Nach Platzhaltern und Templates sind sie das dritte Basiskonzept der priint:comet Plugins.
Die Paletten Seitentemplates und Seitenelemente dienen zur Verwaltung und Konfiguration der Seitentemplates. Hier können Sie unter anderem festlegen, wie Seitentemplates genannt werden und was sie für Nachfolger haben. Die Rahmen der Seiten werden als Elemente des Seitentemplates (Seitenelemente) betrachtet. Sie können u.a. einstellen, ob ein Rahmen zur Positionierung eines oder mehrerer Produkte verwendet werden soll oder ob die Produkte als Text in den Rahmen fliessen sollen.
Eine Beschreibung des Modules finden Sie hier.
Die Seitenadaption dient dazu, Inhalte von Dokumentseiten den Änderungen von Seitengrössen anzupassen. Die Anpassung kann manuell oder über eine Steuerdatei ausgeführt werden.
Über Nägel und Magneten werden Positions- und Grössenänderungen der Rahmen festgelegt: Nägel legen die Abstände zu den Seitenrändern fest. Magneten steuern die Abstände der Rahmen untereinander. Nägel und Magenten können mit Hilfer der Werkzeugpalette gesetzt werden:
Die Anpassung der Rahmeninhalte erfolgt über Regeln, die den Rahmen zugewiesen werden. Regeln werden über Skripte in cScript definiert.
Eine Beschreibung des Modules finden Sie hier.
Listen realisieren den Zugriff auf festgelegte Datenbanktabellen und bieten die Möglichkeit, in den Datenbeständen zu suchen. Über die Paletten können markierte Texte und Bilder in InDesign®-Dokumenten mit Datenbankwerten verknüpft werden. Sie bieten darüberhinaus die Möglichkeit, gezielt Einträge auf die Datenbank zurückzuschreiben und zu prüfen, ob Dokument- und Datenbankinhalte synchron sind und welche Datenbankobjekte im Dokument verwendet werden.
Die gefundenen Daten werden zur Lösung palettenspezifischer Aufgaben verwendet. In den meisten Fällen ist das die Verknüpfung markierter Texte und Rahmen mit einem ausgewählten Objekt der Liste. Andere Listen dienen der Auftragsverwaltung.
Alle Paletten reagieren auf das aktuelle Dokument und dessen aktuelle Auswahl:
Die Produktrecherche unterstützt Mehrfach-Auswahl: Alle im Dokument ausgewählten Produkte werden auch in der Palette ausgewählt (wenn Sie dort sichtbar sind).
Paletten enthalten verschiedene Suchfelder. Die Suche wird ausgelöst durch . Die Anzahl der Datensätze in einer Liste ist in der Regel auf 100 beschränkt.
Die Anzeige der Produktrecherche ist auf 10000 begrenzt. Zusätzlich kann jeder Eintrag wieder 10000 Untereinträge haben.
Um einen Platzhalter des Dokumentes mit einem Listeneintrag zu verknüpften, gehen sie wie folgt vor :
Wurde ein Element des Dokumentes mit einem Datenbankobjekt verknüpft, wird es automatisch aus der Datenbank geladen. Sie können das automatische Laden durch einmaliges Klicken von unten rechts in den Listenpaletten unterdrücken.
Ist das Automatische Laden deaktiviert (grauer Pfeil) werden auch beim Einsetzen von Produkten per Drag and Drop aus der Produkrecherche keine Platzhalter geladen.
Sollte die Verknüpfung nicht funktionieren, liegt das meist daran, dass der ausgewählte Platzhalter eine andere ClassID hat als die Objektliste, siehe dazu unter ClassID.
Durch einfaches Klicken in das Statusbutton können sie im Dokument zu der Stelle springen, an der das Objekt zum ersten Mal verknüpft ist. Mit erneutem Klicken können Sie von Platzhalter zu Platzhalter durch das Dokument navigieren.
Die Produktrecherche bietet zusätzlich die Möglichkeit jeweils die gesamte Cometgruppe auszuwählen. Über den Statusbuttons befindet sich dafür ein kleines Button. Es muss dieses Bild zeigen: .
Die Flyout-Menüs einiger Paletten können neben ihren Standardeinträgen eine beliebige Anzahl dynamischer Einträge enthalten, die sogenannten Palettenaktionen. Diese Einträge werden in den Konfigurationsdaten Ihrer Datenverbindung definiert und nach dem Verbindungsaufbau (Login) automisch angefügt. Beim Trennen der Datenverbindung werden sie wieder entfernt. Folgende Paletten unterstützen Palettenaktionen:
Palette |
Produktrecherche |
Publikationen |
Previews |
Aufgaben |
Einstellungen |
Templates |
Für Schnellzugriffe kann jede Palettenaktion auch als Front Row Button angelegt werden.
Die auszuführenden Aktionen der Menüeinträge werden in der Tabelle actions definiert und als cScripte implementiert. Eine Beschreibung zum Anlegen von Palettenaktionen finden Sie hier.
Es gibt drei Möglichkeiten, die Auswahl Objekte einzuschränken, die beim Auslösen einer Palettenaktion bearbeitet werden.
[seit v4.1.8 R27334] In den folgenden Listen können die zuletzt verwendeten Einträge der jeweiligen Datenverbindung gezeigt werden:
Um die zuletzt verwenden Einträge zu erhalten, klicken Sie mit gehaltener ALT-Taste auf das Lupensymbol:
Die zuletzt verwendeten Einträge werden pro Datenverbindung in der Datei
$PREFS/werkii/statistics.xml
abgelegt.Datenverbindungen werden über den in den Palette angezeigten Verbindungsnamen identifiziert:
Die Datei wird von den jeweiligen Plugins jeweils beim Herstellen einer Datenverbindung (Datenordner, Login) gelesen und und beim Trennen der Verbindung aktualisiert.
<?xml version="1.0" encoding="utf-8"?> <statistics> <recents> <connection label="paul@demo:comet_config"> <products></products> <placeholders>120164 13 10</placeholders> <templates></templates> <publications></publications> <pagetemplates>260007 16 15</pagetemplates> </connection> <connection label="XML /Users/paul/Desktop/fifo/priint 5.5/xmldata/~"> <products></products> <placeholders>50 30 20 2190 2166 720 71000001 20</placeholders> <templates>15 11 12 13 14</templates> <publications></publications> <pagetemplates>64 44 6 8 2</pagetemplates> </connection> </recents> <contexts></contexts> </statistics>
Zur Zeit werden nur die ID-Listen der drei Einträge placeholders, templates und pagetemplates unterstützt. Manuelle Änderungen vor dem Lesen sind erlaubt, Änderungen an den Einträgen einer aktiven Verbindung werden ignoriert.
Listenpaletten haben jeweils eine eindeutige ID, die sogenannte ClassID. Diese Nummer wird von WERK II vergeben und steuert mehrere Dinge:
Die folgende Tabelle gibt die verwendeten ClassIDs an (In Skripten muss für die Paletten-ID dazu am Anfang der Include
#include "internal/panels.h"
gemacht werden.) :
ClassID | Beschreibung |
ClassIDs von Paletten | |
kPanelProducts (3) | Palette Produktrecherche. Aktionen dieser Klasse werden an das Flyout-Menü der Palette angefügt, siehe hier. |
kPanelPreviews (6) | Palette Previews. Aktionen dieser Klasse werden an das Flyout-Menü der Palette angefügt, siehe hier. |
kPanelPageitems (8) | Palette Templates. Aktionen dieser Klasse werden an das Flyout-Menü der Palette angefügt, siehe hier. |
kPanelPublications (9) | Palette Publikationen. Aktionen dieser Klasse werden an das Flyout-Menü der Palette angefügt, siehe hier. |
kPanelToDoList (10) | Palette Aufgaben (ToDos). Aktionen dieser Klasse werden an das Flyout-Menü der Palette angefügt, siehe hier. |
kPanelPlaceholder (125) | Palette Platzhalter |
kPanelSettings (419)
13 - ClassID für Palettenskripte |
Palette Einstellungen. Aktionen der Klasse 13 werden an das Flyout-Menü der Palette angefügt, siehe hier. |
kPanelPlaceholderValues (401) | Palette Platzhalterwerte |
kPanelPlaceholderValuesInfo (413) | Palette Platzhalterwerte Info |
kPanelPageitemsBehavior (402) | Palette Template-Verhalten |
kPanelPageTemplates (403) | Palette Seitentemplates |
kPanelPageElements (404) | Palette Seitenelemente |
kPanelCometAdmin (405) | Palette Comet Admin |
kPanelTableModule (406) | Palette Tabellenaufbau |
kPanelTranslations (407) | Palette Übersetzungen |
kPanelLayoutRules (408) | Palette Gestaltungsregeln |
kPanelFrameTags (409) | Palette Rahmen-Etiketten |
kPanelAreaBuild (410) | Palette Bereichsaufbau |
kPanelPriintAdjust (411) | Palette priint:adjust |
kPanelPriintAdjustList (412) | Palette priint:adjust Rahmenliste |
kPanelPlaceholderValuesInfo (413) | Palette Platzhalterwerte-Info |
kPanelFrontRow (414) | Palette Front Row |
kPanelNotes (415) | Palette Comet Notizen |
kPanelPreviewDetails (416) | Palette Preview-Details |
kPanelProductsOfDocument (417) | Palette Produkte des Dokumentes |
kPanelPublicationInfo (418) | Palette Publikationsinfos |
kPanelCometTests (420) | Palette Comet Tests |
kPanelURLLink (421) | Palette Web-Bilder |
ClassIDs von Skripten definiert in actions | |
14 |
Vorbereitungsskripte für den Produktaufbau, siehe document::build_products und globale Variablen dieser Skripte Pre/Postrules - Regeln die beim Raster- und Seitentemplateaufbau von Produkten ausgeführt werden. Zur Aktivierung der Regeln muss framerules installiert sein |
15 |
Template-ID Skripte - Ist in einem Template ein solches Skript definiert, wird es vor dem Einfügen des Templates ausgeführt. Sie können in diesem Skript die ID des zu ladenden Templates ändern, siehe auch Template-ID-Skripte , document::placeitems und globale Variablen dieser Skripte) Die Skripte erscheinen im Popup Template-ID Skript des Dialogfensters mit den Einstellungen eines Templates. Damit Template-ID Skripte ausgeführt werden können, muss pageitems um das Attribut scriptid (Datenbanken) bzw. spread.scriptid (XML und SOAP) erweitert werden. (seit Version 1.3.1, R112). |
16 | Deprecated Skripte, die nach dem Einfügen eines Templates ausgeführt werden sollen. Verwenden Sie statt dessen Gestaltungsregeln. |
18 | Doppelklickaktionen in der Produktpalette. Welche der definerten Aktionen beim Doppelklick ausgeführt wird, wird durch Panelstatement 95 bestimmt. |
19 | Doppelklickaktion in der Dokumentpalette. Welche der definerten Aktionen beim Doppelklick ausgeführt wird, wird durch Panelstatement 96 bestimmt. |
20 | Doppelklickaktion in der Previewspalette. Welche der definerten Aktionen beim Doppelklick ausgeführt wird, wird durch Panelstatement 97 bestimmt. |
21 | reserviert |
22 | Stapelverarbeitung von der Illustrator-Palette Batch | 138 | Stapelverarbeitung der InDesign-Palette Comet++ |
23 |
Achtung : Anders als in anderen Aktionen muß die 23 in type bzw. typeid und in classid eingetragen werden. |
24 | Gestaltungsmethode des Tabellenmodules
Achtung : Anders als in anderen Aktionen muß die 24 in type bzw. typeid und in classid eingetragen werden. |
25 | reserviert für Tabellenmodul |
26 | |
28 | Infoskripte der Editionen |
30 | Reserviert |
31 | Reserviert |
33 | reserviert |
34 | Aktion des Skriptbefehles itemlist::logical_groups |
35 | Aktion des Seitenadapters
Achtung : Anders als in anderen Aktionen muß die 35 in type bzw. typeid und in classid eingetragen werden. |
36 | Gestaltungsregel (Plugin FrameRules, Palette Gestaltungsregeln) |
37 | Methode zur Produktauswahl für den Aufbau mit Seitentemplates.
Die Skripte werden im Seitentemplate-Aufbau unter der Rubrik Auswahlmethode gezeigt. |
38 | CometServer Jobs |
39 | Produkte im Dokument bearbeiten
Die Skripte werden in der Palette Produkte der Dokumentes gezeeigt und können von dort ausgeführt werden. Die in der Palette angegebenen Parameter werden in den folgenden globalen Variablen gParam1-4 zur Verfügung gestellt: char * gParam1; int gParamInt1; float gParamFloat1; |
40 | [ab Comet 3.2.1] DropURL-Script |
41 | Skripte des Whiteboards |
42 | [ab Comet 3.2.2] InDesign®-Bibliotheken exportieren. Über das Panelstatement 123 (s.u.) legen Sie fest, ob und welche der definierten Aktionen dieser Klasse ausgeführt werden soll. |
43 | [ab Comet 3.2.2] InDesign®-Bibliotheken importieren. Über das Panelstatement 123 (s.u.) legen Sie fest, ob und welche der definierten Aktionen dieser Klasse ausgeführt werden soll. |
44 | [ab Comet 3.2.2] Dynamische Parameterlisten - Skripte zum Laden von Werten für die Parameter einer Gestaltungsregel, siehe hier. |
45 | Bedingungen von Gestaltungsregeln, siehe hier. |
46 | Trenntexte im Textfluß, siehe hier. Die Skripte werden in den Einstellungen zu Templates ind den Popup-Menüs "Textfluß-Präfix" gezeigt. |
47 | Server-Skripte des Whiteboards |
48 | |
49 |
Whitebord Preview Snippets |
50 | Skripte für Platzhalter-Präfix/Postfix, siehe hier. |
51 | [ab v3.4 R3211] Gestaltungsregeln von Textplatzhaltern, siehe hier. |
52 | [ab v3.4 R3211] Bedingungen für Gestaltungsregeln von Textplatzhaltern, siehe hier. |
53 | [ab v3.4 R3211] Postaction zur Individualisierung von Dokumenten |
54 | [ab v3.4 R5942] Diese Skripte können nach der Anwendung von Seitentemplates ausgeführt werden, siehe hier. |
55 | [ab v4.1 R12000] Aktion zur Bestimmung möglicher Werte für Platzhalter Funktionsvariablen, siehe hier |
56 | [ab v4.1 R12000] Aktion zur Bestimmung möglicher Werte für Tabellenzellen Funktionsvariablen, siehe hier |
57 | [ab v4.1 R12500] Aktion zur dynamischen Definition von Platzhalterfunktionsvariablen, siehe hier |
58 | [ab v4.1 R12500] Aktion zur dynamischen Definition von Tabellenzellenfunktionsvariablen, siehe hier |
60 | [ab v4.1 R22127] Skript, die im PubServer Umfeld für Publikationen ausgeführt werden. |
61 | [ab v4.1.7 R27311] Skripte zum Laden der Werte der Suchfelder in der Produktrecherche |
62 | Dokument-Timer |
63 | Stringvergleich-Skript für Textplatzhalter mit AutoSync |
64 | Warteschlangen-Skript für Publikationsdokumente |
99 | Reserviert für Workbench |
Anweisungen zur Konfiguration der Paletten werden in der Tabelle/Datei panelstatements festgelegt. Im Gegensatz zu den Aktionen, die mehrfach vorkommen können (wie z.B. viele Gestaltungsregeln) gibt es Panelstatements jeweils nur einmal (wie z.B. das Laden der Platzhalterfarben). Die folgende Tabelle enthält eine Liste der reservierten Einträge. Zusätzlich sind alle Wert kleiner 1000 reserviert.
Panelstatements von Typ Skript können wie üblich in cScript oder Python geschrieben werden. Panelstatements von Typ Statement werden in der Sprache der aktuellen Datenverbindung, aslo xmlquery oder XPATH, SQL oder als SOAP-Calls erwartet. Die mit einem Schloß markierten Einträge der Tabelle sind Standardeinträge der Defaultkonfiguration, von deren Änderung wir dringend abraten.
Verwendung | ID | Typ | Beschreibung |
Session-Handling | 139 | Skript |
Allow Login Skript Das Skript wird direkt nach dem erfolgreichen Login ausgeführt und kann dazu verwendet werden, eine Verbindung nach eigenen Kriterien abzulehnen oder zu akzeptieren. Wird eine Verbindung abgelehnt, wird sie automatisch auch sofort wieder gelöst und der Login-Dialog öffnet sich erneut. Rückgabewerte Bei return 0 (kein Fehler) wird die Verbindung akzeptiert. Sonst wird die Verbindung abgelehnt.ACHTUNG
Im Skript sind die folgenden globalen Variablen definiert: int gLogins; // Anzahl der erfolgreichen Logins nach InDesign®-Start Hier ein Beispiel für eine ODBC-Verbindung: int main () { int ret = 0; char m [1200]; char serv [255]; char name [255]; char usr [255]; sprintf (m, "Wirklich einloggen?\nSRV:%s\nDB:%s\nUSR\:%s", sql::server (gDBC, serv), sql::dbname (gDBC, name), sql::user (gDBC, usr)); if (alert ("OK", "Nicht einloggen", 0, 1, 4, m) != 1) ret = 1; return ret; } |
92 | Statement oder Skript | After Login Skript
Das Skript wird nach dem erfolgreichen und erlaubten Logins und nach dem Setzen eines neuen XML-Ordners ausgeführt und dient der Initialisierung verbindungstypischer Einstellungen. Im Skript ist die globale Variable gLogins definiert, die (getrennt) zählt, wieviel SOAP/ODBC-Logins erfolgten und wie oft der XML-Ordner geändert wurde. Empfohlene Einstellungen
Beispiel int main () { system::setdocwatch (1); prefs::set_script_buffer (1000); prefs::set_preserve_color_profiles (1); return 0; } |
|
133 | Skript | Change Session Script
Die Session-ID der Verbindung soll geändert werden. Im Skript ist die Variable gSessionID definiert und enthält die neue Session-ID als char[]-String. |
|
134 | Skript | Use Session Script
Die Session-ID der Verbindung wurde geändert. Im Skript ist die Variable gSessionID definiert und enthält die neue Session-ID als char[]-String. |
|
152 | Skript | Before Logout
[Seit v4.3 R36876] Das Skript wird direkt vor dem Trennen einer Datenverbindung gerufen. Die Verbindung ist noch aktiv - wird aber im nächsten Schritt getrennt. Das Skript soll insbesondere das Löschen eigener globaler Python-Variablen und sonstiger globaler Ablagen ermöglichen. |
|
Platzhalterfarben | 11 | Laden der Farben, die für die Platzhalter verwendet werden. Fehlt die Anweisung, werden die Buntstifte von Mac OS X als Standardfarben verwendet. | |
Produktrecherche | 55 | Statement |
Laden der Listeneinträge der obersten Ebene. Für die Anweisungen zum Laden der Untereinträge können IDs ab 1000 verwendet werden. Hinweis: Produkte können auch mit Hilfe von cScript geladen werden. Weitere Informationen dazu finden Sie hier. |
95 | Skript | Lade die ID des Skriptes, das bei Doppelklick eines Produktes ausgeführt werden soll. | |
148 | Skript | Filtern der Templates im Template-Popup oben rechts in der Palette. Mit der Eischränkung der gezeigten Templates können Sie sicherstellen, dass Produkten nur die vorgesehenen Templates zugewiesen werden können. | |
155 | - | Produktpalette des Whiteboards. Die Anweisungen werden in den priint:comet Plug-Ins nicht ausgeführt. | |
255 | |||
355 | |||
Templates | 32 | Statement | ![]() SQL-Beispiel: select 1, 'Mandant 1' from dual union select 2, 'Mandant 2' from dual union select 3, 'Marktplatz' from dual union select 4, 'Basar' from dual union select 5, 'Bauchladen' from dual |
33 | Statement | ![]() SQL-Beispiel: select id, name from domain where domainClassID = ? |
|
24 | Statement |
SQL-Beispiel: select distinct (d.id), d.name from domain d, userxdomain x where d.ID > 0 and (x.userid = ? or 0 = ?) and d.id = x.domainid and upper(d.Name) like upper(?) and (d.domainClassID = ? or 0 = ?) |
|
25 | Statement | ![]() SQL-Beispiel: select id, name from pageitemtypes where ID > 0 |
|
26 | Statement | ![]() SQL-Beispiel: SELECT id, value FROM relatedto WHERE id > 0 |
|
118 | Statement oder Skript | Vor dem Löschen : Die Anweisung wird jeweils vor dem Löschen eines Templates ausgeführt und kann das Löschen verhindern. Mehr dazu siehe hier. | |
93 | Statement oder Skript | Lade die ScriptID für das Pageitem-Skripts (nur bei aktiviertem Pageitem-Skript). Ist die Anweisung leer oder nicht definiert, wird der folgende Default verwendet :
select spread.scriptid node pageitems.pageitem where id = ? |
|
94 | Statement oder Skript | Lade den Namen des Pageitem-Skriptes (nur bei aktiviertem Pageitem-Skript) Ist die Anweisung leer oder nicht definiert, wird der folgende Default verwendet :
select name node actions.action where id = ? |
|
22 | Suche der Templates gemäß den Eingaben der Suchfelder. Unter XML und SOAP gibt die Anweisung auch die Werte des Templates zurück.
SQL-Beispiel: select ID, 0, 0 from PageItems where ID > ? and (upper(Name) like ? or Name is NULL) and (DomainID = ? or 0 = ?) limit 0, ? |
||
23 | Laden eines Templates. Unter XML und SOAP wird die Anweisung nicht benötigt.
SQL-Beispiel: select p.name, t.name, d.name, s.value, p.description, p.preview, p.leftPos, p.topPos, p.rightPos, p.bottomPos, p.spreadID, p.leftID, p.middleID, p.rightID from PageItems p, PageItemTypes t, Domain d, RelatedTo s where t.ID = p.TypeID and d.ID = p.DomainID and s.ID = p.StateID and p.id = ? |
||
27 | Hole die TypeID, DomainID, StateID und PlaceholderID eines Templates. Die Anweisung ist unbenutzt in XML-Offline- und SOAP-Verbindungen. SQL-Beispiel: SELECT typeid, domainid, stateid, PlaceholderID FROM pageitems WHERE id = ? |
||
28 | Ändere die Metadaten eines Templates beim Schließen des Dialoges
SQL-Beispiel: update pageitems set name = ?, typeid = ?, domainid = ?, stateid = ?, placeholderID = ?, description = ?, spreadid = ?, leftid = ?, middleid = ?, rightid = ? where id = ? |
||
29 | ![]() SQL-Beispiel: UPDATE pageitems SET data = _latin1?, preview = _latin1?, leftpos = ?, toppos = ?, rightpos = ?, bottompos = ? WHERE id = ? |
||
30 | ![]() SQL-Beispiel: delete from PageItems where id = ? |
||
31 | ![]() SQL-Beispiel: select data from pageitems where id = ? |
||
56 | Lade ID und Name des Templates eines bestimmten Seitentypes zur Verwendung in den Seitentyp-Popupmenues
SQL-Beispiel: select distinct (ID), Name from PageItems where ID > ? and (DomainID = ? OR DomainID = 0 OR ID = ?) and (SpreadID = ? OR SpreadID = 0 OR ID = ?) order by name |
||
57 | Lade den Previewpfad/das Preview eines Templates zur Darstellung im Dialog
SQL-Beispiel: select preview from PageItems where ID = ? |
||
121 |
ab 3.2 R2155, 29.09.2010 Anweisung zum Sichern von Templates in IDML. Das Statement wird nur für SQL-Verbindungen benötigt. Ist die Anweisung leer oder nicht definiert, wird der folgende Default verwendet : update PageItems set dataIDML = LATIN1 ? where id = ?
LATIN1 wird dabei durch den in der Tabelle keywords vergebenen Wert von LATIN1 ersetzt. Das zusätzliche Sichern von Templates im IDML-Format muss mit der Skriptanweisung prefs::add_idml_to_templates aktiviert werden. |
||
137 |
ab 3.3.1 R3445, 21.02.2013 Anweisung zum Sichern von Templates in W2ML. Das Statement wird nur für SQL-Verbindungen benötigt. Ist die Anweisung leer oder nicht definiert, wird der folgende Default verwendet : update PageItems set dataW2 = where id = ? Das zusätzliche Sichern von Templates im W2ML-Format muss mit der Skriptanweisung prefs::add_w2ml_to_templates aktiviert werden. |
||
Publikationen | Palette | ||
36 | Statement | Suchen der Listeneinträge. In XML und SOAP liefert die Anweisung auch die Inhalte der gefundenen Einträge. | |
37 | Statement | Laden der einzelnen Einträge (nur SQL) | |
130 | Statement | Suchen der Musterdokumente. Die Syntax der Anweisung entspricht dem Panelstatement 36. | 131 | Statement | Laden der Musterdokument-Einträge (nur SQ). Die Syntax der Anweisung entspricht dem Panelstatement 37. |
38 | Statement | Laden der Einträge des Popupmenüs Bereich (Wenn die Palette dieses Popup überhaupt zeigt.) | |
96 | Skript | Berechne die ID der Doppelklick-Aktion beim Doppelklick einer Publikation | Publikationsinfos |
100 | Statement |
Wieviele Previews sind für die aktuelle Publikation verfügbar? |
|
101 | Statement |
Lade ein Preview. |
|
102 | Statement |
Hole die letzte verwendete Preview-ID. |
|
103 | Statement |
Anlegen eines neuen Previews für eine Publikation. |
|
104 | Statement |
Lösche alle Previews einer Publikation. |
|
105 | Statement |
Füllen Sie das große Info-Feld der Palette mit beliebigem Text. |
|
Ein- und Auschecken
[Seit v4.3 R36780] Für Testzwecke können die folgenden Skripte auch in den $DESKTOP-Ordner emergency unter den Namen ps_ID.cpp abgelegt werden. Vergessen Sie nicht, diese Testskripte irgendwann wieder zu löschen! |
|||
110 | Skript | Laden der Verbindungsdaten für den Publikationsserver | |
111 | Skript | Checkout Skript - ausgeführt vor dem Öffnen der Publikation | 125 | Skript | After Checkout Skript |
112 | Skript | After Save Skript - ausgeführt nach dem Sichern der Publikation | |
113 | Skript | Before Close Skript - ausgeführt vor dem Schließen der Publikations | |
114 | Skript | Status Skript - Berechne den Dokument-Status. Hier finden Sie eine Beschreibung der vom Server gelieferten Stati. | |
115 | Skript | Checkin Skript - Der CheckIn-Button wurde geklickt | |
116 | Skript | After Close Skript- ausgeführt nach dem Schließen der Publikations | |
117 | Skript | Revert Skript - Alt-Klick auf den Checkin-Button) | |
125 | Skript | AfterOpen ausschließlich für die Publikations-Dokumentes. Das Skript wird nur bei aktivierter Dokument-Beobachtung (z.B. durch system::set_docwatch im AfterLogin-Skript) ausgeführt. Definierte Variablen siehe hier. | |
135 | Statement | Optionen für Metadatengenerierung, nur SOAP und ODBC. Die Anweisung ist optional und wird beim Erzeugen der Publikations-Metadaten ausgeführt. Rückgabe der Anweisung ist ein String mit den gewünschten Server-Optionen. Informationen zu den Server-Optionen finden Sie hier. Default ist "content:none;svg:bbox;". | |
136 | Statement | Liste der zu genrierenden Metadaten-Dateien, nur SOAP und ODBC. Die Anweisung ist optional und wird beim Erzeugen der Publikations-Metadaten ausgeführt. Die Anweisung kann mehrere Ergebnisse mit den jeweils möglichen Werten zurückgeben:
Ist die Anweisung leer oder fehlt, wird alles exportiert. |
|
Die Anweisungen werden nur ausgeführt, wenn die Dokumentenüberwachung aktiviert ist. (z.B. durch system::set_docwatch (cScript) oder comet.prefs.setDocWatch (Python) im AfterLogin-Skript). Ist die Dokumentbeobachtung aktiviert, wird sie für alle (auch für neue) Dokument ausgeführt.. Definierte Variablen siehe hier (cScript) oder hier (Python) |
|||
42 | Skript | Nach der Anlage eines neuen Dokumentes | |
43 | Skript | Vor dem Öffnen eines Dokumentes | |
44 | Skript | Nach dem Öffnen eines Dokumentes.
Desktop : Das Dokument ist noch nicht in einem Fenster geöffnet. Wenn Sie Platzhalter bearbeiten wollen (z.B. linklist::load), muss das Dokument auch sichtbar und ausgewählt sein. In diesem Fall verwenden Sie das Skript 59, dass nach dem Öffnen des Dokumentfensters ausgeführt wird. Für Dokumente, die über die Publikations-Palette gibt es zusätzlich das Panelstatement 125 (s.o.), das ausschließlich für diese Dokumente ausgeführt wird. |
|
59 | Skript | ab 3.1, R1840, 24.4. 2010 Skript nach dem Zeigen des Dokumentes. Server-Plugins führen das Skript nach dem Öffnen des Dokumentes (wie Skript 44) aus.
Hintergrund ist, dass Platzhalteraktionen (z.B. linklist::load) auf dem aktuellen Front-Dokument arbeiten, das in den Desktop-Varianten erst beim Öffnen des Fenster gesetzt ist. |
|
45 | Skript | Vor dem Sichern eines Dokumentes | |
46 | Skript | Nach dem Sichern eines Dokumentes | |
47 | Skript | Vor 'Sichern als' eines Dokumentes | |
48 | Skript | Nach 'Sichern als' eines Dokumentes | |
49 | Skript | Vor 'Sichern einer Kopie' eines Dokumentes | |
50 | Skript | Nach 'Sichern einer Kopie' eines Dokumentes | |
51 | Skript | Vor 'Zurück zur letzten Version' eines Dokumentes | |
52 | Skript | Nach 'Zurück zur letzten Version' eines Dokumentes | |
53 | Skript | Vorm Schließen eines Dokumentes | |
58 | Skript | ab 3.1, R1730, 8. Feb. 2010 Skript bei Dokumentwechsel. Das Skript wird jedesmal gerufen, wenn das Frontdokument gewechselt wird. In den Skripten sollte showmessage nicht verwendet werden - das Schließen des Dialogs kann das Ereignis erneut auslösen! | |
59 | Skript | ab 3.1, R1730, 27. April. 2010 Skript nach Dokumentzeigen. Das Skript wird ausgeführt, nachdem ein Dokumentfenster geöffnet wurde. | |
Comet | 122 | Skript | URLs platzieren. Eine Text-URL aus einem Internet-Browser wurde im Dokument platziert. Was soll mit der URL gemacht werden? Das Skript wäht in Abhängigkeit von der URL die gewünschte Aktion aus. Mehr dazu siehe hier. |
123 | Skript | Exportieren einer InDesign®-Bibliothek. Die Anweiung legt fest, ob und wie eine Bibliothek exportiert werden kann und wählt dazu eine der mit Klasse 42 (s.o) definierten Aktionen aus. Mehr dazu siehe hier. | |
124 | Skript | Importieren einer InDesign®-Bibliothek. Die Anweiung legt fest, ob und wohin eine Bibliothek importiert werden kann und wählt dazu eine der mit Klasse 43 (s.o) definierten Aktionen aus. Mehr dazu siehe hier. | |
Einstellungen | 85 | Lade alle Datendateieintraege und globalen Variablen des Datenpools in die Palette. Bitte beachten Sie, dass serverseitig definierte globale Variablen von PubServer nicht unterstützt werden. | |
86 | ID eines neuen Datendatei-Eintrages ermitteln | ||
87 | Anlegen eines neuen Datendatei-Eintrages | ||
88 | Ändern des Aliasnamens eines Datendatei-Eintrages | ||
89 | Ändern des Pfades eines Datendatei-Eintrages | ||
90 | Löschen eines Datendatei-Eintrages | ||
91 | Aktiviere/Deaktiviere einen Datendatei-Eintrag | ||
Previews | 97 | Skript | Lade die ID der Aktion, das bei Doppelklick eines Previews ausgeführt werden soll. |
Seitentemplates | 120 | Skript | (ab Version 3.1, R1956, 17. Juni 2010) Die Anweisungen werden jeweils vor dem Löschen eines Seitentemplates ausgeführt und können das Löschen verhindern. Mehr dazu siehe hier. |
ToDos (Aufgaben) | 150 | Skript | ab v4.2 Welcher Absatzstil soll in neu erstellen Comet-Notizen verwendet werden, siehe hier. |
151 | Skript | ab v4.2 In der Aufgaben-Palette erledigte Comet-Notizen auf diese Ebene verschieben, siehe hier. | |
Web-Bilder | 141 | Skript | ab v4.1 R23234 Bildordner für die Downloads von Web-Bildern festlegen, siehe hier. |
Extern reserviert | 126 | Whiteboard 3 Panelstatments für Attributenpalette | |
127 | |||
128 | |||
200001 | Aufgaben-Palette PubServer intern | ||
200002 |
Hier ein Beispiel für ein Loginskript. Das Skript kann für XML-Datenordner verwendet werden. Beim Programmstart wird die Willkommenssmeldung automatisch unterdrückt.
int main { if (gLogins > 1) { showmessage ( "%d. Willkommen in der Testumgebung", gLogins); } system::set_docwatch (); return 0; }
Das folgende Skript ist ein Beispiel für eine Dokumentbeobachtungs-Funktion. Bitte beachten Sie, dass nicht in jedem Fall wirklich ein Zieldokument definiert sein muss.
int main () { char p[4096]; if (document::current ()) document::path (p); else strcpy (p, "nicht definiert"); showmessage ("Before save %s";, p); return 0; }
Die Palettenaktionen werden in der Datenbanktabelle Actions hinterlegt. Die Namen aller Action-Einträge, deren Attribut classID gleich der ClassID eines Plugins ist, werden in dessen Palettenmenü und in das Programmmenü Zusatzmodule -> Palettenname aufgenommen. Folgende Paletten werden unterstützt:
Palette | ClassID |
Produktrecherche | 3 |
Publikationen | 9 |
Previews | 6 |
Aufgaben | 10 |
Einstellungen | 13 |
Templates | 8 |
Für Schnellzugriffe kann jede Palettenaktion auch als Front Row Button definiert werden. Informationen zum Anlegen von Fron Row Buttons von Palettenaktionen finden Sie hier.
Mit einem ^-getrennten Pfad vor dem Namen der Aktion werden automatisch die gewünschten Untermenüs angelegt.
Der Name und alle Pfadteile werden mit Hilfe der aktuell verfügbaren Übersetzungen automatisch in die Sprache des verwendeten InDesign® übersetzt.
Der Eintrag Testskript wird im Menü bbb des Menüs aaa eingetragen.
aaa^bbb^Testskript
Getrennt durch zwei Kommas (,,) kann dem Namen der Aktion eine Definition für Verfügbarkeit und Tastaturkürzel des Menüeintrages folgen.
Die Buchstaben werden normal angegen, die Tag-Schreibweise wie z.B. Ö für Ö ist erlaubt. Die Funktionstasten heißen F1 - F12. Achten Sie aber bitte darauf, dass Funktionstasten schon vom Betriebssystem belegt sein können! Folgende Schlüsselworte bezeichnen die Modifier-Tasten
Alle Angaben werden mit + getrennt. Wird ein Tastaturkürzel bereits an anderer Stelle in InDesign® verwendet, wird die Angabe ignoriert. Bitte probieren Sie ein Kürzel zuerst im InDesign®-Menü Bearbeiten -> Tastaturkürzel... aus.
Die Aktion Testskript soll mit Shift-Control-W ausgelöst werden.
aaa^bbb^Testskript ,, Shift+Ctrl+W
Vor der Tastenkombination kann ein InDesign®-Kontext definiert werden. Dieser Kontext beeinflusst nur den Shortcut, nicht den Menüeintrag selbst und legt fest, in welchem Kontext der Shortcut sichtbar ist. Folgende Kontexte (und keine weitere mehr!!) sind verfügbar :
Ist die Angabe leer, ist der Shortcut immer sichtbar.
Die Aktion Testskript soll in Texten mit Shift-Control-W ausgelöst werden.
aaa^bbb^Testskript ,, Text Shift+Ctrl+W
Für die automatische (De)aktivierung von Menüeinträgen können folgende Angaben gemacht werden :
Fehlt die Angabe, ist der Eintrag immer aktiviert.
Wenn die Palette und ein Dokument geöffnet sind, kann die Aktion Testskript mit Shift-Control-W ausgelöst werden.
aaa^bbb^Testskript ,, Panel Document Shift+Ctrl+W
Die Palettenaktionen werden hinter den Standardeinträgen der Paletten angefügt. Die Reihenfolge der Einträge wird über das Feld sequencenr gesteuert.
Um sich ständige Anpassungen der Sequenznummern zu ersparen, ist es vorteilhaft, die Sequenznummern mindestens in 10-er Schritten zu vergeben. Dann haben Sie genügend Platz für Einschübe.
Palettenmenüs können in die Palette Front Rows aufgenommen werden. Die dazu nötigen Angaben machen Sie im Attribut inputdocumentation der Aktion. Weitere Informationen dazu finden Sie hier.
Die eigentliche Implementierung der auszuführenden Aktionen erfolgt in cScript. Über die Palette Platzhalterwerte oder mit ALT-Klick des Menü-Eintrages können Skripte editiert werden. Zum Editieren von Skripten ist eine Partner-Lizenz erforderlich.
XML Offline : Action-Skripte werden im Ordner actions neben der Datei actions.xml und mit dem Namen ID.crpt abgelegt. Existiert die Datei beim Editieren nicht, wird sie automatisch angelegt. Um Ihre Skripttexte zu schützen, werden die Skripte beim Sichern automatisch verschlüsselt. Mit der Angabe
#pragma plain
am Anfang des Skriptes wird das Verschlüsseln für diese Datei abgeschaltet. Alternativ können Sie die crpt-Dateien auch direkt im Ordner actions ablegen. In diesem Fall ist die Einleitunf #pragma plain verpflichtend, anders führt die Skriptausführung zu Fehlern.
ODBC : Die Skripte werden unverschlüsselt im Attribut statements abgelegt.
PubServer : Anlegen und Editieren von Skripten wird in ISON gemacht. Bitte beachten Sie, dass Skripte in PubServer-Verbindungen nur lokal und zum Testen geändert werden. Beim Logout gehen lokale Skriptänderungen verloren.
Das folgende ODBC-Beispiel fügt in die Produktrecherche den Menübefehl Action 1 ein, der an der aktuellen Texteinfügeposition im Dokument das Wort Action 1 einfügt.
insert into Actions ( id, name, classid, typeid, statement, sequenceNr, domainid) values ( 100000, 'aaa^bbb^Action 1 ,, Text Shift+Ctrl+W', -- Name 31, -- ClassID der Palette Produktrecherche 0, -- typeID, unused by plugins 'main () {textmodel::insert ("Action 1");}', 2, -- Sortierfolge im Menü 1003 -- Domain ID );
Die Palette Previews wird verwendet, um Text- und Bildalternativen für Platzhalter und Produkte zu zeigen. In der Palette Preview-Details werden die Details zum ersten gewählten Eintrag der Palette Previews gezeigt.
Weitere Informationen finden Sie hier.
Die Produktrecherche ist die am meisten verwendete Palette der priint:comet Plugins.
Weitere Informationen über das Plugin und dessen Paletten finden Sie hier.
Die Publikationsverwaltung stellt in einer Datenbank organisierte Dateiverweise dar. Ist eine Datei lokal verfügbar, wird ihr Datei-Icon dargestellt und die Datei kann geöffnet werden. Ist eine Datei nicht verfügbar, kann sie aus der einer Musterdatei erzeugt werden. Die Musterdatei kann dabei im lokalen Netz oder irgendwo im Internet liegen.
Weitere Informationen über das Plugin und dessen Paletten finden Sie hier.
Das Aufgaben-Pluign enthält zwei Paletten, die eigentlichen Aufgaben und die Palette für Comet-Notizen.
In der Liste werden die Platzhalter des Dokumentes gezeigt, die nicht aktuell sind. Wenn Sie die richtigen Statements konfiguriert haben, können in der Liste auch Datenbankaufgaben gezeigt (und gelöst) werden. Mehr dazu finden Sie hier.
[ab Version 3.0, R1400] In der Palette werden die Comet-Notizen des Dokumentes verwaltet und konfiguiert. Hier finden Sie eine Beschreibung der Comet-Notizen.
[Ab Comet 4.0.5 R20002] InDesign® erwartet, dass verwendete Bilder im lokalen Netz liegen oder direkt in Dokumente eingebettet werden. Bilder aus dem Internet (Stichwort Cloud) können von InDesign® nicht geladen werden. Die priint:comet Plugins bieten mit dem Plug-In URL Link und der Palette Web-Bilder eine Möglichkeit, auch Bilder aus dem Netz verwenden zu können. Bilder werden dafür zurerst lokal heruntergeladen und die Bildverknüpfung dann mit dieser lokalen Datei gemacht.
Weitere Informationen zur Palette Web-Bilder finden Sie hier.
XML-Offline und große Teile von SOAP- und PubServer-Verbindungen sind XML-basiert. Daten aus XML-Dateien werden in zwei Stufen ermittelt:
Zum Einlesen von XML stehen drei XML-Parser zur Verfügung:
Standard ist bis v4.1.6 R25555 der klassische Parser.
Ab v4.1.6 R25556 ist der systemunabhängige schnelle Parser die Standardeinstellung.
Hintergrund für die Umstellung des verwendeten Parsers ist die Fehleranfälligkeit der klassischen Parser:
Unter Windows muss sichergestellt sein, dass msxml vollständig und richtig installiert ist. Und ab Windows 10 Build 1903 funktioniert der msxml-Parser ohne aufwändige Korrekturen gar nicht mehr.
Und der CoreFoundation-Parser im Mac?
Betrachten Sie mal folgendes kleines XML-Fragment:
<Text>
Ich wei<0x00DF> <0x00FC>ber alles bescheid.
</Text>
Abgesehen davon, dass das eh eine falsche Aussage ist, was der Parser liest, ist auch noch falsch geschrieben:
Ich weiß über alles bescheid.
Das Leerzeichen zwischen weiß und über geht leider verloren. Der Parser ist nämlich der Meinung, dass durch die < und > neue Elemente im XML gebildet werden. Und da wir Whitespaces um den eigentlichen Inhalt übergehen müssen (sonst würden auch die Leerzeichen und Zeilentrenner um den Gesamttext gelesen werden - und das wollen Sie sicher nicht, oder?), geht das Leerzeichen vor über einfach verloren.
Im Fall der oben verwendeten <0xXXXX>-Tags können wir das Problem mit dem sogenannten optimierten Parser lösen. Dieser Parser wird also auch unter Mac das Leerzeichen vor über erhalten. Aber Achtung: Es werden ausschließlich Entities der Art <0xXXXX> berücksichtigt. Im TaggedText "aaa<cSize:72.000000> <cSize:>bbb" geht das Leerzeichen zwischen aaa und bbb weiterhin verloren.
Apple empfiehlt deshalb auch, den CoreFoundation-Parser nicht mehr zu verwenden und stattdessen den ebenfalls integrierten NSXMLParser zu verwenden. (NS steht für NextSTEP und ... naja, das ist auch schon eine Weile her.) Wir sind dieser Empfehlung nicht gefolgt. Wenn wir schon alles neu machen müssen, dann einheitlich für Mac, Windows und Linux. Mit dem Rapid-Parser von Marcin Kalicinski haben wir dafür eine sehr gute Lösung gefunden.
Mit Hilfe der Skriptfunktion prefs::set_xml_parsertype kann der verwendete Parser geändert werden. Um den Parsertyp für die gesamte Dauer der Datenverbindung zu verwenden, machen Sie diese Festlegung am besten im Skript nach dem Login (Panelstatement 92).
Die Änderung des verwendeten Parsers gilt nur für die aktuelle Datenverbindung. Beim Trennen der Verbindung wird automatisch wieder der Standardparser aktiviert.
InDesign® : Als Standard wird immer der schnelle RapidXML-Parser verwendet. Das bis v4.1.6 R25555 verfügbare Menü Zusatzmodule -> Comet -> XML Auswertung wurde wegen der Fehleranfälligkeit der anderen Parser-Typen entfernt. Die anderen Parser können also nur noch in Ausnahmefällen verwendet werden und müssen dazu aktiv per Skriptbefehl prefs::set_xml_parsertype ausgewählt werden.
InDesign Server® : Der Parsertyp kann mit der Option -cometxmlparser classic | optimized | fast global gesetzt werden. Standard ist aber ab v4.1.6 R2556 auch hier die Option fast.
comet_pdf : Der kann Parsertyp mit der Option --xmlread classic | optimized | fast global gesetzt werden. Standard ist aber ab v4.1.6 R2556 auch hier die Option fast.
Datenabfragen werden gewöhnlich in der in den Plugins implementierten Sprache xmlquery gemacht. In Platzhaltern kann darüber hinaus auch XPATH verwendet werden.
Im Menü Hilfe -> Zusätzliche Hilfe finden Sie weitere Dokumentationen und Hilfe für die priint:comet Plugins und cScript. Die Hilfe ist in Deutsch und Englisch verfügbar und muß im Ordner Doku_deDE bzw. Doku_enEN im gleichen Ordner wie die priint:comet Plugins installiert sein. Deutsche Versionen von InDesign® verwenden automatisch die deutsche Version der Hilfe. Ist die deutsche Hilfe nicht verfügbar, wird die englische Version der lokalen Hilfe verwendet. In alle anderen Sprachversionen von InDesign® wird die englische Version der lokalen Hilfe verwendet.
Aktuelle Versionen der Hilfe erhalten Sie mit jedem Release der Plug-ins.
Ist die Hilfe nicht lokal installiert, wird automatisch die bei publishing.priint.com installierte Hilfe installierte Hilfe verwendet. Diese Hilfe ist identisch mit der lokalen englischen Hilfe. Für die Online-Hilfe wird ein Login für publishing.priint.com benötigt.
Die Standard-Hilfe kann durch eine eigene Hilfe ersetzt werden. Dazu legen Sie im Ordner der priint:comet Plugins eine XML-Datei mit dem Namen oem.xml an. Hier ein Beispiel:
<?xml version="1.0" encoding="Mac"?> <oem> <helpfiles> <helpfile> <menu>ePaper</menu> <path>epaper.html</path> <id>1</id> </helpfile> <helpfile> <menu>blabla</menu> <path>http://www.hi13.de</path> <id>2</id> </helpfile> <helpfile> <menu>bild</menu> <path>$DESKTOP/Bilder/1.png</path> <id>3</id> </helpfile> <helpfile> <menu>bilder</menu> <path>$DESKTOP/Bilder</path> <id>10</id> </helpfile> <helpfile> <menu>-</menu> <path></path> <id>10</id> </helpfile> </helpfiles> </oem>
Für jedes Element helpfile wird dann im Menü Hilfe -> Zusätzliche Hilfe ein Untereintrag mit dem Namen menu gemacht. Untermenüs innerhalb dieser Menüs werden nicht unterstützt. Menütrenner werden mit dem Name - (Minus) erzeugt. Die Einträge werden nach dem Attribut id sortiert.
Den Verweis auf den Inhalt des Menüs geben Sie im Attribut path an. Folgende Angaben sind erlaubt:
Bitte beachten Sie: Für den Inhalt der Hilfe müssen Sie in diesem Fall selbst sorgen!
Mit Hilfe der Comet-Plugins können Sie Dokumente mit Querverweisen versehen. Eine ausführliche Beschreibung dazu finden Sie hier.
InDesign® unterstützt Drag & Drop von Bildern und Internet-Adressen (URLs) aus Internet-Browsern. Im Dokument wird dann der Text der Adresse (URL) eingefügt. Bilder werden unter Mac OS X (aber nicht unter Windows!) als eingebettete Bilder ins Dokument eingefügt.
[Ab Comet 3.2.1] Mit Hilfe der priint:comet Plugins kann das Verhalten beim Drop von URLs und Bildern aus Internet-Browsern mit cScripten beliebig erweitert werden. Ein (relativ) einfacher Anwendungsfall ist, dass Bilder als Web-Bilder mit Aktualisierungsmöglichkeit eingefügt werden. Ein Beispiel finden Sie hier. Mit komplexeren URLs können aber auch ganze Dokumentseiten aufgebaut oder Dokumente reorganisiert werden (siehe z.B. hier).
Bitte beachten Sie aber folgende Einschränkungen:
Welche URLs Sie verwenden möchten, legen Sie im Panelstatement 122 fest. Die hier hinterlegte cScript-Funktion wird für jeden URL-Drop aufgerufen. Wird eine URL akzeptiert, legt Funktion die ID einer Aktion fest, die diese URL bearbeiten werden soll. Soll keine Aktion ausgeführt, lassen Sie den Wert auf 0 stehen. In diesem Fall wird der URL wie gewohnt von InDesign® weiterverarbeitet (also der URL-Pfad ins Dokument eingesetzt.)
Haben Sie für eine URL im Panelstatement 122 eine Aktion ausgewählt und ist diese Funktion definiert, wird diese Aktion beim Loslassen der Maus ausgeführt. Hier eine Tabelle der im Panelstatement 122 definierten zusätzlichen globalen Variablen.
Variable | Typ | Beschreibung |
gURL | char* |
Aktuelle URL des DragDrop-Aktion |
gActionID | int* |
Hier geben Sie die ID der auszuführenden Aktion an. Hat die Variable am Ende der Funktion den Inhalt 0, wird keine Aktion ausgeführt. |
Die Aktionen, die beim Platzieren einer URL ausgeführt werden, werden wie jede andere Aktion in der Tabelle/Datei actions definiert und müssen dort die ClassID 40 haben. Die folgende Tabelle beschreibt die in diesen Aktionen zusätzlich definierten globalen Variablen.
Variable | Typ | Beschreibung |
gURL | char* |
Aktuelle URL |
gPage | int |
1-basierte Seitennummer |
gDropX, gDropY | float |
Seitenrelative XY-Position in Punkten |
gLayer | char* |
Ebenenname |
gFrame | ItemRef |
seit v4.1 R23333 Oberster Rahmen unter Maus. Ist kein Rahmen unter der Maus, hat die Variable dem Wert "undefiniert": frame::is_valid (gFrame) == 0 Hinweis: Leider ist es nicht möglich, Inlines oder Grafikzellen als Zielrahmen zu identifizieren. Zielrahmen für Drop-Ereignisse können also nur "normale" Dokumentrahmen sein. |
Damit Sie nicht jede URL aufwendig untersuchen müssen, empfiehlt es sich, Klassen von URLs zu testen. Hier ein Beispiel für ein Panelstatement 122-Skript.
Das folgende Skript geht davon aus, dass Links von priint.com ausgeführt werden können und die gewünschte Aktion im Wort hinter dem ersten ? des Links steht. Diese Begriffe werden in die Action-IDs 20020-22 übersetzt. Die Actions müssen definiert sein und die Klasse 40 (URLDrop) haben (siehe unten).
int main () { if (strstr (gURL, "http://www.priint.com")) { if (strstr (gURL, "?PageTemplate=")) *gActionID = 20020; else if (strstr (gURL, "?ID=")) *gActionID = 20021; else if (strstr (gURL, "?Book=")) *gActionID = 20022; } return 0; }
URL-Drop-Aktionen werden als Aktionen der Klasse 40 definiert.
Das Skript definiert für die aktuelle oder die aktuelle und alle nachfolgenden Seiten ein Seitentemplate. Hier eine für das oben beschriebene Panelstatement gültige URL:
http://www.priint.com/de/index.html?PageTemplate=300&All=1
int scan_int (char* url, char* name)
{
int res = 0;
char * str = strstr (url, name);
if (str) res = val (str+strlen (name));
return res;
}
int main ()
{
int pid = 0;
int doAll = 0;
// Scan URL
pid = scan_int (gURL, "PageTemplate=");
doAll = scan_int (gURL, "All=");
if (!pid) return 0;
if (doAll) page::set_info (0, gPage, "ids", pid);
else page::set_info (0, gPage, "id", pid);
return 0;
}
Aufbau eines Produktes. Hier eine für das oben beschriebene Panelstatement gültige URL:
http://www.priint.com/de/index.html?ID=300&ID2=10&ID3=0&TemplateID=43
#include "internal/products.h"
int scan_int (char* url, char* name)
{
int res = 0;
char * str = strstr (url, name);
if (str) res = val (str+strlen (name));
return res;
}
int main ()
{
int id, id2, id3;
char stringid[4096];
int templateid;
Product p = 0;
ProductList li = 0;
int pageTemplate;
// Scan URL
id = scan_int (gURL, "ID=");
id2 = scan_int (gURL, "ID2=");
id3 = scan_int (gURL, "ID3=");
templateid = scan_int (gURL, "TemplateID=");
if (!id) return 0;
p = product::alloc ();
product::set (p, kID, id);
product::set (p, kID2, id2);
product::set (p, kID3, id3);
product::set (p, kPageitemid, templateid);
li = productlist::alloc ();
productlist::append (li, p, 1);
page::get_info (0, gPage, "id", &pageTemplate);
productlist::establish (li, 0, gPage, "", pageTemplate);
productlist::release (li, 0);
product::release (p);
return 0;
}
Aufbau einer Liste von Produkten. Hier eine gültige URL:
http://www.priint.com/index.html?Book=10&TemplateID=400
int append_product (ProductList pp, int id1, int id2, int id3, char * ids, int * pid) { Product p; p = product::alloc (kScriptStack); product::set (p, kID, id1); product::set (p, kID2, id2); product::set (p, kID3, id3); product::set (p, kStringID, ids); product::set (p, kPageitemid, pid); productlist::append (pp, p); } int scan_int (char* url, char* name) { int res = 0; char * str = strstr (url, name); if (str) res = val (str+strlen (name)); return res; } int main () { int bookid; int templateid = 400; char ppath [512]; char cmd [4096]; XMLTree tree = 0; ProductList li = 0; int id, id2, id3, pid, todelete; int pageTemplate; // Scan URL bookid = scan_int (gURL, "Book="); templateid = scan_int (gURL, "TemplateID="); // Read data xmlquery::app_path (ppath); strcat (ppath, "/"); strcat (ppath, file::uncurtain ("$DATAFILE")); tree = xmlquery::open (ppath, 0, 1); if (!tree) return 0; xmlquery::send (tree, "select bookID, "); xmlquery::isend (tree, bookid); xmlquery::send (tree, ", 0, toDelete, pageitemid"); xmlquery::send (tree, " node books.productgroup"); xmlquery::send (tree, " where productgroupID = "); xmlquery::isend (tree, bookid); xmlquery::send (tree, " node book orderby bookID"); if (xmlquery::exec (tree)) { li = productlist::alloc (); xmlquery::output (tree, kInt, &id); xmlquery::output (tree, kInt, &id2); xmlquery::output (tree, kInt, &id3); xmlquery::output (tree, kInt, &todelete); xmlquery::output (tree, kInt, &pid); while (xmlquery::fetch (tree)) { if (!todelete) append_product (li, id, id2, id3, "", pid); } } xmlquery::close (tree); // Build page::get_info (0, gPage, "id", &pageTemplate); productlist::establish (li, 0, gPage, "", pageTemplate, templateid, kShowProgress); productlist::release (li, 1); return 0; }
Bild-Assets eines Adobe Experiance Managers (AEM) können ohne vorherige AEM-Anmeldung per Drag and Drop als Bilder ins Dokument eingefügt werden. Die Bilder werden dabei als sogenannte Web-Bilder im Dokument abgelegt.
Eine vollständige Doku zum Platzieren von Assets aus einer AEM finden Sie hier.
ACHTUNG: Die individualisierte Bearbeitung von AEM-Assets beim Dropdown ist möglich, weil Adobe bis v6.3 des AEM den Drop-Events keine Binärdaten der Bilder hinzufügt. Sollte Adobe in neueren Versionen des AEM dem Drag&Drop von Assets Binärdaten hinzufügen, kann das individualisierte Verfahren nicht mehr unterstützt werden und führt zum Absturz von InDesign®!
Für Web-Bilder muß das Plugin URL Link mit der Palette Web-Bilder installiert sein.
Mit den folgenden beiden Skripten können Sie Ihre Installation so konfigurieren, dass Bilder und InDesign®-Dokumente aus einem Internet-Browser direkt aus AEM in InDesign®-Dokumenten platziert werden können:
Panelstatement 122 zum Filtern von AEM-URLs
int main () { String url = string::alloc (gURL); if ( string::find (url, "/content/dam/") > 0 || string::find (url, "/asset/dam/") > 0) { *gActionID = 10000; } return 0; }
Die Aktion zum Ausführen der AEM-URLs ist ebenso einfach und kann den lokalen Bedürfinissen angepasst werden. Besteht kein Login zu einem AEM, wird adimin/admin zur Identifizierung an den AEM gesendet, sonst wird der aktuelle Benutzerlogin verwendet (string::prepare_aem_url).
Ausführen einer AEM-URL. Das Skript wird als Aktion mit der ClassID 40 angelegt. Für das obige Panelstatement bekommt es die ID 10000.
#include "internal/types.h" int main () { String url = string::alloc (gURL); String ext = string::alloc (); ItemRef frame = item::alloc (); // Prepare URL if ( string::find (url, "/content/dam/") > 0 || string::find (url, "/asset/dam/") > 0) { string::prepare_aem_url (url, "admin", "admin"); } // Handle URL file::extender (ext, url); if (string::compare (ext, "indd") != 0) { if (frame::is_valid (gFrame)) { // Replace existing image frame::image (gFrame, url, kPlaceLikeExisting); } else { // Create frame and insert image frame::create (frame, kRectangle, gDropX-36.0,gDropY-36.0, gDropX+64.0, gDropY+64.0, gPage, gLayer); frame::image (frame, url, 1); frame::fit_better (frame); } } else { // Copy/Paste frames of INDD string::replace (url, "http://", "aem@http://"); // url is complete, ignore asset path, user and passwd file::aem_get_asset (url, "a", "u", "p", "$CACHE/xyz/tmp.indd"); document::place_indesign ("$CACHE/xyz/tmp.indd", 1, 0, 0, gPage, gDropX-36.0, gDropY-36.0); } return 0; }
Hinweis: Neben INDD-Dateien könnten auch HTML-Dateien unterstützt werden. Auch die Ausführung von Javascripten und cScript in den gezogenen Dateien ist mit dem oben beschriebenen Verfahren lösbar.
[Ab Comet 3.2.2] Im Palettenmenü jeder Bibliothek befindet sich der Eintrag
Bibliothek exportieren
Ob dieser Eintrag aktiviert ist und was bei der Auswahl des Menüeintrages passiert, wird über die akuelle Datenverbindung festgelegt.
Mit dem globalen Panelstatement 123 wird festgelegt, ob der Menüeintrag Bibliothek exportieren für eine Bibliothek aktiviert werden soll oder nicht. Die Aktivierung erfolgt für jede Palette separat. Ist das Panelstatement 123 nicht definiert oder leer, werden die Menüeinträge immer deaktiviert.
Ist das Panelstatement nicht leer, muss es ein gültiges cScript enthalten. In diesem Skript sind die beiden folgenden globalen Variablen defniert :
Variable | Typ | Beschreibung |
gLibPath | char* |
Vollständiger Pfad der in der zugehörigen Palette angezeigten Bibliothek |
gLib | Library |
Referenz auf die in der zugehörigen Palette angezeigte Bibliothek |
gActionID | int* |
ID der Aktion, die ausgeführt werden soll, wenn das Menü ausgewählt wird. |
Testen Sie in diesem Skript die Bibliothek an Hand ihres Dateipfades oder anderer Eigenschaften (siehe dazu auch die Bibliotheksfunktionen von cScript). Kann die Bibliothek von Ihnen exportiert werden, geben Sie in *gActionID die ID der dazu nötigen Aktion an. Kann die Bibliothek nicht exportiert, bekommt *gActionID den Wert 0. Das Export-Menü bleibt das inaktiv.
Hier ein Skript, das den Export aller Bibliotheken meines Desktops (oder aus Ordnern des Desktops) erlaubt. Für den eigentlichen Export soll dann die Aktion 20023 ausgeführt werden.
int main () { *gActionID = 0; if (strstr (gLibPath, "/Users/paul/Desktop")) { *gActionID = 20023; } return 0; }
Achtung : Das Skript wird bei jedem Öffnen des Palettenmenüs einer Bibliothekspalette ausgeführt. Es sollte daher keine modalen Dialoge enthalten.
Aktionen zum Export von InDesign®-Bibliotheken werden wie jede andere Aktion in der Tabelle/Datei actions definiert und müssen dort die ClassID 42 haben. Die folgende Tabelle beschreibt die in diesen Aktionen zusätzlch definierten globalen Variablen.
Variable | Typ | Beschreibung |
gLibPath | char* | Vollständiger Pfad der in der zugehörigen Palette angezeigten Bibliothek |
gLib | Library | Referenz auf die in der zugehörigen Palette angezeigte Bibliothek |
gActionID | int* | ID der Aktion, die ausgeführt werden soll, wenn das Menü ausgewählt wird. |
Verwenden Sie in diesen Skripten die Bibliotheksfunktionen von cScript, um die Bibiothek zu exportieren.
Das Beispiel kopiert die Bibliothek in einen Ablage-Ordner. Für jeden Bibliothekseintrag wird in einem Unterordner ausserdem ein Preview des Eintrages abgelegt. Alle Infos über die Einträge werden (zu Demontrationszwecken9 in Logfile geschrieben. Sie können diese Angaben natürlich auch verwenden, um damit Datenbankttabellen zu füllen.
int main () { Asset asset = 0; int na = 0; int i; char destPath [4000]; char path [4000]; char shortname[200]; Image img; if (!gLib) return 0; na = library::count_assets (gLib); if (na == 0) return 0; strcpy (destPath, "$DESKTOP/MyLibraries"); // Bibliotheksdatei duplizieren file::duplicate (gLibPath, destPath, 0, 1, 1); // Ornder mit den Previews löschen sprintf (path, "%s/%s", destPath, file::shortname (shortname, gLibPath)); file::remove (path); // Für jeden Eintrag ... for (i = 0; i < na; i++) { asset = library::asset::get_nth (gLib, i); wlog ("", "# Asset %d\n", i+1); wlog ("", "# Name : %s\n", library::asset::get_name (asset)); wlog ("", "# Descr : %s\n", library::asset::get_description (asset)); wlog ("", "# Usertype : %d\n", library::asset::get_usertype (asset)); wlog ("", "# Creation : %s\n", library::asset::get_creationtime (asset, 98)); // Preview holen und als Datei sichern img = library::asset::get_preview (asset, 200); if (img) { sprintf (path, "%s/%s/%s.jpg", destPath, file::shortname (shortname, gLibPath), library::asset::get_name (asset)); image::save (img, path); image::release (img); } library::asset::release (asset); } return 0; }
[Ab Comet 3.3 R3278, und nur für ODBC/OCI-Datenverbindungen] Ist keine andere Definition (Panelstatement 123) festgelegt, verwenden die Plugins einen Standardmechanismus zum Export von InDesign®-Bibliotheken. Es wird der gleiche Menübefehl verwendet:
Palette der Bibliothek -> Bibliothek exportieren
Die Bibliotheken werden damit in die Tabellen library und library_asset exportiert. Die folgenden beiden Tabellen beschreiben die Datenbanktabellen für mySQL. Mehr als das Anlegen dieser Tabellen ist nicht nötig, damit Bibliotheken exportiert werden können.
library | Typ | Beschreibung |
id | int (11) | Eindeutige ID der Einträge der Tabelle. Die IDs werden automatisch von den Comet-Plugins vergeben. |
name | varchar (255) |
Name der Bibliothek. Die Namen müssen eindeutig sein. Wird eine Bibliothek gleichen Namens importiert, wird der bestehende Eintrag überschrieben. Die Pfade bis zum Bibliotheksnamen werden ignoriert. Hintergrund dafür ist, dass mehrere Benutzer die gleiche Bibliothek verwenden können. |
data | longblob |
Binärblob der Bibliothek. Mit diesen Daten kann die vollständige Bibliothek wiederhergestellt werden. |
hash | varchar (255) |
MD5-Hash der Binärdaten. Vor der Aktualisierung bestehender Einträge wird geprüft, ob der neue Hashcode unterschiedlich ist. Sind die Hashcodes gleich, wird die Bearbeitung abgebrochen. |
status | varchar (255) | Leer und zur Zeit unbenutzt ("") |
validFor | varchar (255) | InDesign®-CS-Version, mit der der Eintrag angelegt/geändert wurde (CS2, CS3, CS4, ...) |
createdon, createdby | varchar (14), varchar (50) |
Wann und von wem wurde der Eintrag angelegt. Zeit im Format yyyymmddhhmmss |
updatedon, updatedby | varchar (14), varchar (50) |
Wann und von wem wurde der Eintrag zuletzt geändert. Zeit im Format yyyymmddhhmmss |
library_asset | Typ | Beschreibung |
id | int (11) | Eindeutige ID der Einträge der Tabelle. Die IDs werden automatisch von den Comet-Plugins vergeben. |
library_id | int (11) | ID der zugehörigen Bibliothek aus der Tabelle library |
objectType | varchar (255) | Typ des Eintrages wie er in von InDesign® vergeben wird:
|
name | varchar (255) | Name des Bibliothkseintrages. Die Namen dieser Einträge müssen nicht eindeutig sein. |
description | varchar (255) | Beschreibung des Bibliothkseintrages |
data | longblob | Bibliothekseintrag im gleichen Format wie Templates. Die Daten enthalten alle Platzhalter, Nägel und Magneten und alle Einstellungen für das Tabellenmodul, die auch im Origial definiert sind. |
preview | longblob | Preview des Eintrages |
width, height | double, double | Größe des Assets in Punkten |
magnets | int (11) | Unbenutzt, wird immer auf 1 gesetzt |
createdon, createdby | varchar (14), varchar (50) |
Wann und von wem wurde der Eintrag zuletzt geändert. Zeit im Format yyyymmddhhmmss |
updatedon, updatedby | varchar (14), varchar (50) |
Wann und von wem wurde der Eintrag zuletzt geändert. Zeit im Format yyyymmddhhmmss |
[Ab Comet 3.2.2] Die Comet-Plugins fügen das folgende Menü zu den Programm-Menüs hinzu
Datei -> Neu -> Bibliothek importieren...
Ob dieser Eintrag aktiviert ist und was bei der Auswahl des Menüeintrages passiert, wird über die akuelle Datenverbindung festgelegt.
Mit dem globalen Panelstatement 124 wird festgelegt, ob der Menüeintrag Bibliothek importieren aktiviert werden soll oder nicht. Ist das Panelstatement 124 nicht definiert oder leer, bleibt der Menüeinträge deaktiviert.
Ist das Panelstatement nicht leer, muss es ein gültiges cScript enthalten.
Sie können in diesem Skript prüfen, ob und welche Bibliotheken ein Benutzer oder Datenbankbenutzer importieren kann. Sind für einen Benutzer importierbare Bibliotheken vorhanden, setzen Sie *gActionID auf den Wert einer definierten Aktion mit der diese Bibliotheken geholt werden können, wenn das Menü ausgewählt wird. Sind keine Bibliotheken verfügbar oder darf der Benutzer keine Bibliotheken installieren, bekommt *gActionID den Wert 0.
Hier ein Skript, das dem Benutzer paul den Import beliebiger Bibliotheken erlaubt. Der Import wird dann durch die Aktion 20024 erledigt.
int main () { char usr [256]; system::login (usr); *gActionID = 0; if (strcmp (usr, "paul") == 0) { *gActionID = 20024; } return 0; }
Achtung : Das Skript wird bei jedem Öffnen des Menüs ausgeführt. Es sollte daher keine modalen Dialoge enthalten.
Aktionen zum Import von InDesign®-Bibliotheken werden wie jede andere Aktion in der Tabelle/Datei actions definiert und müssen dort die ClassID 43 haben. In den Skripten sind keine zusätzlichen globalen Variablen definiert.
Verwenden Sie in diesen Skripten die Bibliotheksfunktionen von cScript, um die Bibiothek zu öffnen.
Das Beispiel sammelt alle in einem Ablageordner befindlichen Bibliotheken und lässt den Benutzer auswählen, welche davon import werden soll. Danach wird die Bibliothek einfach geöffnet. Das ist in wirklichen Skripten natürlich Unsinn, Sie werden diese Datei zuvor mindestens irgendwohin kopieren.
int main () { char t1 [412]; char t2 [412]; int id = 0; int ok; char destPath[4000]; char path [4000]; char ext [256]; IDTypeList ids = idtypelist::alloc (); int i, ix = 0; // Sammle alle Bibliotheken im Ablageordner strcpy (destPath, "$DESKTOP/MyLibraries"); for (i = 0; i < file::count (destPath); i++) { strcpy (path, file::get_nth (destPath, i)); file::extender (ext, path); if (strcmp (ext, "indl") == 0) { idtypelist::append (ids, ix, 0, 0, path); ix = ix +1; } } strcpy (t1, ""); strcpy (t2, ""); // Auswahl einer Bibliothek ok = askstring2 ( t1, "", 0, // Text1 t2, "", 0, // Text2 0, "", "", // Popup ohne DB-Inhalte &id, "Bibliothken", 1, "Bibliothek importieren", "", "", -1, -1, // Beschränkung Text1 und Text2 ids); // Liste der Bibliotheksdateien if (!ok) return 0; // Öffnen der Bibliothek // Okay, das ist etwas merkwürdig. Im Normalfall werden sie diese Datei natürlich // erst noch irgendwohin duplizieren strcpy (path, idtype::stringid (idtypelist::get (ids, id))); library::open (path); return 0; }
[Ab Comet 3.3 R3278, und nur für ODBC/OCI-Datenverbindungen] Ist keine andere Definition (Panelstatement 124) festgelegt, verwenden die Plugins einen Standardmechanismus zum Import von InDesign®-Bibliotheken. Es wird der gleiche Menübefehl verwendet:
Datei -> Neu -> Bibliothek importieren...
In einem Dialog werden Ihnen zuerst alle verfügbaren Bibliotheken gezeigt. Nach der Auswahl eines Eintrag und Bestätigen des Dialoges werden Sie nach dem Ort gefragt, an dem Sie die Bibliothek ablegen wollen. Danach wird die Bibliothek wie folgt wieder hergestellt:
Hinweis: Zum Wiederherstellen einer Bibliothek werden die Einträge der Tabelle library_asset nicht benötigt. Diese Tabelle darf in diesem Fall fehlen oder unvollständig sein.