Liste von Produkten.

Ein allgemeines Beispiel zur Verwendung der Klasse productlist finden sie hier.

Letzte Änderung :
30.07.2025, 07:35 Uhr

Liste von Produkten. Die Liste kann entweder aus der aktuellen Produkterecherche und deren Auswahl ermittelt werden oder im Skript aufgebaut werden. Listen der aktuellen Produktrecherche können erweitert werden.

static ProductList productlist::alloc()

Erzeuge eine neue leere Liste. Die Liste muss mit release wieder gelöscht werden.

Weitere Informationen zu Produktlisten und Produkten in Listen finden Sie hier.

Name Typ Default Beschreibung
Return ProductList   Zeiger auf ein neue, leere Produktliste

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

clear
release
get

static ProductList productlist::get(char* statement)

Erzeuge eine neue Liste aus den Einträgen der Produktrecherche.

Eine zweite Version des Befehls mit zwei Parametern holt das nte Produkt einer gegebenen Produktliste.

Name Typ Default Beschreibung
Return ProductList   Neu allokierte Produktliste
statement String oder char* - Anweisung zu Füllen der Liste, siehe hier.
#include "internal/types.h"

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, Illustrator

alloc
clear
release
comet.product.get

static void productlist::clear(ProductList pl)

Entferne alle Einträge der Liste.

Name Typ Default Beschreibung
pl ProductList - Zeiger auf eine gültige Produktliste

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf

release
product::release

static void productlist::release(ProductList pl)

Lösche eine Liste wieder aus dem Arbeitsspeicher.

Weitere Informationen zu Produktlisten und Produkten in Listen finden Sie hier.

Name Typ Default Beschreibung
pl ProductList - Zeiger auf eine gültige Produktliste

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

product::release
clear

static int productlist::length(ProductList pl)

Aktuelle Länge der Liste

Name Typ Default Beschreibung
Return int   Anzahl der Listenelemente
pl ProductList - Zeiger auf eine gültige Produktliste

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

static Product productlist::get(ProductList pl, int nth)

Hole das nte Listenelement. Mit einem char*-Parameter gerufen, erzeugt der Aufruf eine neue Produktliste aus einer Auswahl der Produktrecherche.

Name Typ Default Beschreibung
Return Product   gefundes Objekt. Im Fehlerfall gibt der Aufruf 0 zurück.
pl ProductList - Zeiger auf eine gültige Produktliste
nth int - 0-basierter Listenindex

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins

static int productlist::get_pos(
  ProductList pl,
  Product p,
  int setPos = 0)

Bestimme den Index, den ein Objekt in der Liste hat.

Name Typ Default Beschreibung
Return int   0-basierte Listenposition des Objektes. Wurde das Objekt nicht gefunden, gibt der Aufruf -1 zurück.
pl ProductList - Zeiger auf eine gültige Produktliste
p Product - Zeiger auf ein gültiges Produkt
setPos int 0 Setze die aktuelle Listenposition auf das Produkt?

0 : nein
1 : ja

Version 1.2.2 (24. Nov. 2004)
Parameter setPos seit v3.3.1 R3224, 16. Okt. 2012

priint:comet InDesign® Plug-Ins, comet_pdf

static Product productlist::get_nth(
  ProductList pl,
  int n,
  int setPos = 0)

Hole das nte Produkt einer Liste.

Name Typ Default Beschreibung
Return Product   Produkt an der 0-basierten Position der Eingabeliste

0 : leere Liste oder Listenindex nicht defniert
pl ProductList - Zeiger auf eine gültige Produktliste
n int - 0-basierter Index in der Liste
setPos int 0 Setze die aktuelle Listenposition auf den Index?

0 : nein
1 : ja

v3.3.1 R3224, 18. Okt. 2012

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

static int productlist::append(
  ProductList pl,
  Product p,
  int allowDoubles = 1)

Füge ein Objekt an die Liste an.

Name Typ Default Beschreibung
Return int   1 - Das Objekt konnte eingefügt werden
0 - Objekt nicht eingefügt
pl ProductList - Zeiger auf eine gültige Produktliste
p Product - Zeiger auf ein gültiges Produkt
allowDoubles int 1 Sind in der Liste Einträge mit gleichen IDs erlaubt?

0 - Enthält die Liste bereits einen Eintrag mit der ID von p, wird p nicht in die Liste eingefügt.
1 - Der Eintrag wird ohne Prüfung der ID eingefügt.

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf

static int productlist::insert(
  ProductList pl,
  Product p,
  int index,
  int allowDoubles = 1)

Füge ein Objekt in die Liste ein.

Weitere Informationen zu Produktlisten und Produkten in Listen finden Sie hier.

Name Typ Default Beschreibung
Return int   1 - Das Objekt konnte eingefügt werden (und wird bei clear/release (li, 1) automatisch gelöscht)
0 - Objekt nicht eingefügt (und muss evtl. gelöscht werden)
pl ProductList - Zeiger auf eine gültige Produktliste
p Product - Zeiger auf ein gültiges Produkt
ix int - Einfügen vor dieser Position. Die Position ist 0-basiert. Um ein Objekt an die Liste anzufügen, verwenden sie append oder den Index -1.
allowDoubles int 1 Sind in der Liste Einträge mit gleichen IDs erlaubt?

0 - Enthält die Liste bereits einen Eintrag mit der ID von p, wird p nicht in die Liste eingefügt.
1 - Der Eintrag wird ohne Prüfung der ID eingefügt.

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf

static Product productlist::remove_pos(ProductList pl, int index)

Lösche ein Objekt der Liste. Das Objekt an der angegebenen Listenposition wird aus der Liste entfernt. Das Produkt selbst wird beim Enfernen aus der Liste nicht gelöscht.

Name Typ Default Beschreibung
Return Product   Das entfernte Objekt
0 - es wurde kein Objekt aus der Liste entfernt
pl ProductList - Zeiger auf eine gültige Produktliste
ix int - 0-basierter Listenindex

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf

static Product productlist::remove(ProductList pl, Product p)

Lösche ein Objekt der Liste. Das Objekt wird aus der Liste entfernt. Das Produkt selbst wird beim Enfernen aus der Liste nicht gelöscht.

Name Typ Default Beschreibung
Return Product   Das entfernte Objekt
0 - das Objekt wurde nicht in der Liste gefunden
pl ProductList - Zeiger auf eine gültige Produktliste
p Product - Zeiger auf ein gültiges Produkt

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf

static Product productlist::first(ProductList pl)

Hole das erste Objekt der Liste und setze den aktuellen Listenzeiger auf den Listenanfang.

Name Typ Default Beschreibung
Return Product   Erstes Objekt der Liste
0 - Leere Liste
pl ProductList - Zeiger auf eine gültige Produktliste

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf

static Product productlist::next(ProductList pl)

Rücke den aktuellen Listenzeiger um eine Position weiter und hole das nächste Objekt der Liste. Der Aufruf setzt entweder first oder last und einige prev-Aufrufe voraus.

Name Typ Default Beschreibung
Return Product   Nächstes Objekt der Liste
0 - Listenende erreicht
pl ProductList - Zeiger auf eine gültige Produktliste

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf

static Product productlist::prev(ProductList pl)

Rücke den Listenzeiger eine Position nach vorne und hole das Objekt der Liste.Der Aufruf setzt entweder last oder first und einige next-Aufrufe voraus.

Name Typ Default Beschreibung
Return Product   Nächstes Objekt der Liste
0 - Listenanfang erreicht
pl ProductList - Zeiger auf eine gültige Produktliste

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf

