Die Klasse stellt Methoden zur Verfügung, um die interne Repräsentation von InDesign®-Objekten zu gewährleisten.

Letzte Änderung :
30.07.2025, 07:35 Uhr

Die Klasse stellt Methoden zur Verfügung, um die interne Repräsentation von InDesign®-Objekten zu gewährleisten.

static ItemList itemlist::alloc()

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

Version 1.2 (21. Juli 2005)

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

static ItemList itemlist::allframes(
  int add_subframes = 0,
  int tagged_only = 0,
  char* layerName = "",
  int groupID = 0L,
  int includePasteboard = 0)

Erzeuge eine Liste aller Rahmen des Dokumentes. Die Liste muss mit itemlist::release wieder gelöscht werden.

Name Typ Default Beschreibung
Return ItemList   Liste aller Rahmen des Dokumentes, muss mit itemlist::release wieder gelöscht werden!!
add_subframes int 0 Unterrahmen auch in die Liste
tagged_only int 0 Nur Rahmen mit gültigen Platzhaltern.

0 heißt, dass auch Rahmen ohne Platzhalter in die Liste aufgenommen werden.
layerName String oder char* "" Wähle nur Rahmen dieser Ebene aus. Existiert die Ebene nicht oder ist die Angabe leer, können sich die Rahmen auf beliebigen Ebenen befinden.

"" : alle Ebenen
"--visible--" : nur sichtbare Ebenen
"--active--" : nur die aktive Ebene
sonst : Gültiger Ebenenname
groupID int 0 Nur Rahmen mit der gegebenen GruppenID werden gefunden
0 : GruppenID ignorieren
includePasteboard int 0 Rahmen, die vollständig auf der Arbeitsfläche liegen auch finden?