static Product productlist::last(ProductList pl)

Hole das letzte Objekt der Liste und setze den aktuellen Listenzeiger auf das Listenende.

Name Typ Default Beschreibung
Return Product   Letztes Objekt der Liste
0 - Liste leer
pl ProductList - Zeiger auf eine gültige Produktliste

Version 1.2.2 (24. Nov. 2004)

priint:comet InDesign® Plug-Ins, comet_pdf

static int productlist::build(
  char* statement = "watched",
  int flags = 0,
  char* errmess = 0,
  ItemRef baseFrame = 0,
  int removeFrame = 0,
  int pageNum = -1,
  char* layerName = "",
  char* defaultMasterpage = "",
  int gridID = 0,
  int pageitemID = 0,
  int anchor = 0,
  float left = 0.0,
  float top = 0.0,
  float right = 0.0,
  float bottom = 0.0,
  int purgeSequence = 0,
  char* sequName = "",
  int preScript = kNoRule)

Produktaufbau. Wie document::build_products.


priint:comet InDesign® Plug-Ins

document::build_products

static int productlist::build_list(
  ProductList pl,
  int flags = 0,
  char* errmess = 0,
  ItemRef baseFrame = 0,
  int removeFrame = 0,
  int pageNum = -1,
  char* layerName = "",
  char* defaultMasterpage = "",
  int gridID = 0,
  int pageitemID = 0,
  int anchor = 0,
  float left = 0.0,
  float top = 0.0,
  float right = 0.0,
  float bottom = 0.0,
  int purgeSequence = 0,
  char* sequName = "",
  int preScript = kNoRule)

Produktaufbau. Wie document::build_products, als erster Parameter wird eine Produktliste übergeben. Der Aufruf führt kein Präskript aus. Die Liste der Produkte liegt bereits im Skript vor und kann dort entsprechend vorbereitet werden.

Die Anweisung ist insbesondere für den Serverbetrieb geeignet, in dem keine Produktpalette zur Verfügung steht. Im normalen InDesign®-Betrieb können Sie fast immer die (etwas schnellere) Anweisung document::build_products verwenden. Einzige Ausnahme ist, wenn Sie die Liste der Produkte im Skript zusammenstellen oder die Ergebnisliste von productlist::get im Skript noch überarbeitet werden soll.

#include "internal/types.h"
#include "internal/products.h"

Aufbau einer kleinen Auswahl von Produkten.

#include "internal/products.h"
int gGridID = 12;
int append_product (ProductList li, int id1, int id2, int id3, int pi) { Product p;
if (!li) return 1;
p = product::alloc (); product::set (p, kID, id1); product::set (p, kID2, id2); product::set (p, kID3, id3); product::set (p, kPageitemid, pi);
productlist::append (li, p, 1);
return 0; }
int main () { ProductList li = productlist::alloc ();
append_product (li, 100, 10, 0, 2); append_product (li, 300, 10, 0, 2); append_product (li, 300, 10, 0, 2); append_product (li, 400, 10, 0, 12); append_product (li, 500, 10, 0, 2);
productlist::build_list (   li,   kUseDefaultGrid,   0, 0, 0, -1, "", "", gGridID);
productlist::clear (li, 1);
return 0; }


priint:comet InDesign® Plug-Ins

static ProductList productlist::load(
  int sourceType,
  void* dsn,
  int format,
  char* statement = "",
  List values = 0 )

Lade eine Produktliste aus einer XML oder CSV-Datei, einer Datenbankverbindung oder einem XML-Baum.

Name Typ Default Beschreibung
Return ProductList   Zeiger auf Produktliste. Die Liste muss vom Skript wieder gelöscht werden. 0 - Fehler beim Laden
sourceType int Typ der Datenquelle. Mögliche Werte sind:

- kXML
XML-Datei
- kCSV CSV Datei
- kDB Datenbank- oder SOAP Verbindung
- kXMLTree XML Struktur
dsn void * abhängig vom Typ muss hier ein gültiger Pfad (kXML und kCSV), eine Datenbankverbindung oder ein XMLTree übergeben werden  
format int kStandardSet Format der Daten. Dieser Wert gibt an, welche Ergebnisspalten in der Datenquelle erwartet werden. Mögliche Werte sind:

- kStandardSet (ID,ID2,ID3,StringID) - kExtendedSet (ID,ID2,ID3,StringID,Pageitemid) - kCustomSet selbstdefiniertes Set. In diesem Fall muss als 5. Parameter eine Liste von erwarteten Ergebnisspalten angegeben werden
statement String oder char* "" Abfrage, die auf die Datenquelle angewendet werden soll. Mögliche und sinnvolle Werte hängen vom Datenquelltyp und Format ab.
- kXML, kXMLTree: Bei den Formaten kStandardSet und kExtendedSet ist der Parameter optional, wenn die XML-Datei die in den Beispielen gezeigte Struktur hat. - kCSV: Der Parameter wird nicht ausgewertet. - kDB: Der Parameter ist in jedem Fall erforderlich.
List values 0 Liste von Ergebnisspalten, die in der Datenquelle erwartet werden. Die Reihenfolge der Werte in der Liste muss der Reihenfolge in der Datenquelle bzw. der durch die Abfrage festgelegten Reihenfolge der Ergebnisspalten entsprechen.
Siehe Beispiele für die Verwendung des Befehls.
#include "internal/products.h"

XML Standardformat

//
// <productlist>
//   <product>
//     <ID/>
//     <ID2/>
//     <ID3/>
//     <StringID/>
//   </product>
// </productlist>
//
ProducList pl = productlist::load (kXML, "/Export/catalogue_data/2007_05.xml");

XML Erweitertes Format

//
// <productlist>
//   <product>
//     <ID/>
//     <ID2/>
//     <ID3/>
//     <StringID/>
//     <Pageitemid/>
//   </product>
// </productlist>
//
ProducList pl = productlist::load (kXML, "/Export/catalogue_data/2007_05.xml");

Laden aus XML Struktur (z.B. zur Auswertung von als XML String übergebenen Parametern)

XMLTree        tree;
ProductList      pl;
tree = xmlquery::parse ("<productlist><product><ID/><ID2/><ID3/><StringID/></product></productlist>"); pl = productlist::load(kXMLTree, tree);

Datenbank / eigene Ergebnissets

ProductList		pl;
int				dbc = datapool::get_dbc (); // DBC oder SOAP
// Zunächst wird die Liste erwarteter Rückgabespalten erstellt
List			values = list::alloc ();
list::insert (values, kID); list::insert (values, kID2);
pl = productlist::load(kDB, dbc, kCustomSet, "SELECT ID,ID2 FROM product", values);
// die wie oben geladenen Produktlisten können bspw. so weiterverarbeitet werden: productlist::build_list (pl, kUseDefaultGrid, 0, 0, 0, 1, "produktlayer", "A-Mustervorlage", 1, 0, 0);

Version 1.4.1 (15. Juni 2007)

priint:comet InDesign® Plug-Ins, comet_pdf

static int productlist::seek(ProductList pl, int pos)

Setze den internen Listenzeiger auf das durch pos angegebene Element

Name Typ Default Beschreibung
Return int   1, wenn die Position gefunden und der Zeiger positioniert werden konnte, sonst 0
pl ProductList - Zeiger auf eine gültige Produktliste    
pos int - Position, auf die der Iterator gesetzt werden soll


priint:comet InDesign® Plug-Ins, comet_pdf

static int productlist::establish(
  ProductList pl,
  ItemRef dref = 0,
  int pageNum = -1,
  char* layer = "",
  int pageTemplate = 0,
  int pageItem = 0,
  int flags = 0,
  int preScript = 0,
  int singleSequences = 0,
  char* sequName = 0,
  char* errMess = 0,
  char* ignoreLayers = 0,
  int snippetMatchFlag = 0,
  char* snippetContext = 0,
  int snippetFilterFunc = 0,
  ...)

Produktaufbau mit Seitentemplates.

Produktaufbau mit Hilfe von Seitentemplates. Hier finden Sie ein kurzes Tutorial zum Produktaufbau mit Seitentemplates. Hier ist ein Flussdiagramm des Produktaufbaus:

Hier ist ein Flussdiagramm des Produktaufbaus:

#NextItem #FixTemplate #FixPageElement #ExecPageitemScript #CreateNewPage #SetPageTemplate #FixTemplate #PrepareOversets #ExecPreRule #Full #Full #Full #ExecPostRule #NextPageElement #NextPageElement #RemoveFramesFromGrid #MoveFrames Finished #Continuation #FixTemplate #ExecPageitemScript #CreateTextframe #InsertTemplate #MoveFrames #MoveFrames #MoveFrames #LinkPlaceholders #LinkPlaceholders #LoadPlaceholders #LoadPlaceholders #BuildElements #Reorg #LayoutRules #LayoutRules #LayoutRules #LayoutRules #IsProduct #PageCreated #OversetsSmaller #HasOversets #CheckBefore #CheckAfter #PageCreated #PageCreated #OnePageCreated #CheckPageType #ContinueCall #ContinueCall #IsTextflow #ProductExists #BuildSupport2 #BuildSupport2 #BuildSupport2 #BuildSupport2 #BuildSupport2 #BuildSupport2 #BuildSupport2 #BuildSupport2 #BuildSupport2

Aktionsbeschreibungen:

Name Typ Default Beschreibung
Return int   0 oder Fehlercode. Für eine genauere Fehlerbeschreibung kann der Funktion ein allokierter String für die Fehlerbeschreibung übergeben werden, siehe Parameter errmess.
pl ProductList - aufzubauende Produkte
dref ItemRef - Zieldokument für den Aufbau

0 : Aktuelles Dokument
int pageNum - Startseite für den Aufbau

0 : Aktuelle Seite des Frontdokumentes

Unter InDesign® Server und comet_pdf ist die aktuelle Seite nicht definiert.

layer String oder char* - Name der Zielebene

"" : Aktuelle Ebene des Zieldokumentes
int pageTemplate - Start-Seitentemplate für den Aufbau

Seitenwechsel im Aufbau erreichen Sie durch das Einfügen von Produkten mit kProductType = 4 (Seitentemplate) in die Produktliste. Hier finden Sie ein Beispiel.
int pageItem 0 Verwende dieses Template für den Aufbau. Anwendung siehe unter Flags (kPreferDefaultPageItem)
int flags 0 Steuerflags.

kPreferDefaultPageItem . Verwende das Default-Template pageItem für alle Produkte, sonst nur, wenn im Produkt keine eigenes Template definiert ist.

kSkipEmptyTemplates : überspringe beim Aufbau alle Produkte, für die kein Template definiert ist. (verfügbar ab Comet 3.2 R2187)

kShowProgress Progressbalken zeigen

kCheckIfNotExists : Prüfe vor dem Einfügen, ob das Produkt bereits im Dokument verplant ist, wenn ja, wird es nicht mehr eingefügt.

kAutoDetectType : Werden Templates als Text eingefügt, muss entschieden werden, ob ein Templaterahmen als Inline oder sein Inhalt als Text eingefügt werden. Sie können diese Einstellung in den Aufbauregekn von Rahmen machen. Mit gesetztem kAutoDetectType wird wie folgt verfahren : Bei Textrahmen wird der Inhalt eingefügt, sost der Rahmen als Inline.

kSuppressAlerts Nachrichten und Warnungen unterdrücken. Einige Meldungen wie "Durch diese Werte würde ein Objekt von der Arbeitsfläche verdrängt werden." sind so tief in InDesign® eingebaut, dass Sie durch Plugins leider nicht unterdrückt werden können.

kIgnoreErrors Fehler beim Aufbau ignorieren. Durch fehlerhafte Produkte können 'Löcher' im Aufbau entstehen. Durch Reorganisation des Dokumentes können diese Löcher gefüllt werden.

kPreferExistingPages Dokumentseiten, die bereits mit einem Seitentemplate verknüpft sind, verwenden dieses Seitentemplate für Aufbau und Reorganisation. Ist die letzte Seite erreicht, geht es gemäß der Seitentemplate-Nachfolger Regel weiter.

kPreferProductPT [Ab v3.3 R2731] In den Produkten können Seitentemplates hinterlegt sein. Der Name des Seitentemplates steht in der Produktrecherche durch @ getrennt hinter dem Template des Produktes. Das Seitentemplate kann im Feld gridID der Panelstatements zum Laden der Produkte festgelegt werden.
Jeder Seitentemplate-Wechsel in den Produkten erzwingt dann einen Seitenwechsel. Die neue Seite wird mit dem festgelegten Seitentemplate verknüpft und der Produktaufbau dann auf dieser Seite fortgesetzt. Produkte ohne definiertes Seitentemplate verwenden das ausgewählte Standard- Seitentemplate.
ACHTUNG : In der vorliegenden Version können mit diesem Verfahren nur einfache Seitenumbrüche gemacht werden. Umbrüche auf eine neue LINKE oder RECHTE Seite sind damit noch nicht möglich.

kLoadMasterItems [Ab v3.3 R3051] Verlinkte Musterseiten-Rahmen werden nach dem Produktaufbau automatisch freigestellt und geleaden. Dabei werden alle Seiten des Dokumentes bearbeitet. Die Einstellung wird ins Dokument übernommen und bei folgenden Seitenreorganisationen ausgewertet : Ist das Flag gesetzt, werden auch nach Reorganisationen die Musterseiten-Rahmen bearbeitet, sonst nicht.
Freigestellte Musterseiten-Rahmen lieger immer über den nicht freigestellten Rahmen und können diese mglw. verdecken. Bei Bedarf müssen Rahmen, die im Vordergrund liegen sollen, mit einem leeren Platzhalter versehen und entsprechend arrangiert werden.

kSuppressLoad [Ab v4.1.8 R30123] Laden der Platzhalter und Aufbau wiederholender Elemente unterdrücken.

kSuppressAutoExtent (0x2000) [Ab v4.3 R36094] Wird der Aufbau in einem N:1-Seitenelement begonnen, werden die neuen Produkte ohne Reorganisation angefügt. Beachten Sie bitte die hier beschriebenen Einschränkungen!
preScript int kNoRule ID des Vorbereitungsskriptes. Das Skript wird ausgeführt, nachdem die Liste der zu importierenden Produkte ermittelt worden ist und kann dazu verwendet werden, die Produktliste zu bearbeiten. Siehe dazu auch product::set, product::clone, productlist und unter dem Absatz Skriptunterstützung.

kNoRule - Kein Skript ausführen
Sonst : ID des Skriptes, Skriptaufbau siehe hier.
singleSequences int 0 Die Angabe wird ignoriert.
sequName String oder char* "" Die Angabe wird ignoriert.
errmess String oder char* 0 Zeigt die Variable auf einen allokierten String (z.B. vom Typ char[8192]), kann hier eine Fehlermeldung erhalten werden.
ignoreLayers, ... String oder char* 0 [Ab Comet 3.2] Beliebig lange Liste von Ebenennamen. Neu eingefügte Produkte dürfen Rahmen dieser Ebenen überdecken. Die Liste wird durch die Parameteranzahl oder durch 0 begrenzt.