0 : Nein, nur Rahmen finden, die einer Seite zugeordnet werden können
sonst : Auch Rahmen der Arbeitsfläche ermitteln
#include "internal/text.h"
ItemList * frames =
 		itemlist::allframes (
 			[add_subframes
 			[, only_tagged]);

Ein Platzhalterskript fügt einen aus mehreren Rahmen bestehenden schwebenden Rahmen ins Dokument und verknüpft ihn an seinem Textanfang. Dazu werden eine Reihe von Templates geladen, die jeweils eine Liste der erzeugten Items enthalten. Diese Items werden in der Liste frames gesammelt, gruppiert und schließlich als schwebender Rahmen mit dem Textbeginn des Platzhalters verknüpft.

#include "internal/text.h"
int main () { DataPool pool = datapool::alloc (); ItemList frames = itemlist::alloc (); ItemRef groupRef = item::alloc (); ItemList items = 0; float l = 0.0; float t = 0.0; float r, b; int i; int textpos;
if (!textmodel::available ()) return 0;
// Füge einige Rahmen ins Dokument ein // Die Templates 2-4 müssen angelegt sein! for (i = 2; i<5; i++) { // Template einfügen // items wird dabei automatisch allokiert items = document::place_items (pool, "data", "pageitems", i, l, t);
// Eingefügte Rahmen sammlen itemlist::appendlist (frames, items);
// Nächste Templateposition // Danach wird die Liste items gelöscht. itemlist::bbox (items, &l, &t, &r, &b); itemlist::release (items); items = 0; t = b + 2.0; }
// Eingefügte Templates gruppieren frame::group (frames, groupRef);
// Gruppe schweben lassen textmodel::floating (groupRef, textmodel::start (),   kRightHanded, 5.0,   kBelowTop, 0.0);
return 0; }

layerName seit Version 1.2.2 (26. Sept. 2005)
"--visible--" und "--active--" set Version 1.4 R310, 8. Feb. 2007
groupID seit Version 1.4 R334 (13. April 2007)
includePasteboard seit v3.3 R5220 (3. Mär 2014)

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

itemlist::selected
itemlist::subframes
itemlist::subframes_of_list
comet.CDocument.getFrames
comet.CLayer.getFrames
comet.CLayer.getItems

static ItemList itemlist::allframes_of_doc(
  ItemRef docRef,
  int add_subframes = 0,
  int tagged_only = 0,
  char* layerName = "",
  int groupID = 0L,
  int includePasteboard = 0)

Erzeuge eine Liste aller Rahmen eines Dokumentes. Die Funktion ist identisch mit itemlist::allframes mit dem einzigen Unterschied, dass als erster Paramenter eine Referenz auf das gewünschte Dokument übergeben wird. Die Liste muss mit itemlist::release wieder gelöscht werden.

Name Typ Default Beschreibung
Return ItemList   Liste aller Rahmen des Dokumentes, muss mit itemlist::release wieder gelöscht werden!
docRef ItemRef 0 Dokument, dessen Rahmen geholt werden sollen
0 : aktuelles Dokument
add_subframes int 0 Unterrahmen auch in die Liste
tagged_only int 0 Nur Rahmen mit gültigen Platzhaltern. 0 heißt, dass auch Rahmen ohne Platzhalter in die Liste aufgenommen werden.
layerName String oder char* "" Wähle nur Rahmen dieser Ebene aus. Existiert die Ebene nicht oder ist die Angabe leer, können sich die Rahmen auf beliebigen Ebenen befinden.
"" : alle Ebenen
"--visible--" : nur sichtbare Ebenen
"--active--" : nur die aktive Ebene
sonst : Gültiger Ebenenname
groupID int 0 Nur Rahmen mit der gegebenen GruppenID werden gefunden
0 : GruppenID ignorieren
includePasteboard int 0 Rahmen, die vollständig auf der Arbeitsfläche liegen auch finden?

0 : Nein, nur Rahmen finden, die einer Seite zugeordnet werden können
sonst : Auch Rahmen der Arbeitsfläche ermitteln

v3.3 R2851, 12.04.2012
includePasteboard seit v3.3 R5220 (3. Mär 2014)

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

allframes
comet.CDocument.getFrames

static ItemList itemlist::pageframes(
  int pageNum,
  int add_subframes = 0,
  int tagged_only = 0,
  char* layerName = "",
  int groupID = 0L,
  char* frameName = 0,
  int includePasteboard = 0)

Erzeuge eine Liste aller Rahmen einer Dokumentseite. Die Liste muss mit itemlist::release wieder gelöscht werden.

Name Typ Default Beschreibung
Return ItemList   Liste aller Rahmen einer Dokumentseite, muss mit itemlist::release wieder gelöscht werden!!
pageNum int - Seitennummer (1-basiert)
-1 : aktuelle Seite

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

add_subframes int 0 Unterrahmen auch in die Liste
tagged_only int 0 Nur Rahmen mit gültigen Platzhaltern. 0 heißt, dass auch Rahmen ohne Platzhalter in die Liste aufgenommen werden.
layerName String oder char* "" Wähle nur Rahmen dieser Ebene aus. Existiert die Ebene nicht oder ist die Angabe leer, können sich die Rahmen auf beliebigen Ebenen befinden.
"" : - alle Ebenen
"--visible--" : nur sichtbare Ebenen
"--active--" : nur die aktive Ebene
sonst : gültiger Ebenenname
groupID int 0 Nur Rahmen mit der gegebenen GruppenID werden gefunden
0 : GruppenID ignorieren
frameName String oder char* 0 (ab CS5 und Comet 3.2) Name der Rahmen. Der Name kann als regulärer Ausdruck gegeben sein. Anstelle von [^\\0]* dürfen Sie dabei einfach % schreiben. Bei der Verwendung von Defaultnamen werden dabei die nichtübersetzten Versionen der Namen verwendet.

0 oder "" : Name ignorieren
includePasteboard int 0 (Comet 3.2) Sollen auch Rahmen, die ganz außerhalb des Seitenbereiches liegen, in die Liste aufgenommen werden? Wenn Sie den Aufruf für verschiedene Seiten eines Spreads aufrufen, werden diese Rahmen jedesmal gefunden.

0 : Rahmen müssen zumindest teilsweise auf der sichtbaren Seite liegen
1 : Rahmen, die vollständig im Arbeitsbereich liegen auch in die Liste aufnehmen.

Hole verschiedene Rahmenlisten und schreibe sie ins Logfile.

int wpageframes (int pg, int addSub, int hasPlaceholder, char * layer, int groupid, char * name, int includePB)
{
    ItemList		fl	= itemlist::pageframes (pg, addSub, hasPlaceholder, layer, groupid, name, includePB);
    int				i;
    ItemRef			fr	= item::alloc ();
wlog ("", "# %d frames found on page %d, layer '%s'\n", itemlist::length (fl), pg, layer); wlog ("", "# Subframes : %d\n", addSub); wlog ("", "# Tagged : %d\n", hasPlaceholder); wlog ("", "# Cometgroup : %d\n", groupid); wlog ("", "# Frame name : '%s'\n", name); wlog ("", "# Include PB : %d\n\n", includePB);
for (i=0; i< itemlist::length (fl); i++) { itemlist::get (fl, fr, i); wlog ("", "# %d (%s)\n", item::getint (fr), frame::get_name (fr)); }
item::release (fr); itemlist::release (fl);
return 0; }
int main () { wpageframes (1, 0, 0, "", 0, "", 0); wpageframes (1, 0, 0, "", 0, "", 1); wpageframes (1, 0, 0, "Ebene 2", 0, "", 0); wpageframes (1, 0, 0, "", 0, "%Cometgroup%", 0);
return 0; }

v1.4 R320 (27. Feb. 2007)
groupID seit Version 1.4 R334 (13. April 2007)
frameName und includePasteboard ab CS5 mit Version 3.2 R2223, 14. Dez. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CPage.getFrames

static ItemList itemlist::pageframes_of_doc(
  ItemRef docRef,
  int pageNum,
  int add_subframes = 0,
  int tagged_only = 0,
  char* layerName = "",
  int groupID = 0L,
  char* frameName = 0,
  int includePasteboard = 0)

Erzeuge eine Liste aller Rahmen einer Seite eines Dokumentes. Die Funktion ist identisch mit itemlist::pageframes mit dem Unterschied, dass als erster Parameter das gewünschte Dokument angegeben wird. Die Liste muss mit itemlist::release wieder gelöscht werden.

Name Typ Default Beschreibung
Return ItemList   Liste aller Rahmen einer Dokumentseite, muss mit itemlist::release wieder gelöscht werden!
docRef ItemRef - Dokumentreferenz
0 : aktuelles Dokument
pageNum int - Seitennummer (1-basiert)
-1 : (nur wenn docRef = 0) aktuelle Seite

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

add_subframes int 0 Unterrahmen auch in die Liste
tagged_only int 0 Nur Rahmen mit gültigen Platzhaltern. 0 heißt, dass auch Rahmen ohne Platzhalter in die Liste aufgenommen werden.
layerName String oder char* "" Wähle nur Rahmen dieser Ebene aus. Existiert die Ebene nicht oder ist die Angabe leer, können sich die Rahmen auf beliebigen Ebenen befinden.
"" : - alle Ebenen
"--visible--" : nur sichtbare Ebenen
"--active--" : nur die aktive Ebene
sonst : gültiger Ebenenname
groupID int 0 Nur Rahmen mit der gegebenen GruppenID werden gefunden
0 : GruppenID ignorieren
frameName String oder char* 0 (ab CS5 und Comet 3.2) Name der Rahmen. Der Name kann als regulärer Ausdruck gegeben sein. Anstelle von [^\\0]* dürfen Sie dabei einfach % schreiben. Bei der Verwendung von Defaultnamen werden dabei die nichtübersetzten Versionen der Namen verwendet.

0 oder "" : Name ignorieren
includePasteboard int 0 (Comet 3.2) Sollen auch Rahmen, die ganz außerhalb des Seitenbereiches liegen, in die Liste aufgenommen werden? Wenn Sie den Aufruf für verschiedene Seiten eines Spreads aufrufen, werden diese Rahmen jedesmal gefunden.

0 : Rahmen müssen zumindest teilsweise auf der sichtbaren Seite liegen
1 : Rahmen, die vollständig im Arbeitsbereich liegen auch in die Liste aufnehmen.

Kopiere den Inhalt der Seite 3 eines Dokumentes auf die aktuelle Seite.

int main ()
{
    ItemRef		d1		= document::alloc ("$DESKTOP/base.indd");
    ItemList	src		= itemlist::pageframes_of_doc (d1, 3);
    ItemList	added	= itemlist::alloc ();
itemlist::duplicate (0, src, 10.0, 20.0);
return 0; }

v3.3 R2851, 12.04.2012

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CPage.getFrames

static ItemList itemlist::chained(
  ItemRef frameRef = 0,
  int add_subframes = 0,
  int tagged_only = 0,
  char* layerName = "",
  int groupID = 0L)

Erzeuge eine Liste aller verketteten Rahmen eines Textes. Die Liste muss mit itemlist::release wieder gelöscht werden.

Name Typ Default Beschreibung
Return ItemList   Liste aller verketteten Rahmen eines Textes, muss mit itemlist::release wieder gelöscht werden!!
frameRef ItemRef 0 gültiger Textrahmen
0 : aktueller Textrahmen
add_subframes int 0 Unterrahmen auch in die Liste
tagged_only int 0 Nur Rahmen mit gültigen Platzhaltern. 0 heißt, dass auch Rahmen ohne Platzhalter in die Liste aufgenommen werden.
layerName String oder char* "" Wähle nur Rahmen dieser Ebene aus. Existiert die Ebene nicht oder ist die Angabe leer, können sich die Rahmen auf beliebigen Ebenen befinden.
"" : - alle Ebenen
"--visible--" : nur sichtbare Ebenen
"--active--" : nur die aktive Ebene
sonst : gültiger Ebenenname
groupID int 0 Nur Rahmen mit der gegebenen GruppenID werden gefunden
0 : GruppenID ignorieren

v1.4 R335 (16. April 2007)

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

comet.CFrame.getChain

static ItemList itemlist::intersections(
  ItemRef frameRef = 0,
  int add_subframes = 0,
  int tagged_only = 0,
  char* layerName = "",
  int groupID = 0L)

Erzeuge eine Liste aller Rahmen, deren Flächen sich mit dem gegebenen Rahmen überschneiden. Zeigt die übergebene Referenz auf eine Gruppe, wird diese als ein Objekt angesehen. Bei allen anderen Gruppen werden die einzelnen Rahmen verwendet. Die Liste kann Gruppen, Teile von Gruppen und ungruppierte Rahmen gleichzeitig enthalten. Sie können diese Objekte in der Regel nicht gemeinsam löschen, verschieben oder neu gruppieren. .

Die Rahmen der Liste sind nach ihrer Z-Ordnung sortiert. Alle Rahmen, der Listenindex kleiner als der des gegebenen Rahmen ist, liegen also vor diesem Rahmen (überdecken ihn also (teilweise)). Alle Rahmen mit einem größeren Index werden vom übergebenen Rahmen (teilweise) überdeckt.

Die Liste muss mit itemlist::release wieder gelöscht werden.

Name Typ Default Beschreibung
Return ItemList   Liste aller Rahmen, deren Flächen sich mit dem gegebenen Rahmen überschneiden.
frameRef ItemRef 0 gültiger Textrahmen
0 : aktueller Skriptrahmen

Version 3.1 R1723, 3. Feb. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

static ItemList itemlist::masteritems(
  ItemRef docRef,
  char* mastername,
  int pageindex,
  int linkedOnly = 0,
  int placeholderID = 0,
  int id1 = 0,
  int id2 = 0,
  int id3 = 0,
  char* sid = 0,
  char* info1 = 0,
  char* info2 = 0)

Erzeuge eine Liste aller Rahmen einer Musterseite. Die Liste muss mit itemlist::release wieder gelöscht werden.

Name Typ Default Beschreibung
Return ItemList   Liste aller Rahmen und Unterrahmen einer Musterseite, muss mit itemlist::release wieder gelöscht werden!!
docRef ItemRef - Dokumentreferenz
0 : aktuelles Dokument
mastername String oder char* - Name der Musterseite, darf leer sein, dann wird der pageindex als 1-basierte Seitennummer verwendet
pageindex int - 1-basierter Index der (Muster)seite

mastername nicht leer : Index in Masterspread. Bei Doppelseiten also
    1 : linke Musterseite
    2 : rechte Musterseite

mastername 0 oder "" : Seitenindex der Dokumentseite, deren Musterseite verwendet werden soll. Bei Dokumenten mit Doppelseiten und einer rechten Seite als erste Seite also
    1 : rechte Musterseite
    2 : linke Musterseite
linkedOnly int 0 Nur Rahmen mit Rahmenplatzhalter holen?
0 : Auch Rahmen ohne Platzhalter
1 : Nur Rahmen mit Platzhalter
placeholderID int 0 Nur rahmen mit diesem Rahmenplatzhalter holen.
0: Parameter ignorieren.
id.., sid int, String oder char* 0 ID des Objektes, mit dem der Rahmenplatzhalter verknüpft ist. Sind alle Angaben 0, wird die Verknüpfung nicht geprüft. Ein Rahmen wird in die Liste aufgenommen, wenn sein Platzhalter mit dem gegebenen Objekt verknüpft ist.
info1, info2 String oder char* 0 Info1 und Info2 des Rahmenplatzhalters. Ist die Angabe leer, wird sie nicht geprüft. Ein Rahmen wird in die Liste aufgenommen, wenn sein Platzhalter die info1 oder info2 hat.

Hole die Musterseitenelemente der rechten Seite von A-Parent, verknüpfe und lade sie.

int main ()
{
    ItemList		masters	= itemlist::masteritems (0, "A-Parent", 2, 0);
    ItemRef			f		= item::alloc ();
    int				i;
wlog ("", "Parentpageitems : %d\n", itemlist::length (masters));
for (i = 0; i < itemlist::length (masters); i++) { itemlist::get (masters, f, i);
placeholder::link (f, 3, 100, 10, 0, -1, -1, ""); placeholder::load (f, 3, -1, -1, 1); }
return 0; }

Mit itemlist::apply geht das obige Beispiel auch etwas eleganter:

int main ()
{
    ItemList			masters	= itemlist::masteritems (0, "A-Parent", 2, 0);
itemlist::apply (placeholder::link, masters, 1, 0, 3, 100, 10, 0, -1, -1, ""); itemlist::apply (placeholder::load, masters, 1, 0, 3, -1, -1, 1);
return 0; }

Wenn Sie den Musterseiten-Namen nicht wissen (oder der in verschiedenen Sprachen angegeben sein kann) lassen Sie ihn einfach weg und verwenden statt dessen den Index einer Dokumentseite. Die zugehörige Musterseite finden wir. Achten Sie darauf, dass die rechte Seite hier den Index 1 hat.

int main ()
{
    ItemList			masters	= itemlist::masteritems (0, "", 1, 0);
itemlist::apply (placeholder::link, masters, 1, 0, 3, 100, 10, 0, -1, -1, ""); itemlist::apply (placeholder::load, masters, 1, 0, 3, -1, -1, 1);
return 0; }

Version 2.1, R1760, 20.02.2010

priint:comet InDesign® Plug-Ins, comet_pdf

Zur Bearbeitung von Musterseiten-Objekten können die folgenden Funktionen verwendet werden : frame::is_masteritem_overriden, frame::is_overriden_masteritem
frame::override_masteritem und frame::remove_masteritem_override.
comet.CDocument.getMasterPageItems

static ItemList itemlist::selected(
  int add_subframes = 0,
  int tagged_only = 0,
  char* layerName = "",
  int groupID = 0L)

Erzeuge eine Liste aller ausgewählten Rahmen des Dokumentes. Die Liste muss mit itemlist::release wieder gelöscht werden.

Unter comet_pdf hat der Aufruf keine Wirkung und liefert immer 0.

Name Typ Default Beschreibung
Return ItemList   Liste aller ausgewählten Rahmen des Dokumentes, muss mit itemlist::release wieder gelöscht werden!!
add_subframes int 0 Unterrahmen auch in die Liste
tagged_only int 0 Nur Rahmen mit gültigen Platzhaltern. 0 heißt, dass auch Rahmen ohne Platzhalter in die Liste aufgenommen werden.
layerName String oder char* "" Wähle nur Rahmen dieser Ebene aus. Existiert die Ebene nicht oder ist die Angabe leer, können sich die Rahmen auf beliebigen Ebenen befinden.
groupID int 0 Nur Rahmen mit der gegebenen GruppenID werden gefunden
0 : GruppenID ignorieren
ItemList frames =
 		itemlist::allframes (
 			[add_subframes
 			[, only_tagged]);

layerName seit Version 1.2.2 (26. Sept. 2005)
groupID seit Version 1.4 R334 (13. April 2007)

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

itemlist::allframes
itemlist::subframes
itemlist::subframes_of_list
comet.frame.getSelected

static ItemList itemlist::inlines(
  ItemRef frameRef = 0,
  int pos = 0,
  int len = -3)

Hole die Inline- und verankerten Rahmen eines Textes oder Textbereiches.

Mit Hilfe der Funktionen textmodel::inlinepos, frame::get_anchor und textmodel::get_table können weitere Infos über den Rahmen und die Textposition geholt werden.

Will man auch die Inlines in Tabellenzellen, muss hier kTotalEnd für die Länge verwendet werden.

Inlines dürfen nicht einfach gelöscht werden. Dazu muss entweder der Text an der Ankerstelle gelöscht werden oder man stellt den Rahmen mit frame::release_inline zuvor frei.

Name Typ Default Beschreibung
Return ItemList   Liste aller Inlines und verankter Rahmen des Textes oder Textbereiches, muss mit itemlist::release wieder gelöscht werden!
frameRef ItemRef 0 Referenz auf einen Textrahmen (gFrame)

0 : aktueller Skriptrahmen
pos int 0 Beginn des Textbereiches
len int kTotalEnd Länge des Textbereiches

kTotalEnd : Gesamter Text incl. Tabellen
kEnd : Gesamter Text
#include "internal/text.h"

Färbe alle Inlines eines Textes orange. Zusätzlich werden einige Infos in Logfile geschrieben.

#include "internal/types.h"
#include "internal/text.h"
int main () { ItemList li = itemlist::inlines (gFrame, 0, kTotalEnd); ItemRef fr = item::alloc (); int i;
if (li) { wlog ("", "Frame %d contains %d inlines\n", item::getint (gFrame), itemlist::length (li)); for (i=0; i< itemlist::length (li); i++) { fr = itemlist::get (li, fr, i); wlog ("", " %d : %d @ textpos %d\n", i+1, item::getint (fr), frame::inlinepos (fr));
frame::color_rgb (fr, 255, 128, 0); } }
return 0; }

Hole alle Inlines der Tabellenzelle, in der sich der Textcursor gerade befindet.

ItemList inlines_of_cell (ItemRef frame, Table T, int row, int col)
{
    ItemList	inlines		= itemlist::inlines (frame);
    ItemList	cellframes	= itemlist::alloc ();
    ItemRef		f			= item::alloc ();
    int			start, len, pos, i;
table::cell::get_textpos (T, col, row, &start, &len);
for (i = 0; i < itemlist::length (inlines); i++) { itemlist::get (inlines, f, i); pos = frame::inlinepos (f); if (pos >= start) { itemlist::append (cellframes, f); } }
itemlist::release (inlines); return cellframes; }
int main () { int start, end, row, col; Table T = table::alloc (); ItemRef frame = item::alloc (); ItemList inlines;
textmodel::selection (&start, &end, frame, 0, T, &col, &row); if (table::is_valid (T)) { inlines = inlines_of_cell (frame, T, row, col);
wlog ("", "# %d inlines in cell [r%d, c%d]\n", itemlist::length (inlines), row, col);
itemlist::release (inlines); }
return 0; }

Version 2.1 R2200, 28. 10. 2010

priint:comet InDesign® Plug-Ins, comet_pdf

textmodel::inlinepos
frame::get_anchor
textmodel::get_table
comet.CTextModel.getInlines

static ItemList itemlist::hyperlinks(ItemRef frameRef = 0)

Hole eine Liste aller Hyperlinks des Textes eines Rahmens. Ist der Rahmen Teil einer Textkette, werden alle Hyperlinks der Textkette gefunden. Die Ergebnisse sind nach Textpositionen soriert.

Name Typ Default Beschreibung
Return ItemList   Liste aller Hyperlinks des Textes des gegebenen Rahmens, muss mit itemlist::release wieder gelöscht werden!
frameRef ItemRef 0 Referenz auf einen Textrahmen

0 : aktueller Skriptrahmen

Besuche alle Hyperlinks eines Rahmens in der Reihenfolge ihrer Textposition.

int by_list (ItemRef fr)
{
    ItemList 	hys	= itemlist::hyperlinks (fr);
    ItemRef		hy	= item::alloc ();
    int			i, start, len;
for (i = 0; i < itemlist::length (hys); i++) { itemlist::get (hys, hy, i);
start = hyperlink::get_pos (hy, &len); printf ("YYYYY %d : %d %d\n", i+1, start, len); }
return 0; }

v4.1.8 R29140, 21. Sep 2021

priint:comet InDesign® Plug-Ins, comet_pdf

hyperlink::get_pos
hyperlink::count
hyperlink::get_nth

static ItemList itemlist::articles(ItemRef docRef = 0)

Erstelle eine Liste aller Artikel eines Dokumentes. Die Funktion ist gleichwertig mit der Funktion document::get_articles.

Die Artikel eines Dokumentes können mit der Palettte Artikel auch manuell bearbeitet werden.

Name Typ Default Beschreibung
Return ItemList   Liste aller Artikel des Dokumentes

Die Ergebnisliste muss mit itemlist::release wieder gelöscht werden!

docRef ItemRef - Angabe des Dokumentes

gDocument oder 0: Dokument, mit dem das Skript gestartet wurde.

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)

v5.0, R35050

priint:comet InDesign® Plug-Ins, comet_pdf
document::articles::count
document::articles::get_nth

static ItemList itemlist::doc_notes(ItemRef docRef = 0)

Erzeuge eine Liste aller Comet-Notizen eines Dokumentes.

Von InDesign® werden nur sichtbare Comet-Notizen berücksichtigt und die Liste enthält die Rahmen der Notizen. Um alle Comet-Notizen eines Dokumentes sichtbar zu machen, verwenden Sie die Funktion document::notes::show.

In comet_pdf enthält die Liste Referenzen auf die Notizen selbst. Die Elemente der Liste sind keine Rahmen und dürfen ausschließlich in Notizen-Funktionen verwendet werden!

Um Notizen über Ihren Inhalt zu finden, verwenden Sie die Funktion document::notes::find.

Name Typ Default Beschreibung
Return ItemList   Liste aller Comet-Notizen des gegebenen Dokumentes. Von InDesign® werden nur sichtbare Notizen berücksichtigt!

Die Liste muss mit itemlist::release wieder gelöscht werden!
docRef ItemRef 0 Dokument-Referenz

0 : aktuelles Dokument des Skriptes

Hole alle Comet-Notizen eines Dokumentes.

#include "internal/types.h"
int main () { ItemRef fr = item::alloc (); int i, tyte, dest, result; ItemList notes;
if (gRun > 1) return 0;
notes = itemlist::doc_notes (); itemlist::select (notes);
for (i = 0; i < itemlist::length (notes); i++) { itemlist::get (notes, fr, i); frame::note::get_dest (fr, &type, &dest); wlog ("", "Note %d : Type = %d, Dest = %d\n", item::getint (fr), type, dest); }
itemlist::release (notes); item::release (fr);
return 0; }

v4.2 R32080, 2. Jan 2023

priint:comet InDesign® Plug-Ins, comet_pdf

page_notes
group_notes
frame_notes
frame::note::get_dest
frame::note::change_dest
document::notes::show
document::notes::find

static ItemList itemlist::page_notes(
  ItemRef docRef,
  int dest,
  int type)

Erzeuge eine Liste aller Comet-Notizen einer gegbenen Seite oder Seitennummer.

Von InDesign® werden nur sichtbare Comet-Notizen berücksichtigt und die Liste enthält die Rahmen der Notizen. Um alle Comet-Notizen eines Dokumentes sichtbar zu machen, verwenden Sie die Funktion document::notes::show.

In comet_pdf enthält die Liste Referenzen auf die Notizen selbst. Die Elemente der Liste sind keine Rahmen und dürfen ausschließlich in Notizen-Funktionen verwendet werden!

Um Notizen über Ihren Inhalt zu finden, verwenden Sie die Funktion document::notes::find.

Name Typ Default Beschreibung
Return ItemList   Liste aller Comet-Notizen der gesuchten Seite. Von InDesign® werden nur sichtbare Notizen berücksichtigt!

Die Liste muss mit itemlist::release wieder gelöscht werden!
docRef ItemRef - Dokument-Referenz

0 : aktuelles Dokument des Skriptes
pg int - 1-basierte Seitennummer oder UID der Seite.
type int - Typ der gesuchten Notizen

kNoteTypePage : Seiten-Notiz. Seiten-Notizen wandern mit der jeweiligen Seite mit. Als Eingabe für pg wird die UID der gewünschten Seite erwartet. Die UID einer Seite erhalten Sie mit Hilfe der Funktion page::get_uid

kNoteTypePageIndex : Seitenindex-Notiz. Die Notiz bleibt immer auf der gleichen Seitennummer stehen. Als Eingabe für pg wird der 1-basierte Seitenindex erwartet.
#include "internal/types.h"

Hole alle auf der zweiten Dokumentseite verankerten Comet-Notizen.

#include "internal/types.h"
int main () { ItemRef fr = item::alloc (); int i, tyte, dest, result; ItemList notes;
if (gRun > 1) return 0;
notes = itemlist::page_notes (0, 2, kNoteTypePageIndex); itemlist::select (notes);
for (i = 0; i < itemlist::length (notes); i++) { itemlist::get (notes, fr, i); frame::note::get_dest (fr, &type, &dest); wlog ("", "Note %d : Type = %d, Dest = %d\n", item::getint (fr), type, dest); }
itemlist::release (notes); item::release (fr);
return 0; }

v4.2 R32080, 2. Jan 2023

priint:comet InDesign® Plug-Ins, comet_pdf

doc_notes
group_notes
frame_notes
frame::note::get_dest
frame::note::change_dest
document::notes::show
document::notes::find

static ItemList itemlist::group_notes(ItemRef frameRef = 0)

Erzeuge eine Liste aller Comet-Notizen der Cometgruppe eines Rahmens. Die Notizen haben den Notiztyp kNoteTypeGroup.

Von InDesign® werden nur sichtbare Comet-Notizen berücksichtigt und die Liste enthält die Rahmen der Notizen. Um alle Comet-Notizen eines Dokumentes sichtbar zu machen, verwenden Sie die Funktion document::notes::show.

In comet_pdf enthält die Liste Referenzen auf die Notizen selbst. Die Elemente der Liste sind keine Rahmen und dürfen ausschließlich in Notizen-Funktionen verwendet werden!

Um Notizen über Ihren Inhalt zu finden, verwenden Sie die Funktion document::notes::find.

Name Typ Default Beschreibung
Return ItemList   Liste aller Comet-Notizen der Cometgruppe des gegebenen Rahmens. Von InDesign® werden nur sichtbare Notizen berücksichtigt!

Die Liste muss mit itemlist::release wieder gelöscht werden!
frameRef ItemRef 0 beliebiger Rahmen einer Cometgruppe (nicht die Ganzzahl-ID der Gruppe!)

0 : Cometgruppe des aktuellen Skript-Rahmens
#include "internal/types.h"

Hole alle Comet-Notizen der Cometgruppe des aktuellen Skriptrahmens.

#include "internal/types.h"
int main () { ItemRef fr = item::alloc (); int i, tyte, dest, result; ItemList notes;
if (gRun > 1) return 0;
notes = itemlist::group_notes (); itemlist::select (notes);
for (i = 0; i < itemlist::length (notes); i++) { itemlist::get (notes, fr, i); frame::note::get_dest (fr, &type, &dest); wlog ("", "Note %d : Type = %d, Dest = %d\n", item::getint (fr), type, dest); }
itemlist::release (notes); item::release (fr);
return 0; }

v4.2 R32080, 2. Jan 2023

priint:comet InDesign® Plug-Ins, comet_pdf

doc_notes
page_notes
frame_notes
frame::note::get_dest
frame::note::change_dest
document::notes::show
document::notes::find

static ItemList itemlist::frame_notes(ItemRef frameRef = 0)

Erzeuge eine Liste aller Comet-Notizen eines Rahmens. Die Notizen haben den Notiztyp kNoteTypeFrame.

Von InDesign® werden nur sichtbare Comet-Notizen berücksichtigt und die Liste enthält die Rahmen der Notizen. Um alle Comet-Notizen eines Dokumentes sichtbar zu machen, verwenden Sie die Funktion document::notes::show.

In comet_pdf enthält die Liste Referenzen auf die Notizen selbst. Die Elemente der Liste sind keine Rahmen und dürfen ausschließlich in Notizen-Funktionen verwendet werden!

Um Notizen über Ihren Inhalt zu finden, verwenden Sie die Funktion document::notes::find.

Name Typ Default Beschreibung
Return ItemList   Liste aller Comet-Notizen des gegebenen Rahmens. Von InDesign® werden nur sichtbare Notizen berücksichtigt!

Die Liste muss mit itemlist::release wieder gelöscht werden!
frameRef ItemRef 0 Gültige Rahmenreferenz

0 : Aktueller Skript-Rahmen
#include "internal/types.h"

Hole alle Comet-Notizen des aktuellen Skriptrahmens.

#include "internal/types.h"
int main () { ItemRef fr = item::alloc (); int i, tyte, dest, result; ItemList notes;
if (gRun > 1) return 0;
notes = itemlist::frame_notes (); itemlist::select (notes);
for (i = 0; i < itemlist::length (notes); i++) { itemlist::get (notes, fr, i); frame::note::get_dest (fr, &type, &dest); wlog ("", "Note %d : Type = %d, Dest = %d\n", item::getint (fr), type, dest); }
itemlist::release (notes); item::release (fr);
return 0; }

v4.2 R32080, 2. Jan 2023

priint:comet InDesign® Plug-Ins, comet_pdf

doc_notes
page_notes
group_notes
frame::note::get_dest
frame::note::change_dest
document::notes::show
document::notes::find

static ItemList itemlist::subframes(
  ItemRef parent,
  int tagged_only = 0,
  char* layerName = "",
  int groupID = 0L)

Erzeuge eine Liste der Unterrahmen eines InDesign®-Gruppenrahmens. Die Liste muss mit itemlist::release wieder gelöscht werden. Um die Unterrahmen einer gesamten Liste von Rahmen zu ermitteln verwenden sie die Funktion itemlist::subframes_of_list.

Name Typ Default Beschreibung
Return ItemList   Liste aller Unterrahmen eines Rahmens, muss mit itemlist::release wieder gelöscht werden!
parent ItemRef - Referenz auf einen Rahmen
tagged_only int 0 Nur Rahmen mit gültigen Platzhaltern 0 heißt, dass auch Rahmen ohne Platzhalter in die Liste aufgenommen werden.
layerName String oder char* "" Wähle nur Rahmen dieser Ebene aus. Existiert die Ebene nicht oder ist die Angabe leer, können sich die Rahmen auf beliebigen Ebenen befinden.
groupID int 0 Nur Rahmen mit der gegebenen GruppenID werden gefunden
0 : GruppenID ignorieren
ItemList frames =
 		intelist::subframes (
 			parent
 			[, tagged_only]);

layerName seit Version 1.2.2 (26. Sept. 2005)
groupID seit Version 1.4 R334 (13. April 2007)

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::subframes_of_list

static ItemList itemlist::subframes_of_list(
  ItemRef parents,
  int tagged_only = 0,
  char* layerName = "",
  int groupID = 0L)

Erzeuge eine Liste der Unterrahmen einer Rahmenliste. Unterrahmen werden rekursiv ermittelt; die Liste enthält also keine Gruppenrahmen mehr. Die Rahmen der Liste parents sind nicht in der Ergebnisliste enthalten.Die Liste muss mit itemlist::release wieder gelöscht werden.

Name Typ Default Beschreibung
Return ItemList   Liste aller Unterrahmen eines Rahmens, muss mit itemlist::release wieder gelöscht werden!!
parents ItemList - Rahmenliste
tagged_only int 0 Nur Rahmen mit gültigen Platzhaltern 0 heißt, dass auch Rahmen ohne Platzhalter in die Liste aufgenommen werden.
layerName String oder char* "" Wähle nur Rahmen dieser Ebene aus. Existiert die Ebene nicht oder ist die Angabe leer, können sich die Rahmen auf beliebigen Ebenen befinden.
groupID int 0 Nur Rahmen mit der gegebenen GruppenID werden gefunden
0 : GruppenID ignorieren
ItemList frames =
 		itemlist::subframes_of_list (
 			parents
 			[, tagged_only]);

layerName seit Version 1.2.2 (26. Sept. 2005)
groupID seit Version 1.4 R334 (13. April 2007)

priint:comet InDesign® Plug-Ins, comet_pdf

static int itemlist::bbox(
  ItemList frames,
  float* left,
  float* top,
  float* right,
  float* bottom,
  int spreadRelative = 0,
  int lastPage = 0,
  int spreadWide = 0)

Ermittle den umschließenden Rahmen um die Rahmen der Liste. Die Angaben werden in Punkten ermittelt.

Boundingboxen werden nur seiten- oder spread-weit bestimmt! Enthält die Rahmenliste Einträge verschiedener Seiten bzw. Spreads, werden zur Bestimmung der Boundingbox nur die Rahmen der ersten/letzten Seite bzw. des ersten/letzten Spreads verwendet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frame ItemList - Rahmenliste
left float* - X-Position des Rahmens, der am weitesten links von allen Rahmen der Liste steht.
top float* - Y-Position des Rahmens, der am weitesten oben von allen Rahmen der Liste steht.
right float* - X-Position der rechten Seite des Rahmens, der am weitesten links von allen Rahmen der Liste steht.
bottom float* - Y-Position der unteren Seiten Rahmens, der am weitesten unten von allen Rahmen der Liste steht.
spreadRelative int 0 Sollen die Angaben relativ zur Seite oder zum Druckbogen geholt werden?

0 : Seitenrelativ
1 : Relativ zum Druckbogen
lastPageOrSpread int 0 Rahmen der ersten oder letzten Seite (Spreads) verwenden

0 : Erste Seite (Spread)
1 : Letzte Seite (Spread)
spreadWide int 0 Enthält die Rahmenliste Rahmen verschiedener Seiten, sollen dann die Rahmen der ersten/letzten Seite verwendet werden oder die Rahmen des ersten/letzten Spreads?

0 : Rahmen der gleichen Seite
1 : Rahmen des gleichen Spreads

Parameter spreadRelative seit v2.1, R 1750, 9. Feb. 2010
Parameter lastPageOrSpread und Parameter spreadWide seit v4.0.5 R13604, 12. Sep 2016

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

static void itemlist::release(ItemList frames)

Freigeben des Speichers, den eine ItemListe belegt. Um die Liste lediglich zu leeren, verwenden Sie den Befehl itemlist::clear.

Name Typ Default Beschreibung
frames ItemList - Liste, die gelöscht werden soll.
itemlist::release (frames);


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

static ItemRef itemlist::get(
  ItemList frames,
  ItemRef result,
  int index)

Hole das i-te Element einer gegebenen Liste. Bei falschen Indizees wird 0 zurückgegeben.

Name Typ Default Beschreibung
Return ItemRef   Rahmenverweis oder 0
frames ItemList - Rahmenliste
frame ItemRef - Reservierter Speicher für das Ergebnis
i int - Index
frame = itemlist::get (frames, frame, i);


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

item::alloc
itemlist::count

static int itemlist::length(ItemList frames)

Gib die Länge der Liste an.

Name Typ Default Beschreibung
Return int   Länge der Liste
frames ItemList Rahmenliste  
len = itemlist::length (frames);


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

static int itemlist::select(ItemList frames, int addTo = 0)

Wähle die Rahmen einer Liste im Dokument aus.

Unter comet_pdf hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList Rahmenliste  
addTo int 0 Auswahl ersetzen oder erweitern?
0 : Ersetzen
sonst : Erweitern
err_code = itemlist::select (items);

Parameter addTo seit Version 1.4 R323, 21. März 2007

priint:comet InDesign® Plug-Ins, comet_pdf

static int itemlist::get_pos(ItemList frames, ItemRef obj)

Ermittle die Position eines Eintrages innerhalb der gegebenen Liste. Positionsangaben sind 0-basiert. Ist der Eintrag leer oder wurde nicht gefunden, gibt die Funktion -1 zurück.

Name Typ Default Beschreibung
Return int   0-basierte Listenposition des Objektes
-1 : Fehler oder nicht gefunden
frames ItemList - Rahmenliste
obj ItemRef - gesuchtes Objekt

1.2.1 (25. August 2005)

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

static int itemlist::append(ItemList frames, ItemRef obj)

Erweitere die Liste um ein Element. Das Element wird am Ende der Liste angefügt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmenliste
obj ItemRef - neues Objekt

1.2.1 (25. August 2005)

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

static int itemlist::appendlist(ItemList frames, ItemList moreframes)

Erweitere die Liste um eine weitere Liste.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmenliste
moreframes ItemList - Liste, deren Einträge an die bestehenden Liste angefügt werden sollen

1.2.1 (25. August 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

static int itemlist::insert(
  ItemList frames,
  ItemRef obj,
  int index)

Erweitere die Liste um ein Element. Das Element wird vor der angegebenen Position in die Liste eingefügt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmenliste
obj ItemRef - neues Objekt
index int - Position, vor der eingefügt werden soll

1.2.1 (25. August 2005)

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

static int itemlist::remove(ItemList frames, ItemRef obj)

Lösche ein Objekt aus der Liste (aber nicht das Object, das der Listeneintrag referenziert).

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmenliste
obj ItemRef - zu löschendes Objekt

1.2.1 (25. August 2005)

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

static int itemlist::remove_pos(ItemList frames, int index)

Lösche ein Objekt der Liste. Das Objekt wird über die 0-basierte Listenposition identifiziert.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmenliste
index int - 0-basierte Listenposition des zu löschenden Objektes

1.2.1 (25. August 2005)

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

static int itemlist::clear(ItemList frames)

Entferne alle Objekte aus der Liste. Die Liste bleibt dabei erhalten. Um die Liste selbst aus dem Speicher zu löschen, verwenden Sie den Befehl itemlist::relase.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmenliste

1.2.1 (25. August 2005)

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

static int itemlist::set_creationdate(ItemList frames)

Setze das Rahmendatum jedes Rahmens der Liste neu. Als Datum wird immer die aktuelle Zeitangabe des Rechners verwendet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmenliste

Version 1.2.1 (30. August 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

static int itemlist::apply(
  scriptfunc function,
  ItemList frames,
  int frameIndex,
  ...)

Wende eine Funktion auf alle Einträge einer Liste an. Tritt bei einem Listeneintrag ein Fehler auf, wird die Bearbeitung abgebrochen. Als Funktion kann jede Skriptfunktion verwendet werden. Im Parameter frameIndex wird angegeben, an welcher Stelle in den Funktionsparametern jeweils die Listenelemente eingesetzt werden sollen.

Im folgenden Aufruf wird die Funktion linklist::load auf alle Elemente der Listes frames angewendet. Eine gültige Version von linklist::load erwartet 3 Parameter : eine LinkList, ein int und einen Zielrahmen. Diese Werte werden hinter den Standardparametern von apply angegeben. An dritter Stelle der Funktionsparameter von linklist::load wird ein Rahmen erwartet, deshalb steht vor ll2 eine 3. Die Rahmenvariable (hinter kDesignateUndef) kann einen beliebigen Wert enthalten.

itemlist::apply (linklist::load, frames, 3, ll2, kDesignateUndef, 0);

Als Funktion kann jede Skriptfunktion verwendet werden. Um bei externen Skriptcompilern (CodeWarrior, Visual Studio, ...) keine Fehler zu erhalten, müssen aber möglicherweise entsprechende Funktionszeiger-Typen definiert werden und die entsprechende Definition von apply in itemlist.h eingetragen werden. Siehe dazu in den Beispielen.

Wird die Funktion frame::moveto angewendet, werden die Rahmen so verschoben, dass das umschließende Rechteck an der neuen Position liegt und die Rahmen der Liste ihre relativen Abstände zueinander behalten.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode. Tritt bei einem Listeneintrag ein Fehler auf, wird die Bearbeitung mit einem Fehlercode abgebrochen.
function Skriptfunktion - Name einer Skriptfunktion, die für alle Elemente der folgenden Liste vom Typ ItemList ausgeführt werden soll.
frames ItemList - Liste der zu bearbeitenden Rahmen
frameIndex int - 1-basierter Index, der angibt, welcher der folgenden Parameter beim Bearbeiten der Liste frames jeweils durch das aktuelle Listenelement ersetzt werden soll.

0 : Kein Parameter soll ersetzt werden
1 : Ersetze den ersten Parameter hinter frameIndex
:
... abhängig von function - Parmeter für den Aufruf der Funktion function.
#include "internal/types.h"

Lade die Platzhalter aller Rahmen einer Ebene.

#include "internal/types.h"
int main () { LinkList ll2 = linklist::alloc (0); ItemList frames = 0;
frames = itemlist::allframes (0, 0, "fr");
itemlist::apply (   linklist::load, frames, 3,   ll2, kDesignateUndef, 0);
itemlist::release (frames);
return 0; }

Verschiebe eine Rahmenliste an eine neue Stelle. Die Rahmen behalten dabei ihre Abstaände untereinander.

itemlist::apply (
  frame::moveto, frames, 1, 0,
  leftMargin, topMargin, newPage, 0);

Das Beispiel beschreibt, wie die cscript-Header eines externen Compilers angepasst werden können, um bei der Syntaxprüfung einer Funktionanwendung in apply keine Fehler zu erhalten. Die Funktion frame::image_scale soll in apply angewendet werden. Dazu sind folgende Definitionen nötig.

  1. Definition eines Funktionstypen mit den Parametern von frame::image_scale. Diese Definition wird vor der Definition der Klasse itemlist in itemlist.h eingetragen.

    typedef int (*image_scale_fn)(ItemRef frameRef, float x, float y);

  2. Definition einer Version von apply mit diesem Funktionstypen. Diese Definition kann hinter den bereits existierenden Definitionen von apply in itemlist.h eingefügt werden.

    static int apply (image_scale_fn function, ItemList frames, int frameIndex, ...);

 


priint:comet InDesign® Plug-Ins, comet_pdf

static int itemlist::apply1(
  scriptfunc function,
  ItemList frames,
  int frameIndex,
  ...)

Wende eine Funktion auf alle Einträge einer Liste an. Nach der Ausführung der Funktion wird die gegebene Liste frames gelöscht. Beschreibung siehe apply.

#include "internal/types.h"

Lade die Platzhalter aller Rahmen einer Ebene.

#include "internal/types.h"
int main () { LinkList ll2 = linklist::alloc (0);
itemlist::apply1 (   linklist::load,   itemlist::allframes (0, 0, "fr"),   3,   ll2, kDesignateUndef, 0);
return 0; }


priint:comet InDesign® Plug-Ins, comet_pdf

static ItemListList itemlist::logical_groups(
  ItemList frames,
  int domain,
  char* layerName,
  int preferGroup,
  char* method,
  ...)

Zusammenstellen von Listen von Rahmen, die gleichen logischen Bedingungen genügen. Für jeden Rahmen einer Rahmenliste werden alle Rahmen ermittelt, die gegebenen logischen Bedingungen genügen. Die Suche nach logisch gleichen Rahmen kann im gesamten Dokument gemacht werden oder auf die Liste oder die Seite beschränkt werden.

Das Ergebnis der Zusammenstellung ist eine Liste von Rahmenlisten. Jede Liste der Listen enthält logisch gleiche Rahmen. Enthält die Ausgangsliste die Rahmen A und B und A ≅ B nach der gegebenen logischen Bedingung, wird für den Rahmen B keine weitere Liste erstellt. Sind A und B ungleich und gibt es einen dritten Rahmen C mit A ≅ C und A ≅ C, wird C in die Kongruenzliste von A und B eingetragen.

Rahmen, die nach den gegebenen Bedingungen nicht vergleichbar sind, werden bei der Prüfung übergangen und erscheinen in keiner der Ergebnislisten. Um beispielsweise die XML-Attribute zweier Rahmen vergelichen zu können, müssen beide Rahmen jeweils mindestens ein XML Attribut besitzen.

Unterrahmen werden automatisch in die Suche einbezogen.

Name Typ Default Beschreibung
Return ItemListList   Liste von Rahmenlisten. Die Ergebnislistenliste wird automatisch neu erzeugt und muss mit itemlistlist::release wieder gelöscht werden, wenn ein erneuter Aufruf gemacht wird.
0 : Fehler bei der Zusammenstellung der Kongruenzlisten
frames ItemList - Liste der Dokumentrahmen, für die jeweils die Kongruenzlisten erstellt werden sollen.
domain int - In welchen Rahmen soll gesucht werden?

kSearchDocument
kSearchPage
kSearchFrameList : Suche nur in der übergebenen Liste frames
layerName String oder char* - Suchrahmen einschränken auf die gegebene Ebene

"" : Alle Ebenen
"--visible--" : Nur sichtbare Ebene
"--active-- : Nur aktive Ebene
sonst : case sensitiver Ebenenname
preferGroup int - Sollen Untergruppenrahmen direkt in die Ergebnislisten eingefügt werden oder sollen statt dessen die Gruppen eingetragen werden?

0 : Einträge selbst eintragen 1 : oberste Gruppen verwenden
method String oder char* - Welche Methode soll zum Vergleich verwendet werden? Siehe dazu auch in den Beispielen.

"xml", "attr1", ...

Benutze die XML-Elemente der Rahmen zum Vergleich : Dem Parameter kann eine beliebig lange Liste von Attributnamen (char*) folgen.
Zwei Rahmen werden als kongruent angesehen, wenn die entsprechenden XML-Attribute in beiden Rahmen existieren und den gleichen Wert haben. Mit der Angabe "*" werden alle Attribute bis auf href vergleichen.

"script", 123

Verwende das angegebene Skript zum Vergleich. Die zu vergleichenden Rahmen werden dem Skript als globale Variablen übergeben : gMasterFrame und gCheckFrame.

Notwendige Bedingung
Vor den eigentlichen Vergleichen wird das Skript für jeden Rahmen der übergebenen Rahmenliste frames einmal aufgerufen, um zu prüfen, ob der Rahmen überhaupt auf die logische Bedingung geprüft werden kann. Soll etwa der Textinhalt der Rahmen verglichen werden, müssen die beteiligten Rahmen auch Textrahmen sein. Der Aufruf wird daran erkannt, dass die Variable gCheckFrame = 0 ist.

Rückgabewerte
return 0; : Vergleichbar
return 1; : Nicht vergleichbar

Hinreichende Bedingung
In weiteren Skriptaufrufen wird der Rahmen jeweils mit dem nächsten Rahmen der gewünschten Auswahl (domain, layerName) aufgerufen. Der Vergleichsrahmen wird jeweils in der globalen Variable gCheckFrame übergeben.

Rückgabewerte
return 0; : Gleichheit
return 1; : ungleich
#include "internal/types.h"

Im ersten Beispiel werden für alle Rahmen der aktiven Seite jeweils alle Rahmen der Seite gesucht, bei denen die XML-Attribute a und b gleich sind. Gleiche Rahmen werden mit der gleichen (zufälligen) Farbe hinterlegt. (Hier eine Beispieldatei)

int main ()
{
    ItemListList	ill;
    ItemList		ff	= itemlist::pageframes (-1);
    ItemList		lo;
ill = itemlist::logical_groups (ff, kSearchPage, "", 1, "xml", "a", "b"); if (!ill) { showmessage ("Keine logischen Gruppen gefunden"); return 0; }
for (lo = itemlistlist::first (ill); lo; lo = itemlistlist::next (ill)) { itemlist::apply (   frame::color_rgb, lo, 1,   0, random (255), random (255), random (255), -1, -1); }
itemlistlist::release (ill); itemlist::release (ff); return 0; }

Um zu erreichen, dass bei den Rahmen jeweils alle XML-Attribute verglichen werden, muss der Aufruf von logical_groups nur geringfügig geändert werden:

ill = itemlist::logical_groups (ff, kSearchPage, "", 1, "xml", "*");

Zwei Rahmen sollen dann als Gleich angesehen werden, wenn die ersten drei Textzeichen gleich sind oder wenn beide Rahmen keine Textrahmen sind. Dazu wird eine neue Aktion (hier mit der ID 30152) angelegt und der Aufruf von logical_groups wie folgt geändert.

ill = itemlist::logical_groups (ff, kSearchPage, "", 1, "script", 30152);
// Und hier das Skript 30152
int main () { String s1 = string::alloc (); String s2 = string::alloc (); char* b1 = frame::gettext (gMasterFrame, s1, 0, 3); char* b2 = frame::gettext (gCheckFrame, s2, 0, 3);
// Hinreichende Bedingung if (!gCheckFrame) return (b1 == 0);
// Notwendige Bedingung if (!b1 || !b2) return 1; return strcmp (string::get (s1), string::get (s2)); }

Version 1.4 R320 (2. März 2007)

priint:comet InDesign® Plug-Ins

itemlistlist
ItemListList
allframes
pageframes
selected

static int itemlist::create_snippet(
  ItemList frames,
  long ID,
  long ID2,
  long ID3,
  char* stringID,
  char* name = "",
  char* description = "",
  long typeID = 0,
  long domainID = 0,
  long stateID = 0,
  long spreadTypeID = 0,
  long leftID = 0,
  long middleID = 0,
  long rightID = 0,
  long snippetScriptID = 0,
  char* typeName = "",
  char* domainName = "",
  char* stateName = "")

Anlegen eines Snippets für einen Datensatz. Die Funktion ist nicht für InDesign® Server implementiert.

Die Funktion hat, in Abhängigkeit von der Parameteranzahl, zwei unterschiedliche Wirkungen :

  1. 5 und mehr Parameter : Anlegen eines Comet-Snippets in der Tabelle/Datei pageitems.

    Mit genau 5 Parametern erreichen Sie, dass automatisch der Template-Dialog geöffnet wird. In dem Dialog können Name, Bereich, ... des Snippets eingestellt werden. Hat die Anweisung mehr als 5 Parameter, werden die im Befehl angegebenen Werte in den neuen Snippet-Eintrag übernommen. Fehlende Angaben werden mit den Defaultwerten der Datenbank gefüllt oder bleiben leer (0 bzw. "").

    Das Snippet wird im INDD-Format abgelegt und im Attribut pageitems.KindID als Comet-Snippet markiert (KindID = 2).

    Comet-Snippets müssen mit der ID eines Datenbank-Objektes verknüpft sein. Diese ID wird in den Attributen
    • pageitems.recordid, pageitems.recordid2, pageitems.recordid2
    • pageitems.recordstringid
    hinterlegt. Die Attribute müssen vorher in pageitems angelegt worden sein, sonst führt die Anweisung zu einem Fehler

  2. Genau 3 Parameter : Erzeugen eines InDesign®-Snippets (IDMS). Der zweite Funktionsparameter gibt den Pfad der Zieldatei an. Diese Datei kann mit weiteren Skriptfunktionen zur Datenbank übertragen werden.

Die Varianten mit fünf und mehr Parametern erfordern den Metadaten-Dialog für Templates und werden deshalb von InServer nicht unterstützt. In diesem Fall gibt die Funktion den Wert -1199 (notDefinedErr) zurück.

Name Typ Default Beschreibung
Return int   ID des neuangelegten Snippets
0 : Kein Snippet wurde angelegt

Wird ein InDesign®-Snippet angelegt (Aufruf mit drei Parametern) wird ein Errorcode oder 0 zurückgegeben.
⇨ Comet-Snippet
frames ItemList - Liste von Dokumentrahmen (z.B. pageframes)
0 : aktuelle Dokumentauswahl
ID int - ID des Objektes, das dem Snippet zugeordnet werden soll
ID2 int - ID2 des Objektes, das dem Snippet zugeordnet werden soll
ID3 int - ID3 des Objektes, das dem Snippet zugeordnet werden soll
stringID String oder char* - StringID des Objektes, das dem Snippet zugeordnet werden soll
name String oder char* "" Name des neuen Snippets. Fehlt der Parameter, wird der Snippet-Dialog geöffnet.
description String oder char* "" Snippet-Beschreibung
typeID int 0 Typ-ID des neuen Snippets
domainID int 0 Mandant-ID des neuen Snippets
stateID int 0 Status-ID des neuen Snippets
spreadTypeID int 0 Für welchen Seitentyp soll der Snippet verwendet werden? 0 : Beleibig 1 : linke Seiten 2 : neutral 3 : rechte Seiten
leftID int 0 Welches Snippet soll auf linken Seiten gewählt werden, wenn der Snippet nur auf neutralen und/oder rechten Seiten verwendet werden darf?
middleID int 0 Welches Snippet soll auf neutralen Seiten gewählt werden, wenn der Snippet nur auf linken und/oder rechten Seiten verwendet werden darf?
rightID int 0 Welches Snippet soll auf rechten Seiten gewählt werden, wenn der Snippet nur auf linken und/oder neutralen Seiten verwendet werden darf?
snippetScriptID int 0 Ermitteln der SnippetID über ein Skript.

Das Skript wird in den Aktionen mit der ClassID 15 abgelegt.
typeName String oder char* "" In XML- und SOAP-Daten wird der Snippettyp direkt zum Snippet gespeichert. Geben Sie hier den Typnamen an.
domainName String oder char* "" In XML- und SOAP-Daten wird der Snippetmandant direkt zum Snippet gespeichert. Geben Sie hier den Namen des Mandanten an.
stateName String oder char* "" In XML- und SOAP-Daten wird der Status direkt zum Snippet gespeichert. Geben Sie hier den Namen des Status an.
⇨ InDesign®-Snippet
frames ItemList - Liste von Dokumentrahmen (z.B. pageframes)
0 : aktuelle Dokumentauswahl
fullpath String oder char* - Vollständiger Pfad auf die Zieldatei. Die Dateiendung wird automatisch angefügt oder angepasst.
override int - Bestehende Datei löschen?

0 : Nein, Datei nicht überschreiben
1 . Ja
#include "internal/types.h"

Erzeugen eines InDesign-Snippets. Das Snippet wird danach in die aktuelle Datenbank übernommen und die Snippet-Datei wieder gelöscht.

#include  "internal/types.h"
int main () { Query qu = sql::query (sql::dbconnection ()); long id = 0; char path [2000]; ItemList frames = itemlist::selected (); Image img = 0; float l, t, r, b;
// create content strcpy (path, "$DESKTOP/aaa"); itemlist::create_snippet (frames, path, 1); itemlist::bbox (frames, &l, &t, &r, &b); img = image::snapshot_frames (frames, 100);
// next free pageitems id query::send (qu, "select max(id) from pageitems"); query::output (qu, kInt, &id); query::exec (qu); while (query::fetch (qu)) {} id = id + 1;
// create the new entry query::send (qu, "insert into pageitems (ID, active, leftPos, topPos, rightPos, bottomPos) values (?, 3, ?, ?, ?, ?)"); query::input (qu, kInt, id); query::input (qu, kFloat, l); query::input (qu, kFloat, t); query::input (qu, kFloat, r); query::input (qu, kFloat, b); query::exec (qu);
// store snippet strcat (path, ".idms"); query::send (qu, "update pageitems set data = ?, preview = ?, format = 3 where ID = ?"); query::input (qu, kBinfile, path, kCopyLocalFile, "PICT"); query::input (qu, kImage, img); query::input (qu, kInt, id); query::exec (qu);
// clean up query::close (qu); image::release (img); itemlist::release (frames); file::remove (path);
return 0; }

Version 1.4 R323, 22. März 2007
InDesign®-Snippets seit v3.2.3 R2485, 1. Jun 2011

priint:comet InDesign® Plug-Ins

static int itemlist::align(ItemList frames, int alignHow)

Ausrichten einer Rahmenauswahl.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmen, die ausgerichtet werden sollen.
alignHow int - An welcher Seite sollen die Rahmen ausgerichtet werden?

kHAlignLeft
kHAlignCenter
kHAlignRight
kVAlignTop
kVAlignCenter
kVAlignBottom
#include "internal/types.h"

Ist der Skriptrahmen Teil einer Gruppe, werden die Gruppenrahmen ausgerichtet. Sonst wird die aktuelle Rahmenauswahl des Dokumentes ausgerichtet.

#include "internal/types.h"
int main () { ItemRef groupRef = item::alloc (); ItemList frames = 0; int result;
if (frame::get_group (gFrame, groupRef) != 0) { frames = itemlist::selected (); } else { frames = itemlist::alloc (); frame::group_content (groupRef, frames); }
result = itemlist::align (frames, kHAlignRight); wlog ("", "# Align returns %d\n");
return 0; }

Version 2.1 R 713, 15. Mai 2008

priint:comet InDesign® Plug-Ins

static int itemlist::sort(
  ItemList frames,
  int howToSort,
  char* scriptTagName = 0)

Sortiere eine Liste von Dokumentrahmen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList Rahmenliste, die sortiert werden soll  
howToSort int - Sortierverfahren, siehe auch linklist::collect

kSortNo
kSortColwise
kSortRowwise
kSortByZOrder
4 Sortieren nach UIDs

5 Sortieren nach Sequenznummern (Palette 'Templateverhalten'). Die Rahmen sollten alle zu einer Cometgruppe gehören.

6 Sortieren nach Seitenelementen. Die Rahmen sollten auf einer Seite liegen.

7 [ab v4.3 R36000] Alphanumerische Sortierung nach den Werten des Script-Tags, das im Parameter scriptTagName angegeben ist.

Die definierten Script-Tags eines Rahmens können Sie auch in der Palette Rahmen-Etiketten sehen und bearbeiten.

scriptTagName String oder char* 0 Name des Script-Tags, nach dessen Wert die Rahmen sortiert werden sollen, siehe frame::get_script_tag. Der Parameter wird nur für howToSort = 7 ausgewertet.
#include "internal/types.h"
#include "internal/text.h"

#include "internal/text.h"
int main () { ItemList frames = itemlist::pageframes (1); ItemRef f = item::alloc (); String s = string::alloc (); int i;
wlog ("", "# Vorher ###############\n"); for (i = 0; i < itemlist::length (frames); i++) { itemlist::get (frames, f, i); frame::gettext (f, s); wlog ("", "Rahmen %d : '%s'\n", i+1, string::get (s)); }
itemlist::sort (frames, kSortByZOrder);
wlog ("", "# Nachher ###############\n"); for (i = 0; i < itemlist::length (frames); i++) { itemlist::get (frames, f, i); frame::gettext (f, s); wlog ("", "Rahmen %d : '%s'\n", i+1, string::get (s)); }
return 0; }

In Python kann die Liste mit Hilfe der Standard-Pythonfunktion sort sortiert werden. Im Beispiel werden die Rahmen des aktuellen Dokumentes nach ihrer UID sortiert und dann mit einer entsprechenden Zählnummer versehen.

#!py
import comet
def getUID(element):   return element.getUID()
def main():
  frames = comet.gDocument.getFrames()   frames.sort (key=getUID)   for x in range (0,len(frames)):   frame = frames[x]   inline_string = f"%!TT{x+1}"   frame.setText(inline_string)
  return 0

Version 2.1 R 722, 23. Mai 2008
Sortierverfahren 6 (nach Seitenelementen) seit v3.3 R2717, 17. Nov. 2011
Sortierverfahren 7 (nach Script-Tags) seit v.4.3 R36000, 22. Jan. 2025

priint:comet InDesign® Plug-Ins, comet_pdf

linklist::collect

static int itemlist::get_cometgroup(ItemList frames, int searchHierarchy = 1)

Ermittle die Comet-Gruppe einer Liste von Dokumentrahmen.

Name Typ Default Beschreibung
Return int   Comet-Gruppe oder 0, wenn die Rahmen keiner bzw. unterschiedlichen Gruppen zugeordnet sind
frames ItemList - Rahmenliste, deren Comet-Gruppe ermittelt werden soll
searchHierarchy int 1 soll in der Dokumentenhierarchie gesucht werden, wenn ein Rahmen keiner Gruppe zugeordnet ist?

1 : Ja
0 : Nein

Version 3.0 R 1500, 26. August 2009

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

frame::get_cometgroup

static int itemlist::are_members_of(
  ItemList frames,
  int groupID,
  int searchHierarchy = 1)

Prüfe, ob die Dokumentrahmen (implizit oder direkt) Mitglied einer Comet-Gruppe sind.

Name Typ Default Beschreibung
Return int   1, wenn alle Rahmen Mitglied der Gruppe sind, sonst 0
frames ItemList - Rahmenliste, die geprüft werden soll
groupID int - Comet-Gruppen ID
searchHierarchy int 1 soll in der Dokumentenhierarchie gesucht werden, wenn ein Rahmen keiner Gruppe zugeordnet ist?

1 : Ja
0 : Nein

Version 3.0 R 1500, 26. August 2009

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

frame::is_member_of

static int itemlist::add_to_cometgroup(
  ItemList items,
  int groupID,
  int invalidateView = 0)

Füge die Liste von Dokumentrahmen einer Comet-Gruppe hinzu. Enthält die Liste Rahmen, die Mitglied einer anderen Comet-Gruppe sind, gilt:

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmenliste, die hinzugefügt werden soll
groupID int - Comet-Gruppen ID
invalidateView int 0 soll die Ansicht aktualisiert werden? In Aufbauskripten sollte aus Performance-Gründen immer 0 übergeben werden.

Version 3.0 R 1500, 26. August 2009

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

frame::add_to_cometgroup

static int itemlist::remove_from_cometgroup(
  ItemList items,
  int groupID,
  int invalidateView = 0)

Löse die Liste von Dokumentrahmen aus einer Comet-Gruppe. In der Regel sind die Rahmen danach keiner Gruppe mehr zugeordnet, Ausnahme gilt für Rahmen, die selber Hauptrahmen einer Gruppe sind: diese Mitgliedschaft bleibt erhalten.
Wird als Comet-Gruppen ID -1 übergeben werden die Rahmen aus einer beliebigen Mitgliedschaft gelöst, sonst nur, wenn sie Mitglied der angegeben Gruppe sind.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmenliste, die gelöst werden soll
groupID int - Comet-Gruppen ID

-1 : Cometgruppe nicht prüfen
sonst : Gruppenzugehörig nur von dieser Gruppe lösen
invalidateView int 0 soll die Ansicht aktualisiert werden? In Aufbauskripten sollte aus Performance-Gründen immer 0 übergeben werden.

Version 3.0 R 1500, 26. August 2009

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

frame::remove_from_cometgroup

static int itemlist::create_cometgroup(ItemList items, int invalidateView = 0)

Erzeuge eine Comet-Gruppe aus einer Liste von Dokumentrahmen. Alte Mitgliedschaften werden (ohne Rücksicht und Ausnahmen) überschrieben.

Name Typ Default Beschreibung
Return int   ID der neuen Comet-Gruppe
frames ItemList - Rahmenliste, die gruppiert werden soll
invalidateView int 0 soll die Ansicht aktualisiert werden? In Aufbauskripten sollte aus Performance-Gründen immer 0 übergeben werden.

Version 3.0 R 1500, 26. August 2009

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

resolve_cometgroup
comet.frame.createCometGroup

static int itemlist::resolve_cometgroup(
  ItemRef docRef,
  int groupID,
  int resolveSubGroups = 0,
  int invalidateView = 0)

Löse eine Comet-Gruppe auf. Die Rahmen selbst werden dabei nicht gelöscht.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef - Dokument, auf dem gearbeitet werden soll

0 : Aktuelles (Skript)-Dokument
groupID int - ID der Comet-Gruppe, die aufgelöst werden soll
resolveSubGroups int 0 Untergruppen ebenfalls auflösen?

1 : Ja
0 : Nein
invalidateView int 0 Soll die Ansicht aktualisiert werden? In Aufbauskripten sollte aus Performance-Gründen immer 0 übergeben werden.

Version 3.0 R 1500, 26. August 2009

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

frame::remove_from_cometgroup
create_cometgroup
comet.frame.resolveCometGroup

static int itemlist::remove_cometgroup(
  ItemRef docRef,
  int groupID,
  int removeSubGroups = 0)

Lösche eine Comet-Gruppe. Alle Rahmen der gegebenen Cometgruppe werden aus dem Dokument entfernt. Alle Comet-Gruppennotizen, die auf diese Gruppe zeigen, werden dabei ebenfalls gelöscht.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef - Dokument, auf dem gearbeitet werden soll

0 : Aktuelles (Skript)-Dokument
groupID int - ID der Comet-Gruppe, die gelöscht werden soll
removeSubGroups int 0 Untergruppen ebenfalls löschen?

1 : Ja
0 : Nein

Version 3.0 R 1500, 26. August 2009

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

frame::remove_from_cometgroup

static int itemlist::remove_items(ItemList frames)

Lösche eine Liste von Dokumentrahmen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Liste von Dokumentrahmen. Alle Rahmen müssen zum selben Dokument gehören.

Version 3.0 R 1500, 26. August 2009

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

itemlist::remove_cometgroup
frame::remove

static ItemList itemlist::get_cometgroup_members(
  ItemRef docRef,
  int groupID,
  int includeSubGroups = 0)

Ermittle alle Mitglieder einer Comet-Gruppe.

Name Typ Default Beschreibung
Return ItemList   Liste von Dokumentrahmen. Die Liste muss mit itemlist::release wieder freigegeben werden!
docRef ItemRef - Dokument, auf dem gearbeitet werden soll

0 : Aktuelles (Skript)-Dokument
groupID int - ID der Comet-Gruppe, deren Mitglieder aufgelistet werden soll
resolveSubGroups int 0 Untergruppen ebenfalls einbinden?

1 : Ja
0 : Nein

Version 3.0 R 1500, 26. August 2009

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

create_cometgroup
resolve_cometgroup
comet.frame.getCometGroupMembers

static int itemlist::move_cometgroup_to(
  ItemRef docRef,
  int groupID,
  float left,
  float top,
  int moveSubGroups = 0,
  int newPage = -1)

Verschiebe eine Comet-Gruppe an die absoluten Koordinaten top / left. Bezugspunkt ist die linke obere Ecke der Bounding Box über alle Rahmen der Gruppe. Erstreckt sich die Gruppe über mehrere Seiten kann diese Methode zu unerwarteten Ergebnissen führen.

Beim Verschieben von Rahmen auf neue Seiten werden Cometgruppen-Zugehörigkeiten im Normalfall entfernt. Hintergrund dafür ist, dass das Verschieben von Rahmen im Normalfall nicht Cometgruppen-weise geschieht und dadurch Cometgruppen entstehen können, die über mehrere Seite gehen. Da die Funktion move_cometgroup_to aber immer komplette Cometgruppen verschiebt, wird hier die Cometgruppe nach erfolgreichem Verschieben wieder hergestellt (seit v4.0.5 R19555, 12. Jul 2017).

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef - Dokument, auf dem gearbeitet werden soll

0 : Aktuelles (Skript)-Dokument
groupID int - ID der Comet-Gruppe
left float - X-Koordinate in Punkten relativ zur Seite
top float - Y-Koordinate relativ zur Seite
moveSubGroups int - Untergruppen ebenfalls verschieben?

1 : Ja
0 : Nein
newPage int -1 Cometgruppe auf diese Seite verschieben (1-basiert)

-1 : Seite unverändert lassen

Version 3.0 R 1500, 26. August 2009
newPage seit v3.3 R2717, 17. Nov. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::move_cometgroup_by
itemlist::move_to
itemlist::move_by

static int itemlist::move_cometgroup_by(
  ItemRef docRef,
  int groupID,
  float x,
  float y,
  int moveSubGroups = 0)

Verschiebe eine Comet-Gruppe relativ. Bezugspunkt ist die linke obere Ecke der Bounding Box über alle Rahmen der Gruppe.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Dokument, auf dem gearbeitet werden soll

0 : Aktuelles (Skript)-Dokument
groupID int - ID der Comet-Gruppe
x float - X-Offset
y float - Y-Offset
moveSubGroups int 0 Untergruppen ebenfalls verschieben?

Version 3.0 R 1500, 26. August 2009

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::move_cometgroup_to
itemlist::move_to
itemlist::move_by

static int itemlist::move_to(
  ItemList frames,
  float left,
  float top,
  int newPage = -1,
  int allPages = 0,
  int spreadWise = 0)

Verschiebe eine Liste von Rahmen an die absoluten Koordinaten top / left. Bezugspunkt ist die linke obere Ecke der Bounding Box über alle Rahmen der Liste.

Enthält die Liste Rahmen verschiedener Seiten, werden nur die Rahmen der ersten Seite bearbeitet. Das gilt auch, wenn die Seiten zum gleichen Spread gehören. Hintergrund ist, dass möglichst vermieden werden soll, dass Rahmen von Seiten in den Arbeitsbereich fallen. Rahmen, die ganz im Arbeitsbereich liegen, gehören ab CS4 immer zu der Seite, der sie am nächsten liegen. In CS3 gehören Rahmen, die ganz im Arbeitsbereich liegen, zur ersten Seite des Spreads. Ist der Parameter allPages auf einen Wert > 0 gesetzt ist, werden alle Unterlisten jeweils seitenweise verschoben.

Beim Verschieben von Rahmen auf eine neue Seite gehen die Cometgruppen dieser Rahmen verloren. Wenn Sie eine ganze Cometgruppe auf eine neue Seite verschieben wollen, verwenden Sie bitte die Funktion itemlist::move_cometgroup_to.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmen, die verschoben werden sollen
left float - X-Koordinate in Punkten
top float - Y-Koordinate in Punkten
newPage int -1 Rahmenliste auf diese Seite verschieben (1-basiert)

-1 : Seite unverändert lassen
allPages int 0 Ist der Parameter auf einen Wert > 0 gesetzt ist, werden alle Unterlisten jeweils seitenweise verschoben, sonst werden nur die Rahmen der Seite des ersten Rahmens verschoben.
spreadWise int 0 0 : Rahmen seitenweise verschieben
sonst : Rahmen pro Druckbogen verschieben

Version 3.0 R 1500, 26. August 2009
newPage seit v3.3 R2717, 17. Nov. 2011
allPages seit v4.2 R31770, 20. Okt. 2022
spreadWise seit v4.2 R32580, 20. März 2023

priint:comet InDesign® Plug-Ins, Illustrator

itemlist::move_by
itemlist::move_cometgroup_by
itemlist::move_cometgroup_to

static int itemlist::move_by(
  ItemList frames,
  float x,
  float y)

Verschiebe eine Liste von Rahmen relativ.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmen, die verschoben werden sollen
x float - X-Offset
y float - Y-Offset

Version 3.0 R 1500, 26. August 2009

priint:comet InDesign® Plug-Ins, Illustrator

itemlist::move_to
itemlist::move_cometgroup_by
itemlist::move_cometgroup_to

static int itemlist::adapt_to(
  ItemList frames,
  float w,
  float h)

Adaptiere die gegebenen Rahmen auf die angegebene Größe. Die Größenbestimmung wird anhand der umschließenden Box um alle Rahmen gemacht und angenommen, jede dieser Kanten wird von einem Nagel festgehalten. Breite und Höhe der umschließenden Box der adaptierten Rahmen können von den Angaben zu Höhe und Breite abweichen, wenn auf der entsprechenden Kante kein Nagel liegt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmen, die adpatiert werden sollen
left float - Neue Breite in Punkten
top float - Neue Höhe in Punkten

Version 3.1 R 1540, 17. Sept. 2009

priint:comet InDesign® Plug-Ins

adapt_by
adapt_cometgroup_to
adapt_cometgroup_by

static int itemlist::adapt_by(
  ItemList frames,
  float dx,
  float dy)

Adpatiere die gegebene Liste um die angegebene Größenänderung. Sind in den Rahmen keine Nägel gesetzt, hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Rahmen, die adaptiert werden sollen
x float - Änderung der Breite in Punkten
y float - Änderung der Höhe in Punkten

Ändere die Größe einer Musterseite und passe die Rahmen der neuen Größe an.

float	widthMod	= 200.0;
float	heighthMod	= 100.0;
char stScriptTemplate [] = "\ var myLP = gDocRef1.masterSpreads[%d].pages[%d];\ myLP.resize (CoordinateSpaces.INNER_COORDINATES, AnchorPoint.TOP_LEFT_ANCHOR, ResizeMethods.ADDING_CURRENT_DIMENSIONS_TO, [%f, %f]);\ ";
int main () { String js = string::alloc (); ItemList mli = itemlist::masteritems (0, "A-Musterseite", 2);
if (gRun > 1) return 0;
string::set (js, stScriptTemplate,   0, // 0-based master parent spread index   1, // 0-based page index in master parent spread   widthMod, // Width modification in pts   heighthMod); // Height modification in pts run_javascript (js, 0, 1, 2, 0, 0, 0, mli);
itemlist::adapt_by (mli, widthMod, heighthMod);
return 0; }

Version 3.1 R 1540, 17. Sept. 2009

priint:comet InDesign® Plug-Ins

adapt_to
adapt_cometgroup_to
adapt_cometgroup_by

static int itemlist::adapt_cometgroup_to(
  ItemRef docRef,
  int cometGroupID,
  float w,
  float h,
  int subElementsToo = 1)

Adaptiere die Rahmen einer Cometgruppe auf die angegebene Größe. Die Größenbestimmung wird anhand der umschließenden Box um alle Rahmen gemacht und angenommen, jede dieser Kanten wird von einem Nagel festgehalten. Breite und Höhe der umschließenden Box der adaptierten Rahmen können von den Angaben zu Höhe und Breite abweichen, wenn auf der entsprechenden Kante kein Nagel liegt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef - In welchem Dokument soll die Cometgruppe gesucht werden?

0 : Aktuelles (Skript)-Dokument
cometGroupID int - ID der Cometgruppe
w float - Neue Breite
h float - Neue Höhe
subElementsToo int 1 Änderungen auf Unterlemente anwenden?

1 : Ja
0 : Nein

Version 3.1 R 1540, 17. Sept. 2009

priint:comet InDesign® Plug-Ins

adapt_by
adapt_to
adapt_cometgroup_by

static int itemlist::adapt_cometgroup_by(
  ItemRef docRef,
  int cometGroupID,
  float x,
  float y,
  int subElementsToo = 1)

Adpatiere die gegebene Rahmen der gegebenen Cometgruppe um die angegebene Größenänderung. Sind in den Rahmen keine Nägel gesetzt, hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef - In welchem Dokument soll die Cometgruppe gesucht werden?

0 : Aktuelles Skriptdokument
cometGroupID int - ID der Cometgruppe
x float - Änderung der Breite in Punkten
y float - Änderung der Höhe in Punkten
subElementsToo int 1 Änderungen auf Unterlemente anwenden?

Version 3.1 R 1540, 17. Sept. 2009

priint:comet InDesign® Plug-Ins

adapt_by
adapt_to
adapt_cometgroup_to

static int itemlist::apply_layout_rules(ItemList frames, int what)

Ausführen der Gestaltungsregeln eines Rahmens. Sie können festlegen, welche Gestaltungsregeln ausgeführt werden soll. Ist der Typ der Gestaltungsregel abgeschaltet (durch system::suppres_layoutrules oder allegeim durch die Plugins) werden diese Regeln nicht ausgeführt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Liste gültiger Dokumentrahmen
what int - Welche Gestaltungsregeln sollen ausgeführt werden?
Icon Wert Situation
2 nach Laden
1 nach Neuanlage
32 nach Aufbau
4 Seitenreorganisation
8 nach Größen- und Positionsänderungen

Version 3.1, R1550, 18. Sept. 2009

priint:comet InDesign® Plug-Ins, comet_pdf

system::suppress_layout_rules
system::wakeup_layout_rules
frame::apply_layout_rules

static int (
  ItemRef outMSO,
  ItemList states,
  int type = 0,
  char* name = "")

DEPRECATED! Verwenden Sie stattdessen die Funktion interactive::create_multistate.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

Verwenden Sie stattdessen die Funktioninteractive::create_multistate.

static int itemlist::revert(ItemList frames)

Umkehren der Einträge einer Liste.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Beliebige Liste von ItemRefs

v3.3 R2670, 14. Okt. 2011

priint:comet InDesign® Plug-Ins, comet_pdf

static int itemlist::store_magnet_distances(ItemList frames)

Sichere die Magnetabstände aller Rahmen der Liste und aller Rahmen, die von den Rahmen der Liste erreicht werden können.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Beliebige Liste von ItemRefs

Sichere alle Magnetabstände im Dokument.

int main ()
{
    int			pg		= document::pages ();
    int			p;
    ItemList	frames	= 0;
for (p = 1; p <= pg; p++) { frames = itemlist::pageframes (p, 1); itemlist::store_magnet_distances (frames); itemlist::release (frames); frames = 0; }
return 0; }

v3.3 R850, 29.03.2012

priint:comet InDesign® Plug-Ins, comet_pdf

frame::store_magnet_distances

static int itemlist::duplicate(
  ItemList resultList,
  ItemList srcList,
  float x = -1000.0,
  float y = -1000.0,
  ItemRef docRef = 0,
  int pageNum = -1,
  char* layerName = "",
  int addToCometgroup = 0,
  int reconstruct = 0)

Kopiere eine Liste von Rahmen an eine andere Stelle (mglw. auch in einem anderen Dokument.)

Enthält die Liste Rahmen verschiedener Seiten, werden nur die Rahmen der ersten Seite bearbeitet. Das gilt auch, wenn die Seiten zum gleichen Spread gehören.. Hintergrund ist, dass möglichst vermieden werden soll, dass Rahmen von Seiten in den Arbeitsbereich "fallen". Rahmen, die ganz im Arbeitsbereich liegen, gehören ab CS4 immer zu der Seite, der sie am nächsten liegen. In CS3 gehören Rahmen, die ganz im Arbeitsbereich liegen, zur ersten Seite des Spreads.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
resultList ItemList - Liste der neu angelegten Rahmen

0 : Ignoriere Ergebnis
sonst : mit itemlist::alloc reservierte Referenz für die neuen Rahmen
srcList ItemList - Liste der Rahmen, die dupliziert werden sollen
x, y float -1000.0, -1000.0 Position der neuen Rahmen (seitenrelativ und in Punkten)

-1000.0, -1000.0 : Originalposition
docRef ItemRef 0 Zieldokument

0 : aktuelles Dokument
pageNum int -1 Zielseite (1-basiert)
-1 : gleiche Seite wie die Originalrahmen.
layerName String oder char* "" Zielebene
0 oder "" : Ebene des ersten Rahmens der Liste
addToCometgroup int 0 Sollen die neuen Rahmen zur Cometgruppe der Originale hinzugefügt werden? Die Originalrahmen müssen dabei alle zur gleichen Cometgruppe gehören. Comet-Notizen werden hier bei der Bestimmung der Cometgruppe ignoriert.

0 : Nein
1 : Ja, zur Cometgruppe des Originales hinzufügen. Wird in ein anderes Dokument dupliziert, hat der Parameter keine Wirkung!
reconstruct int 0 Cometgruppen möglichst wiederherstellen

0 : Nein. Die neuen Rahmen haben keine Cometgruppen mehr

1 : Cometgruppen wie in den Originalrahmen bilden

Der Parameter addToCometgroup hat Vorrang vor reconst.
int main ()
{
    int			res;
    ItemRef		resref	= item::alloc ();
res = frame::duplicate (resref, gFrame, 10.0, 10.0); wlog ("", "duplicate result : %d (%d --> %d)\n",   res, item::getint (gFrame), item::getint (resref));
return 0; }

Kopiere den Inhalt der Seite 3 eines Dokumentes auf die aktuelle Seite.

int main ()
{
    ItemRef			d1		= document::alloc ("$DESKTOP/base.indd");
    ItemList		src		= itemlist::pageframes_of_doc (d1, 3);
    ItemList		added	= itemlist::alloc ();
itemlist::duplicate (0, src, 10.0, 20.0);
return 0; }

v3.3 R2851, 12. Apr. 2012
Parameter addToCometgroup seit Version v3.3 R3008, 23. Mai 2012
Parameter reconstruct seit Version v3.4, R5322, 19. Mai 2014

priint:comet InDesign® Plug-Ins

static int itemlist::scale(
  ItemList frames,
  float xscale,
  float yscale,
  float refpointX = 0.0,
  float refpointY = 0.0,
  int suprRules = 1)

Skalieren einer Liste von Rahmen und ihrer Abstände.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameList ItemList - Rahmenliste
xscale float - Skalierung in X-Richtung (1.0 entspricht 100%)
yscale float - Skalierung in Y-Richtung (1.0 entspricht 100%)
refpointX float 0.0 X-Wert des Fixpunktes relativ zur linken Kante der Boundingbox um die Rahmen
refpointY float 0.0 Y-Wert des Pixpunktes relativ zur oberen Kante der Boundingbox um die Rahmen
suprRules int 1 Sollen bei der Ausführung die Gestaltungsregeln "Nach Geometrieänderung" unterdrückt werden?

1 : Ja, diese Regeln sollen nicht ausgeführt werden.

0 : Nein, die Regeln nicht abschalten. Die Regeln werden nun mglw. auch während des Aufbaus von Produkten ausgeführt. Das kann zu Performance-Problemen und anderen Seiteneffekten führen.

Dupliziere eine Rahmenliste aus einem Dokument in ein anderes und skaliere die neuen Rahmen.

int main ()
{
    ItemRef			d1		= document::alloc ("$DESKTOP/schräge Tabellenköpfe.indd");
    ItemRef			d2		= document::alloc ("Unbenannt-1");
    ItemList		src		= itemlist::pageframes_of_doc (d1, 3);
    ItemList		added	= itemlist::alloc ();
    float			l, t, r, b;
itemlist::duplicate (added, src, 10.0, 20.0); itemlist::bbox (added, &l, &t, &r, &b); itemlist::scale (added, 0.5, 0.25, (r-l)/2.0, (b-t)/2.0);
return 0; }

v3.3 R2851, 12. Apr. 2012
Parameter suprRules seit v3.3 R3405, 5. Feb. 2012

priint:comet InDesign® Plug-Ins

static int itemlist::rotate(
  ItemList frames,
  float angle,
  float refpointX = 0.0,
  float refpointY = 0.0,
  int suprRules = 1)

Drehen einer Liste von Rahmen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameList ItemList - Rahmenliste
angle float - Drehwinkel in Grad
refpointX float 0.0 X-Wert des Fixpunktes relativ zur linken Kante der Boundingbox um die Rahmen
refpointY float 0.0 Y-Wert des Pixpunktes relativ zur oberen Kante der Boundingbox um die Rahmen
suprRules int 1 Sollen bei der Ausführung die Gestaltungsregeln "Nach Geometrieänderung" unterdrückt werden?

1 : Ja, diese Regeln sollen nicht ausgeführt werden.

0 : Nein, die Regeln nicht abschalten. Die Regeln werden nun mglw. auch während des Aufbaus von Produkten ausgeführt. Das kann zu Performance-Problemen und anderen Seiteneffekten führen.

Dupliziere eine Rahmenliste aus einem Dokument in ein anderes und drehe die neuen Rahmen.

int main ()
{
    ItemRef			d1		= document::alloc ("$DESKTOP/schräge Tabellenköpfe.indd");
    ItemRef			d2		= document::alloc ("Unbenannt-1");
    ItemList		src		= itemlist::pageframes_of_doc (d1, 3);
    ItemList		added	= itemlist::alloc ();
    float			l, t, r, b;
itemlist::duplicate (added, src, 10.0, 20.0); itemlist::bbox (added, &l, &t, &r, &b); itemlist::rotate (added, 45.0, (r-l)/2.0, (b-t)/2.0);
return 0; }

v3.3 R2851, 12. Apr. 2012
Parameter suprRules seit v3.3 R3405, 5. Feb. 2012

priint:comet InDesign® Plug-Ins

static int itemlist::skew(
  ItemList frames,
  float angle,
  float refpointX = 0.0,
  float refpointY = 0.0,
  int suprRules = 1)

Zerren einer Liste von Rahmen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameList ItemList - Rahmenliste
angle float - Zerrwinkel in Grad
refpointX float 0.0 X-Wert des Fixpunktes relativ zur linken Kante der Boundingbox um die Rahmen
refpointY float 0.0 Y-Wert des Pixpunktes relativ zur oberen Kante der Boundingbox um die Rahmen
suprRules int 1 Sollen bei der Ausführung die Gestaltungsregeln "Nach Geometrieänderung" unterdrückt werden?

1 : Ja, diese Regeln sollen nicht ausgeführt werden.

0 : Nein, die Regeln nicht abschalten. Die Regeln werden nun mglw. auch während des Aufbaus von Produkten ausgeführt. Das kann zu Performance-Problemen und anderen Seiteneffekten führen.

Dupliziere eine Rahmenliste aus einem Dokument in ein anderes und verzerre die neuen Rahmen.

int main ()
{
    ItemRef			d1		= document::alloc ("$DESKTOP/schräge Tabellenköpfe.indd");
    ItemRef			d2		= document::alloc ("Unbenannt-1");
    ItemList		src		= itemlist::pageframes_of_doc (d1, 3);
    ItemList		added	= itemlist::alloc ();
    float			l, t, r, b;
itemlist::duplicate (added, src, 10.0, 20.0); itemlist::bbox (added, &l, &t, &r, &b); itemlist::skew (added, 30.0, (r-l)/2.0, (b-t)/2.0);
return 0; }

v3.3 R2851, 12. Apr. 2012
Parameter suprRules seit v3.3 R3405, 5. Feb. 2012

priint:comet InDesign® Plug-Ins

static int itemlist::rmv_magnets(ItemList frames, int full_closure = 0)

Lösche alle Magnete, Nägel und Adapterskripte aus den Rahmen der Liste.

Beachten Sie bitte, dass Magentabstände nach dem Ausführen von Gestaltungsregeln automatisch angepasst werden. Löscht eine dieser Regeln diese Magnete, können die Abstände also nicht mehr angepasst werden. In Gestaltungsregeln empfiehlt sich daher folgendes Vorgehen:

  1. Alle Rahmen mit Gestaltungsregeln, die Größe und/oder Position eines Rahmens verändern, bekommen die Regel 'Magnet-Abstände aktualisieren' (als letzte!) Regel hinzugefügt.
  2. Alle Rahmen aus Schritt 1 bekommen eine eindeutige Kennung.
  3. Der Rahmen mit der größten Kennung bekommt eine Gestaltungsregel, in der die Magente gelöscht werden. Ein Beispiel für Cometgruppen finden Sie unten.
Wollen Sie nicht alle Kennungen setzen oder ändern wollen, geben Sie einem geeigneten Rahmen die Kennung '∞'. Dadurch werden die Regeln dieses Rahmens zuletzt ausgeführt. In diesem Rahmen können Sie Magnete löschen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameList ItemList - Rahmenliste
full_closure int 0 0 : Nur die angegebenen Rahmen bearbeiten

sonst : auch alle Rahmen bearbeiten, die von mind. einem Rahmen der Liste über Magneten erreichbar sind

Lösche aus allen Rahmen einer Cometgruppe die Nägel und Magnete.

int main ()
{
    int			gid		= frame::get_cometgroup (gFrame);
    ItemList	members	= itemlist::get_cometgroup_members (0, gid);
itemlist::rmv_magnets (members, 1); itemlist::release (members); return 0; }

v3.4 R5356, 2. Jul 2014

priint:comet InDesign® Plug-Ins, comet_pdf

frame::rmv_magnets

static int itemlist::write_frame_info(
  ItemRef document,
  int cometGroupID,
  int frameSearchFlags,
  int documentType,
  int conflictBehavior,
  int frameType = 0,
  LinkList placeholders = 0)

Schreibe alle Informationen einer Rahmengruppe in die Datenquellen. Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Dokument
cometGroupID int - ID der Cometgruppe
frameSearchFlags int kUseDefault Auf welche Art und Weise sollen Rahmen zum überschreiben identifiziert werden?
Siehe frame::write_frame_info
documentType int kLocalDoc In welchem Dokument soll nach bereits existierenden Rahmen gesucht werden?
Siehe frame::write_frame_info
conflictBehavior int kThrowError Verhalten bei mehreren Suchtreffern pro Rahmen
Siehe frame::write_frame_info
frameType int 0 Rahmentyp der geschrieben wird.
0: Alle
1: Textrahmen
2: Bildrahmen
placeholders LinkList 0 Nur Platzhalter in dieser Liste berücksichtigen
#include "internal/frameinfos.h"

Alle Rahmeninformationen einer Cometgruppe schreiben

int main ()
{
    int 	cometGroupID = 220;
return itemlist::write_frame_info(gDocument, cometGroupID); }

v4.0.5 R8423

priint:comet InDesign® Plug-Ins, comet_pdf

frame::write_frame_info
document::write_frame_info
itemlist::apply_frame_info

static int itemlist::write_frame_info2(
  ItemRef document,
  ItemList frameList,
  int frameSearchFlags,
  int documentType,
  int conflictBehavior,
  int frameType = 0,
  LinkList placeholders = 0)

Schreibe alle Informationen einer Rahmenliste in die Datenquellen. Funktioniert wie itemlist::write_frame_info, akzeptiert aber eine Rahmenliste anstatt einer GruppenID. Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Dokument
frameList ItemList - Liste der zu schreibenden Rahmen
frameSearchFlags int kUseDefault Auf welche Art und Weise sollen Rahmen zum überschreiben identifiziert werden?
Siehe frame::write_frame_info
documentType int kLocalDoc In welchem Dokument soll nach bereits existierenden Rahmen gesucht werden?
Siehe frame::write_frame_info
conflictBehavior int kThrowError Verhalten bei mehreren Suchtreffern pro Rahmen
Siehe frame::write_frame_info
#include "internal/frameinfos.h"

Alle Rahmeninformationen des Dokumentes Cometgruppe schreiben

int main ()
{
    ItemList frames = itemlist::allframes();
return itemlist::write_frame_info2(gDocument, frames); }

v4.0.5 R8423

priint:comet InDesign® Plug-Ins, comet_pdf

itemlist::apply_frame_info
frame::write_frame_info
document::write_frame_info

static int itemlist::apply_frame_info(
  ItemRef document,
  int cometGroupID,
  int propertyFlags,
  int searchType,
  int documentType,
  int frameType = 0,
  LinkList placeholders = 0)

Stelle gespeicherte Rahmeninformationen aus den Datenquellen wieder her und setze die Rahmen auf diese Informationen zurück. Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Dokument
cometGroupID int - ID der Cometgruppe
propertyFlags int - Welche Informationen sollen wiederhergestellt werden?
Siehe frame::apply_frame_info
frameSearchFlags int - Wie wird entschieden, aus welchem Dokument die gespeicherten Informationen kommen?
Siehe frame::apply_frame_info
documentType int - Auf welche Art und Weise soll der gespeicherte Rahmen identifiziert werden?
Siehe frame::apply_frame_info
conflictBehavior int kThrowError Verhalten bei mehreren Suchtreffern pro Rahmen
Siehe frame::apply_frame_info
frameType int 0 Rahmentyp der berücksichtigt wird.
0: Alle
1: Textrahmen
2: Bildrahmen
placeholders LinkList 0 Nur Platzhalter in dieser Liste berücksichtigen
#include "internal/frameinfos.h"

v4.0.5 R8423

priint:comet InDesign® Plug-Ins, comet_pdf

frame::apply_frame_info
itemlist::apply_frame_info

static int itemlist::apply_frame_info2(
  ItemRef document,
  ItemList frameList,
  int propertyFlags,
  int searchType,
  int documentType,
  int frameType = 0,
  LinkList placeholders = 0)

Stelle gespeicherte Rahmeninformationen aus den Datenquellen wieder her und setze die Rahmen auf diese Informationen zurück. Funktioniert wie itemlist::apply_frame_info, aber akzeptiert eine Rahmenliste anstatt einer GruppenID. Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Dokument
frameList ItemList - Liste der wiederherzustellenden Rahmen
propertyFlags int - Welche Informationen sollen wiederhergestellt werden?
Siehe frame::apply_frame_info
frameSearchType int - Wie wird entschieden, aus welchem Dokument die gespeicherten Informationen kommen?
Siehe frame::apply_frame_info
documentType int - Auf welche Art und Weise soll der gespeicherte Rahmen identifiziert werden?
Siehe frame::apply_frame_info
conflictBehavior int kThrowError Verhalten bei mehreren Suchtreffern pro Rahmen
Siehe frame::apply_frame_info
#include "internal/frameinfos.h"

v4.0.5 R8423

priint:comet InDesign® Plug-Ins, comet_pdf

frame::apply_frame_info
itemlist::apply_frame_info

static int itemlist::delete_frame_info(
  ItemRef docRef,
  int cometGroupID,
  int frameSearchFlags = kUseDefault,
  int documentType = kLocalDoc,
  int conflictBehavior = kThrowError,
  int frameType = 0,
  LinkList placeholders = 0)

Lösche Rahmeninfos für alle Rahmen einer Cometgruppe aus den Datenquellen. Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Dokument
cometGroupID int - ID der CometGruppe für die die Rahmeninfos gelöscht werden sollen.
frameSearchFlags int kUseDefault Auf welche Art und Weise soll der gespeicherte Rahmen identifiziert werden?
Siehe frame::apply_frame_info
documentType int kLocalDoc Wie wird entschieden, aus welchem Dokument die gespeicherten Informationen kommen?
Siehe frame::apply_frame_info
conflictBehavior int kThrowError Verhalten bei mehreren Suchtreffern pro Rahmen
Siehe frame::apply_frame_info
frameType int 0 Filter für Rahmentyp der gelöscht wird
0: Alle
1: Textrahmen
2: Bildrahmen
#include "internal/frameinfos.h"

Rahmeninfos des einer Cometgruppe aus den Datenquellen löschen

#include "internal/frameinfos.h"
int main () { int groupID = 220;
itemlist::delete_frame_info(gDocument, 220); return 0; }

v4.0.5 R8650

priint:comet InDesign® Plug-Ins, comet_pdf

frame::delete_frame_info
itemlist::delete_frame_info2
document::delete_frame_info

static int itemlist::delete_frame_info2(
  ItemRef docRef,
  ItemList frameList,
  int frameSearchFlags = kUseDefault,
  int documentType = kLocalDoc,
  int conflictBehavior = kThrowError)

Lösche Rahmeninfos für alle Rahmen einer Cometgruppe aus den Datenquellen. Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Dokument
frameList ItemList - Liste von Rahmen für die die Rahmeninfos gelöscht werden sollen.
frameSearchFlags int kUseDefault Auf welche Art und Weise soll der gespeicherte Rahmen identifiziert werden?
Siehe frame::apply_frame_info
documentType int kLocalDoc Wie wird entschieden, aus welchem Dokument die gespeicherten Informationen kommen?
Siehe frame::apply_frame_info
conflictBehavior int kThrowError Verhalten bei mehreren Suchtreffern pro Rahmen
Siehe frame::apply_frame_info
#include "internal/frameinfos.h"

v4.0.5 R8650

priint:comet InDesign® Plug-Ins, comet_pdf

frame::delete_frame_info
itemlist::delete_frame_info
document::delete_frame_info

static int itemlist::convert_to_trailer(int* importer, ItemList frames)

Registriere die Rahmen der Lite in der Aufbauhilfe als Produkt-Trailer.

Der Aufruf darf nur in der Situation kCheckSizeBefore der Aufbauhilfe verwendet werden. Auf der aktuellen Dokumentseite muß nach dem Einfügen des Trailers noch genügend Platz zum Einfügen des eigentlichen Produktes sein!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
importer int* - Aktueller Produktaufbau. Den Wert der Variable erhalten Sie über die Variable gImporter der Aufbauhilfe
frames ItemList - Eingefügte Rahmen
#include "internal/types.h"

Das Aufbauhilfe-Skript fügt am Beginn eines neuen N:1-Elementes ein weiteres Template mit dem gleichen Produkt ein. Das Beispiel ist nur sinnvoll bei N:1-Elementen!

#include "internal/types.h"
#include "internal/products.h"
int main () { int result = 0; ItemList inserted = 0;
while (1) { if (gSituation == kCheckSizeBefore) { if (gGridPosX == 0.0 && gGridPosY == 0) { inserted = document::place_items (0,   "", "",   178,   gElementLeft,   gElementTop,   gPageNum,   "",   gRecordID, gRecordID2, gRecordID3, gRecordStringID,   1); itemlist::convert_to_trailer (gImporter, inserted); itemlist::release (inserted); } }
break; }
return result; }

Mit einer kleinen Änderung kann das obige Beispiel so erweitert werden, dass nur beim Beginn einer neuen Seite ein Zusatzprodukt eingefügt wird. In dieser Form funktioniert das Beispiel auch für belibige Seitenelmente.

if (gElement == 1 && gGridPosX == 0.0 && gGridPosY == 0) // Nur erstes Seitenelement

v4.0.5 R18348, 31. Mai 2017

priint:comet InDesign® Plug-Ins comet_pdf

comet.frame.convertToTrailer

static int itemlist::pdf_export(
  ItemList frameList,
  char* profile,
  char* outputPath,
  char* outputName,
  float margin = 0.0)

Erstellt ein PDF von der angegebenen Rahmenliste unter Verwendung des angegebenen PDF-Profils. Das PDF wird dabei auf die BoundingBox der Rahmen zugeschnitten und enthält keine anderen Rahmen als die angegebenen. Weitere Rahmen einer Textfortsetzungskette werden automatisch mit exportiert. Jede Seite/Spread wird gesondert in ein PDF im Zielordner exportiert und mit einem dreistelligen Suffix versehen (000, 001, 002, ...).

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameList ItemList - Liste der zu exportierenden Rahmen
profile String oder char* - PDF-Exportprofil
outputPath String oder char* - Ausgabeordner (ohne Dateinamen)
outputName String oder char* - Ausgabedateiname (ohne Endung)
Wird mit Suffix pro Seite/Spread versehen (000, 001, ...)
margin float 0.0 Erweitert die Exportierte Fläche in alle Richtungen (Einheit pt)

PDF-Export für alle ausgewählten Rahmen

int main ()
{
    char	* 	pdf_preset 	= "[Qualitativ hochwertiger Druck]";
    char	* 	outputPath 	= "c:/temp/banana";
    char	*	outputName	= "bananas";
    ItemList 	frames 		= itemlist::selected();
if (gRun > 1) { return 0; }
itemlist::pdf_export(frames, pdf_preset, outputPath, outputName, 10.0); itemlist::release(frames);
return 0; }

v4.0.5 R8405

priint:comet InDesign® Plug-Ins

document::pdf_export

static ItemList itemlist::linked_urls(ItemRef docRef)

Hole alle Rahmen einer Rahmenliste, die Web-Bild haben. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return ItemList   Liste aller Rahmen aus inList die einen Web-Bild haben. Die Liste muss mit itemlist::release wieder gelöscht werden!
inList ItemList - Liste von Rahmen aus denen die mit einem Web-Bild herausgesucht werden sollen

Hole alle Rahmen mit Web-Bildern des aktuellen Dokumentes.

int main()
{
    ItemList 	selected 		= itemlist::selected();
    ItemList 	linked 			= itemlist::linked_urls(selected);
    ItemList 	embedded 		= itemlist::embedded_urls(selected);
    int 		framesCount 	= itemlist::length(selected);
    int 		linkedCount 	= 0;
    int 		embeddedCount 	= 0;
if (gRun > 1) { return 0; }
if (linked) { linkedCount = itemlist::length(linked); }
if (embedded) { embeddedCount = itemlist::length(embedded); }
showmessage("%d frames selected\n%d are linked\n%d are embedded", framesCount, linkedCount, embeddedCount);
itemlist::release(selected); if (linked) { itemlist::release(linked); } if (embedded) { itemlist::release(embedded); }
return 0; }

v4.0.5 R20002 (28. Jul 2017)

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

frame::has_linked_url
itemlist::embedded_urls
document::linked_urls

static ItemList itemlist::embedded_urls(ItemRef docRef)

Hole alle Rahmen einer Rahmenliste mit einem eingebetteten Web-Bild. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return ItemList   Liste aller Rahmen aus inList die eine eingebettetes Web-Bild haben.
Die Rahmen müssen dabei keine Bilder enthalten, es wird lediglich geprüft, ob der Rahmen über eine URL zum Einbetten eines Bildes verfügt. Die Liste muss mit itemlist::release wieder gelöscht werden!
inList ItemList - Gültige Liste von Rahmen

v4.0.5 R19777 (24. Jul 2017)

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

frame::has_embedded_url
itemlist::linked_urls
document::embedded_urls

static int itemlist::link_urls(ItemList frames, StringList urls)

Verknüpfe die angegebenen Rahmen mit dem~n angegebenen Web-Bildern. Allgemeine Infos zu Web-Bildern finden Sie hier. Die Eingabelisten frames und urls müssen genau gleich lang sein.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Liste von Rahmen die verknüpft werden sollen.
urls StringList - Liste von URL-Addressen

Verknüpfe sechs Rahmen mit sechs Bildern (in diesem Beispiel muss natürlich das Dokument genau sechs Rahmen haben damit die Listen gleich lang sind)

int main()
{
    StringList 	URLs 	= stringlist::alloc();
    ItemList 	frames 	= itemlist::allframes();
stringlist::append(URLs, "https://priint.com/assets/template/img/priint.png"); stringlist::append(URLs, "http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample1_l.jpg"); stringlist::append(URLs, "http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample2_l.jpg"); stringlist::append(URLs, "http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample3_l.jpg"); stringlist::append(URLs, "http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample4_l.jpg"); stringlist::append(URLs, "http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample5_l.jpg");
itemlist::link_urls(frames, URLs);
stringlist::release(URLs); itemlist::release(frames);
return 0; }

v4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf

frame::link_url

static int itemlist::embed_urls(ItemList frames, StringList urls)

Verknüpfe die angegebenen Rahmen mit den Eeb-Bildern zum Einbetten. Allgemeine Infos zu Web-Bildern finden Sie hier. Die Eingabelisten frames und urls müssen genau gleich lang sein.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Liste von Rahmen die verknüpft werden sollen.
urls StringList - Liste von URL-Addressen

Verkn&uumpfe sechs Rahmen mit sechs Bildern (in diesem Beispiel muss natürlich das Dokument genau sechs Rahmen haben damit die Listen gleich lang sind)

int main()
{
    StringList 	URLs 	= stringlist::alloc();
    ItemList 	frames 	= itemlist::allframes();
stringlist::append(URLs, "https://priint.com/assets/template/img/priint.png"); stringlist::append(URLs, "http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample1_l.jpg"); stringlist::append(URLs, "http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample2_l.jpg"); stringlist::append(URLs, "http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample3_l.jpg"); stringlist::append(URLs, "http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample4_l.jpg"); stringlist::append(URLs, "http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample5_l.jpg");
itemlist::embed_urls(frames, URLs);
stringlist::release(URLs); itemlist::release(frames);
return 0; }

v4.0.5 R19777 (24. Jul 2017)

priint:comet InDesign® Plug-Ins, comet_pdf

frame::embed_url
itemlist::link_urls

static int itemlist::check_url_links(
  ItemList frames,
  ItemList outdated,
  ItemList error,
  int flags)

Prüfe den Status der Web-Bilder einer Rahmenliste. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Liste von Rahmen die geprüft werden sollen
outdated ItemList 0 In diese Liste werden die Rahmen geschrieben, bei denen die Bilder veraltet sind.
error ItemList 0 In diese Liste werden die Rahmen geschrieben, bei denen die Statusprüfung fehlgeschlagen ist.
flags int 0 1: Progressbalken zeigen

v4.0.5 R19777 (24. Jul 2017)

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

frame::check_url_link
document::check_url_links

static int itemlist::update_url_links(ItemList frames, int flags)

Lade wenn nötig die Web-Bilder einer Rahmenliste neu. Allgemeine Infos zu Web-Bildern finden Sie hier. Beachten Sie bitte auch die Regeln für die Bildplatzierung von Web-Bildern.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Liste von Rahmen die upgedated werden sollen
flags int 0 1: Progressbalken zeigen

v4.0.5 R19777 (24. Jul 2017)

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

frame::update_url_link
document::update_url_links

static int itemlist::remove_url_links(ItemList frames)

Entferne die Web-Bild-Verweise aus einer Liste von Rahmen. Die Bilder der Rahmen bleiben dabei bestehen, es wird lediglich die Web-Bild-Verknüpfung (URL) gelöscht. Allgemeine Infos zu Web-Bildern finden Sie hier.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - Liste von Rahmen von denen die Verweise gelöscht werden sollen.

v4.0.5 R19777 (24. Jul 2017)

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

frame::remove_url_link
document::remove_url_links

static int itemlist::relink(
  ItemList frames,
  int mappingFunction,
  int reloadPlaceholders = 0)

Finde alle Platzhalter in einer Rahmenliste und verknüpfe sie mit einer neuen ID.

Die Funktion sucht alle Platzhalter einer Rahmenliste, ermittelt die Produkt-ID und ruft für jede gefundene ID die als zweiter Parameter angegebene Mapping-Funktion auf.

Die Mapping-Funktion muss folgende Signatur aufweisen:

int myMappingFunction(IDType in, IDType out);
Wobei gilt:

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frames ItemList - frames to relink
mappingFunction int - Rückruf-Funktion für I D mapping
reloadPlaceholders int 0 Platzhalter anschließend neu laden (1) oder nicht (0)

Ändere die ID1 aller Platzhalter einer Rahmenliste sofern sie vom Wert 1 abweichen:

int normalizeId1(IDType in, IDType out)
{
    if (idtype::id(in) != 1)
    {
        idtype::set_id(out, 1);
        return 1;
    }
    return 0;
}
int main() { ItemList selectedFrames = 0;
if (gRun > 1) return 0;
selectedFrames = itemlist::selected(); itemlist::relink(selectedFrames, mapIds); itemlist::release(selectedFrames);
return 0; }

4.1.7 R26777
product::relink

Seit
Plugin Version 1.0.18
Letzte Änderung
30.07.2025, 07:35 Uhr
Autor
Paul Seidel
Siehe auch
frame
item

Alphabetic index HTML hierarchy of classes or Java