"invisibles" : Alle unsichtbaren Ebenen
"except name" : Alle außer dieser Ebene
"behind name" : Alle hinter dieser Ebene
"background" : Die unterste Ebene
sonst : Name der Ebene. Ist diese Ebene die aktive Ebene des Dokumentes, wird die Angabe ignoriert.

Es können mehrere ignoreLayers angegeben werden. Sofern nach den Ebenen noch Snippet-Parameter (siehe unten) angegeben werden sollen, muß die Liste mit 0 abgeschlossen werden. Für keine ignoreLayers ist entsprechend eine alleinstehende 0 anzugeben.
snippetMatchFlags int kSnippetsNever [Ab v4.1.6 R26609] Soll der Aufbau Comet-Snippets verwenden? Die Angaben können beliebig addiert werden, z.B. kSnippetMatchesProduct + kSnippetMatchesTemplate

kSnippetsNever : Nein, keine Snippets verwenden
kSnippetMatchesProduct : Ja, wenn die Produkt-IDs übereinstimmen
kSnippetMatchesTemplate : Ja, wenn die Template-IDs übereinstimmen
kSnippetMatchesDocument : Ja, wenn die Dokumente übereinstimmen
kSnippetMatchesLayer : Ja, wenn die Ebenen übereinstimmen
kSnippetMatchesContext : Ja, wenn der (freie) Kontext übereinstimmt
kSnippetFallbackToTemplate : Sollen Comet-Snippets verwendet werden, kann es passieren, dass ein Snippet zu groß für einen Stellplatz ist. Hat das ursprüngliche Template eine Fortsetzung, wäre es in dieser Situation wünschenswert, vielleicht doch dieses ursprüngliche Template für das Produkt zu verwenden (und zu laden). Dann addieren Sie diesen Wert zu snippet_matches.
kSnippetCreate : Während des Aufbaus fehlende Snippets anlegen
snippetContext String oder char* 0 [Ab v4.1.6 R26609] frei zu vergebender String, der einen Kontext des Snippets bezeichnet. Dieser wird während des Aufbaus sowohl für die Snippetsuche (sofern kSnippetMatchesContext gesetzt ist) verwendet, als auch beim Anlegen neuer Snippets hinterlegt.
snippetFilterFunc int 0 [Ab v4.1.6 R26609] Zeiger auf eine Funktion, die vor Anlegen eines Snippets ausgeführt werden soll. Diese Funktion muß im selben script (oder über ein include eingebunden) implementiert sein. Signatur der Funktion ist int (*snippetFilterFunc)(Product p).

Gibt die Funktion 1 zurück, wird für das entsprechende Produkt ein Snippet angelegt, bei 0 wird dieses Produkt übersprungen. Ein Beispiel finden Sie unter prefs::snippet_filter
#include "internal/types.h"
#include "internal/products.h"
#include "internal/products.h"
#include "internal/types.h"
int main () { ProductList pl = productlist::get ("selected"); int result;
result = productlist::establish (   pl,   0, // front document   -1, // current page   "", // front layer   2, // page template   0, // default template   kShowProgress, // flags, (showprogress)   0, // pre script   0, // no single sequences   "", // sequence name not used   0 // errmess ); if (result == 0) wlog ("", "# Establishing %d products done\n", productlist::length (pl)); else wlog ("", "# Establishing %d products returned error %d\n", productlist::length (pl), result);
return 0; }

Comet 3.0, 28. Oktober 2008

priint:comet InDesign® Plug-Ins, comet_pdf

is_in_build
trace_build
get_established
reorganize
comet.product.establish

static int productlist::grid_build(
  ItemRef docRef,
  PlanningList plannings,
  int flags = 128,
  char* buildMessage = 0,
  char* layer = 0,
  int preScript = 0,
  int snippetMatchFlags = 0,
  char* snippetContext = 0,
  int snippetFilterFunc = 0)

Baue eine Liste von Planning-Objekten gemäßl; der hinterlegten Seiten, Koordinaten und Dimensionen auf.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode.
docRef ItemRef - Dokument
0 : aktuelles Dokument
plannings PlanningList - Liste von Planning Objekten
flags int - Flags zur Steuerung des Aufbaus.
Prinzipiell sind alle von productlist::establish unterstützten flags erlaubt, sinnvoll n diesem Zusammenhang sind vor allem:
0 : Stellplatzgröße ignorieren. Impliziert: bestehenden Inhalt ebenfalls ignorieren kCheckGridElementSize : Stellplatzgröße beachten
buildMessage char * 0 Buffer für Fehlermeldungen während des Aufbaus
layer char * 0 Zielebene
preScript int kNoRule ID des Vorbereitungsskriptes. Das Skript wird ausgeführt, nachdem die Liste der zu importierenden Produkte ermittelt worden ist und kann dazu verwendet werden, die Produktliste zu bearbeiten. Siehe dazu auch product::set, product::clone, productlist und unter dem Absatz Skriptunterstützung.

kNoRule - Kein Skript ausführen
Sonst : ID des Skriptes, Skriptaufbau siehe hier.
snippetMatchFlags int kSnippetsNever [Ab v5.0 R36398] Soll der Aufbau Comet-Snippets verwenden? Die Angaben können beliebig addiert werden, z.B. kSnippetMatchesProduct + kSnippetMatchesTemplate

kSnippetsNever : Nein, keine Snippets verwenden
kSnippetMatchesProduct : Ja, wenn die Produkt-IDs übereinstimmen
kSnippetMatchesTemplate : Ja, wenn die Template-IDs übereinstimmen
kSnippetMatchesDocument : Ja, wenn die Dokumente übereinstimmen
kSnippetMatchesLayer : Ja, wenn die Ebenen übereinstimmen
kSnippetMatchesContext : Ja, wenn der (freie) Kontext übereinstimmt
kSnippetFallbackToTemplate : Sollen Comet-Snippets verwendet werden, kann es passieren, dass ein Snippet zu groß für einen Stellplatz ist. Hat das ursprüngliche Template eine Fortsetzung, wäre es in dieser Situation wünschenswert, vielleicht doch dieses ursprüngliche Template für das Produkt zu verwenden (und zu laden). Dann addieren Sie diesen Wert zu snippet_matches.
kSnippetCreate : Während des Aufbaus fehlende Snippets anlegen
snippetContext String oder char* 0 [Ab v5.0 R36398] frei zu vergebender String, der einen Kontext des Snippets bezeichnet. Dieser wird während des Aufbaus sowohl für die Snippetsuche (sofern kSnippetMatchesContext gesetzt ist) verwendet, als auch beim Anlegen neuer Snippets hinterlegt.
snippetFilterFunc int 0 [Ab v5.0 R36398] Zeiger auf eine Funktion, die vor Anlegen eines Snippets ausgeführt werden soll. Diese Funktion muß im selben script (oder über ein include eingebunden) implementiert sein. Signatur der Funktion ist int (*snippetFilterFunc)(Product p).

Gibt die Funktion 1 zurück, wird für das entsprechende Produkt ein Snippet angelegt, bei 0 wird dieses Produkt übersprungen. Ein Beispiel finden Sie unter prefs::snippet_filter

v4.3

priint:comet InDesign® Plug-Ins, comet_pdf

static int productlist::trace_build(
  ItemRef docRef,
  int pg,
  char* fileName)

Füge der Aufbauverfolgung ein weiteres Bild der aktuellen Situation hinzu. Das Bild bekommt die automatisch die nächste Zählnummer. Die Anweisung hat nur dann eine Wirkung, wenn die Aufbauverfolgung aktiviert ist (Menü Flyout der Produktrecherche -> Verschiedenes -> Aufbauverfolgung).

Name Typ Default Beschreibung
Return int   0 oder Fehlercode.
docRef ItemRef - Dokument
0 : aktuelles Dokument
pg int - 1-basierte Seite, die "fotografiert" werden soll.
fileName String oder char* - Name der erzeugten Datei. Der Name wird an die automatische vergebene Zählnummer angefügt. Gleichzeitig erscheint im Logfile eine zugehörige Meldung:

# Trace image created : '$CACHE/BuildTrace/NN_p1_fileName.png'

v4.0.5 R11600, 10. Jun. 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static ProductList productlist::get_established(
  ItemRef docRef = 0,
  int startPage = 1,
  ItemRef behindRef = 0)

Erzeuge eine neue Liste aus den in einem Dokument enthaltenen Produkten und den verwendeten Seitentemplates. Die Liste entspricht der Liste, die in der Palette Produkte des Dokumentes gezeigt wird. Weitere Informationen zu Produktlisten und Produkten in Listen finden Sie hier.

Name Typ Default Beschreibung
Return ProductList   Zeiger auf die neue Liste
docRef ItemRef 0 Dokument
0 : aktuelles Dokument
startPage int 1 Startseite, ab der das Dokument durchsucht werden soll (1-basiert)
behindFrame ItemRef 0 Erst hinter diesem Rahmen mit der Suche beginnen. Ist der Wert ungleich 0, wird die Angabe der Startseite ignoriert.
#include "internal/types.h"
#include "internal/products.h"

Suche alle aufgebauten Produkte der Seite des ausgewählten Rahmens und schreibe sie ins Logfile.

#include "internal/products.h"
int main () { ProductList pl; Product p; int pg1 = page::get (gFrame);
pl = productlist::get_established (0, pg1, 0); if (!productlist::length (pl)) { wlog ("", "No products found!\n"); return 0; }
wlog ("", "Products found on page %d\n", pg1); for (p = productlist::first (pl); p; p = productlist::next (pl)) { if (product::get (p, kProductType) != 4) { wlog ("", "[%d, %d, %d, '%s'] : used template %d\n",   product::get (p, kID),   product::get (p, kID2),   product::get (p, kID3),   product::gets (p, kStringID),   product::get (p, kPageitemid)); } }
return 0; }

Version 3.2 R2110, 7. Sept. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

clear
release
comet.product.getEstablished

static int productlist::reorganize(
  ItemRef docRef = 0,
  ProductList plist = 0,
  ItemRef firstFrame = 0,
  int thisPageOnly = 0,
  int flags = 1,
  char* errmess = 0,
  int* failedIndex = 0,
  Product* firstEntry = 0)

Reorganisation eines Dokumentes. Ist die übergebene Liste der Produkte leer oder 0, wird sie aus dem Dokument ermittelt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Dokument
0 : aktuelles Dokument
plist ProductList 0 Liste der Produkte des Dokumentes (z.B. aus get_established)

0 : Ermittle die Produkte direkt aus dem Dokument
firstFrame ItemRef 0 Beginne bei der Cometgruppe dieses Rahmens mit dem Aufräumen.

0 : Angabe ignorieren und gesamtes Dokument aufräumen
thisPageOnly int 0 Nur diese Seite aufräumen

0 : Angabe ignorieren. Das gesamte Dokument wird (mglw. erst hinter firstFrame beginnend) aufgräumt.

>0 : 1-basierter Seitenindex. In diesem Fall werden die Angaben firstFrame und plist ignoriert. Der Aufruf entspricht dem Menü "Seite aufräumen". Ist zusätzlich das Flag kFillPage gesetzt, entspricht der Aufruf dem Menü "Seite füllen und aufräumen".

-2 : Nur die Seite aufräumen, auf der entweder der erste Rahmen des ersten Produktes von plist oder (wenn plist leer ist) der Rahmen firstFrame liegt. Sind beide Angaben leer, wird die erste Seite des Dokumentes aufgeräumt.
flags int kShowProgress Flags

kShowProgress Progressbalken zeigen

kReloadAll Unterdrücke das Kopieren von Texten und Bildern zwischen Rahmen befreundeter Templates und gleicher Kennungen bei Templateänderungen

kSuppressAlerts Nachrichten und Warnungen unterdrücken. Einige Meldungen wie "Durch diese Werte würde ein Objekt von der Arbeitsfläche verdrängt werden." sind so tief in InDesign® eingebaut, dass Sie durch Plugins leider nicht unterdrückt werden können.

kIgnoreErrors Fehler beim Aufbau ignorieren. Durch fehlerhafte Produkte können 'Löcher' im Aufbau entstehen. Durch Reorganisation des Dokumentes können diese Löcher gefüllt werden.

kPreferExistingPages Dokumentseiten, die bereits mit einem Seitentemplate verknüpft sind, verwenden dieses Seitentemplate für Aufbau und Reorganisation. Ist die letzte Seite erreicht, geht es gemäß der Seitentemplate-Nachfolger Regel weiter.

kLoadMasterItems [Ab v3.3 R3051] Verlinkte Musterseiten-Rahmen werden nach dem Aufräumen automatisch freigestellt und geleaden. Dabei werden alle Seiten des Dokumentes bearbeitet. Wurde der letzte Produktaufbau mit diesem Flag gemacht, hat die Option (und insbesondere ihr Fehlen) keine Bedeutung : In diesem Fall werden die Musterseiten-Rahmem immer freigestellt und/oder geladen.
Freigestellte Musterseiten-Rahmen lieger immer über den nicht freigestellten Rahmen und können diese mglw. verdecken. Bei Bedarf müssen Rahmen, die im Vordergrund liegen sollen, mit einem leeren Platzhalter versehen und entsprechend arrangiert werden.

kFillPage [Ab v3.4 R5115] und bei thisPageOnly > 0 : Seite vor dem Aufraümen füllen.

kCropPage [Ab v3.4 R5115] und bei thisPageOnly > 0 : Seite gleichzeitig freistellen. Vor und hinter der Seite werden jeweils Produktaufbau-Seitenumbrüche eingefügt.
errmess String oder char* 0 0 oder allokierter Speicher für mögliche Fehlernachrichten. Wenn Sie den char* benutzen, sollte er mind. für 4000 Zeichen Platz haben.
failedIndex int* 0 Listenindex des Produktes, bei dem der erste Fehler auftrat.
firstEntry Product 0 Reorganisiere ab dem gegebenen Eintrag bis zum Ende der Liste plist

0 : Angabe ignorieren

Sonst : Gültiger Eintrag der Produktliste plist. Die Angaben für firstFrame und thisPageOnly werden in diesem Fall ignoriert.
#include "internal/types.h"
#include "internal/products.h"

Version 3.2 R2110, 7. Sept. 2010
thisPageOnly == -2 seit v4.1.7 R27225, 1. Jul 2020
firstEntry seit v4.2 R31320, 1. Aug 2022

priint:comet InDesign® Plug-Ins, comet_pdf

clear
release
comet.product.reorganize

static int productlist::get_default_pageitem()

Welches Template ist in der Produktrecherche als Standard ausgewählt? (Die Einstellung wird in dem Popup oben rechts gemacht). Die Funktion kann nur dann einen Wert liefern, wenn die Palette Produktrecherche geöffnet ist.

Name Typ Default Beschreibung
Return int   0 oder ID des Templates, das in der Produktrecherche als Standard ausgewählt ist. Die Funktion kann nur dann einen Wert liefern, wenn die Palette Produktrecherche geöffnet ist.

Version 3.2.1 R2310, 26. Feb. 2011

priint:comet InDesign® Plug-Ins

static int productlist::sort(LinkList lli, int cmpFunc)

Sortiere eine Liste von Produkten.

Die Vergleichfunktion cmpFunc muss im Skript definiert sein und folgenden Typ haben

   int yourCmpFunction (Product a, Product b)

Die Funktion wird verwendet um zu testen, ob die Reihenfolge der beiden Listenobjekte a und b stimmt oder nicht. Beim Aufruf steht a vor b in der Liste. Soll diese Reihenfolge getauscht werden, geben Sie in der Funktion eine 1 zurück, sonst 0.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
lli ProductList - Gültige Produktliste.
cmpFunc int yourCmpFunction (Product a, Product b) - Vergleichsfunktion. Die Funktion wird verwendet um zu testen, ob die Reihenfolge der beiden Listenobjekte a und b stimmt oder nicht. Beim Aufruf steht a vor b in der Liste. Soll diese Reihenfolge getauscht werden, geben Sie in der Funktion eine 1 zurück, sonst 0.

Die Funktion wird in der Regel lokal im Skript definiert. Globale Variablen des Skriptes dürfen in der Funktion nicht verwendet werden!
#include "internal/types.h"
#include "internal/products.h"

Die Liste der in der Produktrecherche ausgewählten Einträge wird nach verschiendenen Kriterien sortiert und ins Logfile geschrieben.

#include "internal/text.h"
#include "internal/types.h"
#include "internal/products.h"
int w_pli (ProductList pli, char * trailer) { Product p;
wlog ("", "%s\n", trailer); for (p = productlist::first (pli); p; p = productlist::next (pli)) { wlog ("", "[%d %d %d, '%s'] (Template %d): '%s'\n",   product::get (p, kID),   product::get (p, kID2),   product::get (p, kID3),   product::get (p, kStringID),   product::get (p, kPageitemid),   product::gets (p, kRow1)); } wlog ("", "\n"); }
int byName_asc (Product a, Product b) { char s1 [8000]; char s2 [8000];
strcpy (s1, product::gets (a, kRow1)); strcpy (s2, product::gets (b, kRow1));
if (strcmp (s1, s2) > 0) return 1;
else return 0; }
int byName_desc (Product a, Product b) { char s1 [8000]; char s2 [8000];
strcpy (s1, product::gets (a, kRow1)); strcpy (s2, product::gets (b, kRow1));
if (strcmp (s1, s2) < 0) return 1;
else return 0; }
int byTemplate_asc (Product a, Product b) { if (product::get (a, kPageitemid) > product::get (b, kPageitemid)) return 1;
else return 0; }
int byID_asc (Product a, Product b) { if (product::get (a, kID) > product::get (b, kID)) return 1;
else return 0; }
int main () { ProductList pli = productlist::get ("selected");
w_pli (pli, "Original");
productlist::sort (pli, byName_asc); w_pli (pli, "By name (ascent)");
productlist::sort (pli, byName_desc); w_pli (pli, "By name (descent)");
productlist::sort (pli, byTemplate_asc); w_pli (pli, "By template (ascent)");
productlist::sort (pli, byID_asc); w_pli (pli, "By id1 (ascent)");
return 0; }

Version 3.2.1 R2321, 3.3.2011

priint:comet InDesign® Plug-Ins, comet_pdf

static int productlist::update_findstatements(
  int reloadFindStatements,
  int popupSelection,
  int reloadProducts)

Aktualisieren des Popup-Menüs mit den Suchmethoden in der Produktrecherche. Die Anweisung benötigt keine Produktliste.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
reloadFindStatements int 0 Popupmenü neu laden?
0 : nein
1 : ja
popupSelection int -1 Ausgewählter Eintrag des Popup-Menüs (0-basiert). Trennzeilen im Menü werden dabei mitgezählt.
-1 : Auswahl unverändert lassen (wenn möglich)
>= Anzahl der Menüeinträge : Letzten Eintrag auswählen
reloadProducts int 0 Produktliste neu laden?
0 : nein
1 : ja

v3.3 R2819, 6. Mar 2012

priint:comet InDesign® Plug-Ins

static int productlist::create_snippets(
  ItemRef docRef = 0,
  int page = 0,
  int snippetMatchFlags = 0,
  char* snippetContext = 0,
  char* snippetLayer = 0,
  int snippetFilterFunc = 0)

Anlegen von Comet-Snippets der Cometgruppen eines Dokumentes. Existierende Snippets, die denselben Kriterien entsprechen, werden überschrieben, das bedeutet: je spezifischer die Suchkriterien, desto weniger Snippets sind von Aktualisierungen betroffen. Wenn kein passendes Snippet exisitiert, wird ein neuer Eintrag angelegt.

Comet-Snippets werden nur von Produkten ohne Fortsetzungen angelegt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Dokument, von dem die Snippets erzeugt werden sollen.

0 : aktuelles Dokument
page int 0 Welche Seiten sollen verwendet werden?

0 : alle Seiten
> 0 : nur diese Seite
-1 : Cometgruppen der ausgewählten Rahmen
snippetMatchFlags int kSnippetsNever [Ab v4.1.6 R26609] Soll der Aufbau Comet-Snippets verwenden? Die Angaben können beliebig addiert werden, z.B. kSnippetMatchesProduct + kSnippetMatchesTemplate
-1 zeigt den Dialog zur Festlegung der Snippet-Parameter an.

kSnippetsNever : Nein, keine Snippets verwenden
kSnippetMatchesProduct : Ja, wenn die Produkt-IDs übereinstimmen
kSnippetMatchesTemplate : Ja, wenn die Template-IDs übereinstimmen
kSnippetMatchesDocument : Ja, wenn die Dokumente übereinstimmen
kSnippetMatchesLayer : Ja, wenn die Ebenen übereinstimmen
kSnippetMatchesContext : Ja, wenn der (freie) Kontext übereinstimmt
snippetContext String oder char* 0 [Ab v4.1.6 R26609] frei zu vergebender String, der einen Kontext des Snippets bezeichnet. Dieser wird während des Aufbaus sowohl für die Snippetsuche (sofern kSnippetMatchesContext gesetzt ist) verwendet, als auch beim Anlegen neuer Snippets hinterlegt.
snippetLayer String oder char* 0 [Ab v4.1.6 R26609] wenn angegeben, werden Snippets auch auf Ebenen-übereinstimmung geprüft.
snippetFilterFunc int 0 [Ab v4.1.6 R26609] Zeiger auf eine Funktion, die vor Anlegen eines Snippets ausgeführt werden soll. Diese Funktion muß im selben script (oder über ein include eingebunden) implementiert sein. Signatur der Funktion ist int (*snippetFilterFunc)(Product p).

Gibt die Funktion 1 zurück, wird für das entsprechende Produkt ein Snippet angelegt, bei 0 wird dieses Produkt übersprungen. Ein Beispiel hierzu finden Sie unter prefs::snippet_filter
#include "internal/products.h"

v4.0.5 R8410, 10. Jul 2015

priint:comet InDesign® Plug-Ins

remove_snippets

static int productlist::remove_snippets(char* key, ItemRef docRef)

Löschen von Comet-Snippets.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
Snippets eines Dokumentes löschen
key String oder char* - "DOC"
value ItemRef - Dokument, dessen Snippets gelöscht werden sollen

0 : aktuelles Dokument
Dokumentauswahl
key String oder char* - "DOCID" oder "DOCPATH"
value String oder char* - key == "DOCID" : Dokument-ID des Pubservers
key == "DOCPATH" : Vollständiger Pfad des Dokumentes
Produkt-ID
key String oder char* - "RECORDID"
id1 int - ID1 des Produktes, dessen Snippet(s) gelöscht werden sollen
id2 int - ID2 des Produktes, dessen Snippet(s) gelöscht werden sollen
id3 int - ID3 des Produktes, dessen Snippet(s) gelöscht werden sollen
sid String oder char* - StringID des Produktes, dessen Snippet(s) gelöscht werden sollen

v4.0.5 R8410, 10. Jul 2015

priint:comet InDesign® Plug-Ins

create_snippets

static char* productlist::to_xml(ProductList list, char* rootElementName = "products")

Generiere die XML Struktur eines ProductList-Objekts.

Wenn Sie über die Verwendung dieser Funktion nachdenken, sind Sie möglicherweise an näheren Informationen zur Interaktion von cscript mit auf dem PubServer als PlugIn bereitgestellten Java-Methoden interessiert. Mehr Informationen dazu finden Sie hier.

Name Typ Default Beschreibung
Return char *   xml string oder 0 bei Fehlern. Der Ergebnisstring ist nur bis zum nächsten Aufruf einer to_xml-Funktion gültig und darf nicht verändert oder freigegeben werden.
list ProductList - Object
rootElementName String oder char* products Name des Root-Elements

4.0.5 R9650
comet.publication.toXMLProductList

static ProductList productlist::from_xml(char* xml)

Generiere eine ProductList-Objekt aus einer XML Struktur.

Es gibt zwei Formate in denen Produktlisten übergeben werden können:

Dieses Format enthält alle Angaben, die die Produkte einer Produktrecherche kennen (vgl. hier). Das Format wird im PubServer-Umfeld verwendet und die XML-Beschreibung wird als Stringeingabe dieser Funktion erwartet.

Wenn Sie über die Verwendung dieser Funktion nachdenken, sind Sie möglicherweise an näheren Informationen zur Interaktion von cscript mit auf dem PubServer als PlugIn bereitgestellten Java-Methoden interessiert. Mehr Informationen dazu finden Sie hier.

<products xsi:type="cscript-products" xmlns:xsi="http:www.w3.org/2001/XMLSchema-instance" xmlns:xs="http:www.w3.org/2001/XMLSchema">
 	<product>
 		<classId>0</classId>
 		<column1/>
 		<column2/>
 		<docId>0</docId>
 		<gridElementId>0</gridElementId>
 		<gridElementName/>
 		<gridId>0</gridId>
 		<gridName/>
 		<gridElmentId>0</gridElmentId>
 		<pageTemplateElementId>0</pageTemplateElementId>
 		<pageTemplateId>0</pageTemplateId>
 		<forceDelete>false</forceDelete>
 		<id>1</id>
 		<id2>0</id2>
 		<id3>0</id3>
 		<stringId/>
 		<masterPage/>
 		<pageItemId>0</pageItemId>
 		<preRuleId>0</preRuleId>
 		<postRuleId>0</postRuleId>
 		<documentPosition>-1</documentPosition>
 		<toDelete>0</toDelete>
 		<start>-1</start>
 		<end>-1</end>
 		<type>4</type>
 		<tagId1>0</tagId1>
 		<tagId2>0</tagId2>
 		<pageType>1</pageType>
 		<preRuleParams/>
 		<postRuleParams/>
 		<adParams/>
 		<snippetAttribute/>
 	</product>
 	<product>
 		<classId>0</classId>
 		<column1/>
 		<column2/>
 		<docId>0</docId>
 		<gridElementId>0</gridElementId>
 		<gridElementName/>
 		<gridId>0</gridId>
 		<gridName/>
 		<gridElmentId>0</gridElmentId>
 		<pageTemplateElementId>0</pageTemplateElementId>
 		<pageTemplateId>0</pageTemplateId>
 		<forceDelete>false</forceDelete>
 		<id>1</id>
 		<id2>0</id2>
 		<id3>0</id3>
 		<stringId/>
 		<masterPage/>
 		<pageItemId>1</pageItemId>
 		<preRuleId>0</preRuleId>
 		<postRuleId>0</postRuleId>
 		<documentPosition>-1</documentPosition>
 		<toDelete>0</toDelete>
 		<start>-1</start>
 		<end>-1</end>
 		<type>0</type>
 		<tagId1>0</tagId1>
 		<tagId2>0</tagId2>
 		<pageType>-1</pageType>
 		<preRuleParams/>
 		<postRuleParams/>
 		<adParams/>
 		<snippetAttribute/>
 	</product>
</products>

Dieses Format enthält alle Angaben, die für einen Produktaufbau bzw. eine Reorganisation nötig sind. Das Format kann ausschließlich über Eingabedateien gelesen werden. Die Pfadangabe erfolgt hinter einem führenden file: im Parameter xml der Funktion. Gültige items.xmls erhalten Sie z.B. mit Hilfe des Sichern-Buttons der Palette Produkte des Dokumentes aus einem Dokument mit vorher aufgebauten Produkten.

<?xml version="1.0" encoding="utf-8"?>
<items version="4.2" pluginRevision="33067" ref="document" documentID="" spreadID="" pageID="" groupID="" elementID="" importFlags="0x0" documentPath="" documentName="" isMissingPlugIns="0" isConverted="0" isModified="1" isReadOnly="0">
 	<item>
 		<ID>1</ID>
 		<ID2>0</ID2>
 		<ID3>0</ID3>
 		<stringID/>
 		<pageitemID>0</pageitemID>
 		<type>pagetemplate</type>
 		<pageType>1</pageType>
 		<layout_layers/>
 		<document-position>-1</document-position>
 		<groupID>0</groupID>
 		<classID>3</classID>
 		<status>normal</status>
 		<elementID>0</elementID>
 		<preruleID>0</preruleID>
 		<preruleParams/>
 		<postruleID>0</postruleID>
 		<postruleParams/>
 		<keepWithNext>0</keepWithNext>
 	</item>
 	<item>
 		<ID>1</ID>
 		<ID2>0</ID2>
 		<ID3>0</ID3>
 		<stringID/>
 		<pageitemID>1</pageitemID>
 		<type>product</type>
 		<pageType>-1</pageType>
 		<layout_layers/>
 		<document-position>-1</document-position>
 		<groupID>0</groupID>
 		<classID>3</classID>
 		<status>normal</status>
 		<elementID>0</elementID>
 		<preruleID>0</preruleID>
 		<preruleParams/>
 		<postruleID>0</postruleID>
 		<postruleParams/>
 		<keepWithNext>0</keepWithNext>
 	</item>
<items>

Name Typ Default Beschreibung
Return ProductList   Objekt vom Typ ProductList. Dieses Objekt muss mit productlist::release wieder freigegeben werden.
xml String oder char* - Gültiger XML-String einer products.xml

"file://..." [seit v4.2 R33100, nicht unterstützt von Illustrator] Angabe eines Pfades auf eine items.xml XML-Datei. Beachten Sie bitte, dass die Syntax einer items.xml anders ist als die einer products.xml. Folgende Pfadangaben werden unterstützt:
  • Vollständige Pfade, z.B. file:///Users/paul/Desktop/myproducts.xml
  • ~ am Anfang des Pfades wird ersetzt durch das Home-Verzeichnise ($HOME) des aktuellen Benutzers, z.B. file://~/Desktop/myproducts.xml
  • Mit einem definierten Alias beginnende Pfade, z.B. file://$DESKTOP/myproducts.xml
  • Unvollständige Pfade werden relativ zum Pfad des aktuellen Front-Dokumentes ausgelöst (wenn es so einen Pfad gibt).

4.0.5 R9650
"file://..." seit v4.2 R33100, 20. Juni 2023

priint:comet InDesign® Plug-Ins

comet.publication.fromXMLProductList

static int productlist::add_all(
  ProductList target,
  ProductList src,
  int deleteFromSource)

Füge alle Elemente der Liste src in die Liste target ein. Bei deleteFromSource != 0 werden die Elemente aus der Quellliste entfernt (aber nicht freigegeben)

Name Typ Default Beschreibung
Return int   0 oder Fehlercode.
target ProductList - Zielliste  
src ProductList - Quellliste  
deleteFromSource 0 Elemente aus der Quelliste entfernen  

4.0.5 R9700

priint:comet InDesign® Plug-Ins

static int productlist::is_in_build(int* pageTemplateID = 0, int* elementSeq = 0)

Befindet sich das aktuell ausgeführte Skript in einem Produktaufbau oder nicht?

Name Typ Default Beschreibung
Return int   0 : Nein, es ist kein Produktaufbau aktiv

1 : Ja
pageTemplateID int* 0 Bei Rückgabewert 1 : ID des aktuell verwendeten Seitentemplates
elementSeq int* 0 Bei Rückgabewert 1 : Sequenznummer des aktuell verwendeten Seitenelementes

4.1.8 R28440, 21. Apr 2021

priint:comet InDesign® Plug-Ins, comet_pdf

static int productlist::get_build_trace(
  int* on = 0,
  int* showNails = 0,
  int* showUIDs = 0,
  int* showEdges = 0,
  float* resolution = 0)

Aktuelle Einstellungen der Aufbauverfolgung erfragen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
on int* 0 Ist die Aufbauverfolgung an?

0 : Wert ignorieren sonst : Bei erfolgreicher Ausführung ist der Inhalt der Variable 0 (aus) oder 1 (an)
showNails int* 0 Zeigt die Aufbauverfolgung Nägel und Magnete?

0 : Wert ignorieren
sonst : Bei erfolgreicher Ausführung ist der Inhalt der Variable 0 (nein) oder 1 (ja)
showUIDs int* 0 Zeigt die Aufbauverfolgung Rahmen-UIDs?

0 : Wert ignorieren
sonst : Bei erfolgreicher Ausführung ist der Inhalt der Variable 0 (nein) oder 1 (ja)
showEdges int* 0 Zeigt die Aufbauverfolgung Rahmenkanten?

0 : Wert ignorieren
sonst : Bei erfolgreicher Ausführung ist der Inhalt der Variable 0 (nein) oder 1 (ja)
resolution float* 0 Auflösung der Bilder der Aufbauverfolgung

0 : Wert ignorieren
sonst : Bei erfolgreicher Ausführung enthält die Variable die Bildauflösung.
format char* oder String 0 Das aktive Bildformat.

0 : Wert ignorieren
sonst : Bei erfolgreicher Ausführung enthält die Variable das Bildformat.

v4.0.5 R14000, 8. Nov 2016

priint:comet InDesign® Plug-Ins

comet.product.getBuildTrace

static int productlist::set_build_trace(
  int on = -2,
  int showNails = -2,
  int showUIDs = -2,
  int showEdges = -2,
  float resolution = 0.0)

Aufbauverfolgung (de)aktivieren. Nach Neustart von InDesign® wird die Aufbauverfolgung automatisch deaktiviert!

Die Aufbauverfolgung führt zu wesentlich längeren Aufbauzeiten und hinterläßt mglw. sehr viele Daten. Bilder werden immer im Ordner $CACHE/BuildTrace abgelegt. Sie sollten diesen Ordner von Zeit zu Zeit löschen!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
on int -2 Aufbauverfolgung aktivieren?

-2 : Unverändert lassen
-1 : Toggle
0 : Aus
>0 : An
showNails int 0 Nägel und Magnete zeigen?

-2 : Unverändert lassen
-1 : Toggle
0 : Nein
>0 : Ja
showUIDs int 0 Rahmen-UIDs zeigen?

-2 : Unverändert lassen
-1 : Toggle
0 : Nein
>0 : Ja
showEdges int 0 Rahmenkanten zeigen?

-2 : Unverändert lassen
-1 : Toggle
0 : Nein
>0 : Ja
resolution float 0 Auflösung der Bilder der Aufbauverfolgung

0.0 : Wert ignorieren
sonst : Bildauflösung in px/pt. Auflösungen werden automatisch auf ganze Werte abgerundet. Werte werden auf den Bereich [20.0 - 600.0] begrenzt.
format char* oder String 0 Bildformat der Ausgabedateien.

0: Unverändert lassen. Default ist "jpg".

Gültige Werte: "jpg", "JPG", "png", "PNG"

Hier ein einfaches Javascript mit einem Produktaufbau des Comic-Showcases.

var gOptions    = app.comet.ping () + ";-1;";
var myPath  	= "/Users/paul/Desktop/aaa.indd";
var gScriptID = 2006; var gScript = "gray">"\ \ #include \"internal/types.h\"\ #include \"internal/text.h\"\ #include \"internal/products.h\"\ \ int main() \ {\ productlist::set_build_trace (1, 1, 1, 0, 56.7);\ return 0;\ }\ ";
app.comet.setEnvironment ("/DATA/CometEnvironment", 2, ""); // Hier muss sich connections.xml befinden app.comet.use ("demo", "", "", false, ""); // Diesen Eintrag aus connections.xml verwenden
app.comet.documentOpen (myPath, true, gOptions);
app.comet.eval (gScript, '', '');
var gItemsXML ="gray">"\ <item><ID>1</ID><ID2>0</ID2><ID3>0</ID3><stringID>109007</stringID><pageitemID>1</pageitemID></item>\ <item><ID>1</ID><ID2>0</ID2><ID3>0</ID3><stringID>116507</stringID><pageitemID>1</pageitemID></item>\ <item><ID>1</ID><ID2>0</ID2><ID3>0</ID3><stringID>105507</stringID><pageitemID>1</pageitemID></item>\ <item><ID>1</ID><ID2>0</ID2><ID3>0</ID3><stringID>110007</stringID><pageitemID>1</pageitemID></item>\ </items>";
app.comet.build (myPath, // document path   Scope.SPREAD, // Scope.SPREAD | Scope.PAGE   0, // spread or page index   gItemsXML, // items xml   0.0, 0.0, // x / y   gOptions);
app.comet.documentSave (myPath, gOptions); app.comet.documentClose (myPath, gOptions);

v4.0.5 R14000, 8. Nov 2016

priint:comet InDesign® Plug-Ins

comet.product.setBuildTrace

Preconditions
#include "internal/products.h"
#include "internal/products.h"
int main () { ProductList li; Product p; int i;
li = productlist::get ("watched [id3 = 1 or id3=6]"); if (!li) { showmessage ("Keine Produkte"); return 0; }
showmessage ("-- %d --", productlist::length (li)); for ( p = productlist::first (li);   p;   p = productlist::next (li)) { showmessage ("%d : %s (Template %d)",   product::get (p, kID),   product::gets (p, kRow1),   product::get (p, kPageitemid)); }
return 0; }

Seit
Version 1.2.2 (24. Nov. 2004)
Letzte Änderung
30.07.2025, 07:35 Uhr
Autor
Paul Seidel
Siehe auch
product

Alphabetic index HTML hierarchy of classes or Java