Dokumentmethoden.

Letzte Änderung :
30.06.2025, 17:48 Uhr

Dokumentmethoden.

static ItemRef document::alloc(char* path)

Erzeuge eine Referenz auf ein geöffnetes Dokument. Die Dokumente werden über ihren vollständigen Pfad erkannt. Neue Dokumente werden nach dem Namen im Fenstertitel (z.B. "Unbenannt-1") gesucht.

Name Typ Default Beschreibung
Return ItemRef   Referenz auf das geöffnete Dokument. Der Rückgabewert muss mit item::release wieder gelöscht werden, wenn er nicht mehr benötigt wird. 0 : Dokument nicht geöffnet
path String oder char* - Vollständiger Pfad der Dokumentdatei oder Name des Fensters bei neuen Dokumenten (z.B. "Unbenannt-1").

Erzeuge ItemRefs zweier geöffneter Dokumente. Zusammen mit item::define können Sie damit einen Rahmen adressieren, von dem Sie den Dokumentpfad und die UID kennen.

int main ()
{
    ItemRef			d1		= document::alloc ("$DESKTOP/a1.indd");
    ItemRef			d2		= document::alloc ("Unbenannt-1");
wlog ("", "a1 : %d\n", item::getint (d1)); item::define (d1, d1, 123); // Frame 123 of a1.indd wlog ("", "Neu : %d\n", item::getint (d2)); item::define (d2, d2, 456); // Frame 456 of Unbenannt-1
return 0; }

Die UID 0 eines ItemRef bezeichnet IMMER ein Dokument. Das Beispiel erzeugt eine ItemRef des Dokumentes des aktuellen Skriptrahmens und zeigt den Dokumentnamen.

int main ()
{
    ItemRef			docRef		= item::alloc ();
    char			docName		[4000];
item::define (docRef, gFrame, 0); document::name (docName, docRef); showmessage (docName);
return 0; }

v3.3 R2851, 12.04.2012

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

static int document::is_valid(ItemRef docRef)

Zeigt die Referenz auf ein gültiges Dokument?

Name Typ Default Beschreibung
Return int   1 : Die Referenz zeigt auf ein gültiges und geöffnetes Dokument.

0 : Die Referenz ist ungültig und darf nicht als Dokument verwendet werden.
docRef ItemRef - Beliebige Referenz oder 0

Version 1.4.1 R383, 28. Juni 2007

priint:comet InDesign® Plug-Ins, Illustrator

item::defined

static ItemRef document::current()

Ermittle das InDesign® Dokument des Skriptes. Die Variable darf nicht gelöscht werden..

Name Typ Default Beschreibung
Return ItemRef   Aktuelles InDesign®-Dokument des Skriptes oder 0.

Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins, Illustrator

document::get_front
document::select

static ItemRef document::get_front()

Ermittle das aktive Dokument.

Name Typ Default Beschreibung
Return ItemRef   Referenz auf das aktuelle Frontdokument.
useStatic int 0 Soll für die ermittelte Referenz eine statische Variabale verwendet werden oder soll die Referenz automatisch neu allokiert werden?

0 : Rückgabe neu allokieren. In diesem Fall muß der Rückgabewert mit item::release wieder gleöscht werden!

1 : Interne statische Variable als Rückgabe verwenden. Der Inhalt wird beim nächsten Aufruf der Funktion überschrieben!

Parameter useStatic seit v5.0 R36580, 21. April 2025 Version 2.1 R1800, 15. März 2010

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

document::current
document::select
comet.document.getFront

static int document::count()

Wieviele Dokumente sind aktuell geöffnet?

Name Typ Default Beschreibung
Return int   Anzahl der geöffneten Dokumente.

v3.3 R2851, 12. Apr 2012

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

comet.document.getOpen

static char* document::get_nth(int n, ItemRef outRef = 0)

Pfad bzw. Name des n-then geöffneten Dokumentes.

Name Typ Default Beschreibung
Return char*   Pfad der Dokumentdatei oder Fenstertitel bei neuen Dokumenten

Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen.

n int - 0 basierter Index des Dokumentes
outRef ItemRef 0 Bei erfolgreicher Ausführung der Funktion enthält die Variable eine Referenz auf das geöffnete Dokkument

0 : Ignorieren>
sonst: Mit item::alloc erzeugtes Referenzobjekt

Hole die Anzahl aller geöffneten Dokumente und schreibe in einer Schleife alle Pfade der geöffneten Dokumente ins Logfile.

int main ()
{
    int		i;
    int		docs	= document::count ();
for (i = 0; i < docs; i++) { wlog ("", "%d : '%s'\n", i+1, document::get_nth (i)); }
return 0; }

v3.3 R2851, 12. Apr 2012
Parameter outRef since v4.1.8 R27542, 22. Sept. 2020

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

comet.document.getOpen

static int document::select(ItemRef docRef)

Setze das aktuelle Frontdokument. Da die meisten Skriptfunktionen auf dem aktuellen Frontdokument arbeiten, können Sie mit diesem Aufruf also bewirken, dass Ihr Skript die Bearbeitung in einem anderen Dokument forstsetzt.

Der Aufruf funktioniert auch unter InDesign® Server.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)

Version 2.1 R1800, 15. March 2010
InDesign® Server-Unterstützung seit v4.1.8 R27552, 23. Sep. 2020
comet_pdf-Unterstützung seit v4.3 R34040, 14. Dez 2023

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

document::current
document::get_front
document::count
document::get_nth
document::select_by_name, app.comet.documentOpen
comet.CDocument.setFront

static int document::select_by_name(char* pp)

Setze das aktuelle Frontdokument. Die meisten Skriptfunktionen arbeiten auf dem aktuellen Frontdokument. Mit dem Aufruf können Sie also bewirken, dass ihr Skript die Bearbeitung in einem anderen Dokument forstsetzt. Die Auswahl des Dokumentes erfolgt über seinen Namen bzw. den Dateipfad.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
pp String oder char* - Name, Fenstertitel oder vollständiger Pfad der Datei. Bei ungesicherten neuen Dokumenten werden nur Dokumentname und Fenstertitel verwendet. Es gilt:

Angabe ohne Pfadtrenner : Suche nur nach dem Namen oder Fenstertitel

Angabe mit Pfadtrenner : Suche nach dem vollständigen Pfad

v4.1.8 R27542, 22. Sep. 2020
Suche nach Fenstertitel seit v4.3 R34250

priint:comet InDesign® Plug-Ins

document::current
document::get_front
document::count
document::get_nth
document::select,, app.comet.documentOpen

static ItemRef document::create(
  float width = -1.0,
  float height = -1.0,
  int pages = 1,
  int pagesPerSpread = 1,
  float scale = 1.0,
  int left = 0,
  int top = 0,
  int right = 0,
  int bottom = 0,
  int columns = 1,
  float gutter = 12.0,
  int direction = 0,
  int restartPageNums = -1,
  int bindingDirection = -1,
  int intent = -1,
  float ml = -1.0,
  float mt = -1.0,
  float mr = -1.0,
  float mb = -1.0,
  int startPageNum = -1)

Erzeuge ein neues leeres Dokument.

Name Typ Default Beschreibung
Return ItemRef   Referenz auf das neu erzeugte Dokument. Die Referenz wird durch den Aufruf neu allokiert und muß mit item::release wieder gelöscht werden!
width float -1.0 Seitenbreite in Punkten

≤ 0.0 : Seitenbreite des aktuellen Dokumentes, wenn kein Dokument geöffnet ist 595.276pt (DIN A4).
height float -1.0 Seitenhöhe in Punkten

≤ 0.0 : Seitenhöhe des aktuellen Dokumentes, wenn kein Dokument geöffnet ist 841.89 (DIN A4).
pages int 1 Anzahl der Seiten

≤ 0 : Seitenzahl des aktuellen Dokumentes, wenn kein Dokument geöffnet ist 1.
pagesPerSpread int 1 Seiten pro Druckbogen

≤ 0 : Seiten pro Druckbogen des aktuellen Dokumentes, wenn kein Dokument geöffnet ist 2.
scale float 1.0 Skalierung im Dokumentfenster, 1.0 entspricht 100%
left, top, right, bottom int alle 0 Position und -größe des Dokumentfensters in Pixeln (ACHTUNG : Die Angaben sind Ganzzahlen (int)!). Die Angaben werden nur angewendet, wenn alle vier Werte angegeben sind und left < right und top < bottom.
columns int 1 Anzahl der Spalten auf den Seiten.

≤ 0 : Anzahl der Spalten der ersten Seite des aktuellen Dokumentes, wenn kein Dokument geöffnet ist 1.
gutter float 12.0 Spaltenabstand in Punkten. Der Parameter wird nur ausgewertet wenn die Spaltenzahl größer 0 ist.

≤ 0 : Spaltenabstand in der ersten Seite aktuellen Dokumentes, wenn kein Dokument geöffnet ist 12.0.
direction int 1 Richtung der Dokumentspalten. Der Parameter wird nur ausgewertet wenn die Spaltenzahl größer 0 ist.

0 : Horizontal
1 : Vertikal
2 : Roman
3 : CJK
< 0 : Spaltenrichtung der ersten Seite des aktuellen Dokumentes, wenn kein Dokument geöffnet ist 1 (vertikal).
restartPageNums int -1 Seitennummerierung neu beginnen? Die Angabe wird nur bei der Verwendeung des Dokumentes in Büchern (siehe book) verwendet.

-2 : Einstellung des aktuellen Dokumentes, wenn kein Dokument geöffnet ist ignorieren.
-1 : Ignorieren
0 : Nein
1 : Ja
bindingDirection int -1 Seitenbindung.

-2 : Einstellung des aktuellen Dokumentes, wenn kein Dokument geöffnet ist ignorieren.
-1 : Ignorieren
0 : Links nach rechts
1 : Rechts nach links
2 : Standardeinstellung von InDesign®
intent int -1 Zielmedium. Von comet_pdf wird die Angabe ignoriert.

-2 : Einstellung des aktuellen Dokumentes, wenn kein Dokument geöffnet ist ignorieren.
-1 : ignorieren
0 : Druck
1 : Web
2 : Mobil
ml, mt, mr, mb float alle -1.0 Seitenränder in Punkten
  • links (innen bei mehrseitigen Spreads)
  • oben
  • rechts (außen bei mehrseitigen Spreads)
  • unten
-2.0 : Einstellung des aktuellen Dokumentes, wenn kein Dokument geöffnet ist 36.0.

-1.0 : Standard 36.0

> -1.0 und < 0.0 : Prozentanteil der Seite (0.1 entspricht 10%)

≥ 0.0 : Absolutwert in Punkten
startPageNum int -1 Mit welcher Sewitennummer soll das Dokument beginnen?

-2 : Einstellung des aktuellen Dokumentes, wenn kein Dokument geöffnet ist ignorieren.
-1 : Ignorieren
> 0 : Seitennummer (1-basiert)
#include "internal/types.h"

Das Skript erzeugt ein neues leeres Dokument in der Größe des aktuellen Dokumentes und fügt in dieses Dokument zwei Rahmen ein. Danach wird das Dokument als abc.(indd | w2ml) auf Ihren Desktop gesichert. Das Skript funktioniert für InDesign und comet_pdf.

#include "internal/types.h"
#include "internal/text.h"
int main () { ItemRef docRef; ItemRef fr = item::alloc ();
docRef = document::create (   -1.0, -1.0, // size   -1, -1, // pages, pagesPerSpread   1.0, 0, 0, 0, 0, // window   1, 12.0, 1, // columns   -1, // restart numbering   -1, // binding   -1, // intent   100.0, -2.0, -2.0, -2.0, // margins   -2 // start page num );
document::select (docRef); frame::create (fr, kRectangle, 0.0, 0.0, 200.0, 50.0, 1); frame::color_rgb (fr, 255, 128, 0); frame::replace (fr, "Please work!");
frame::create2 (fr, kRectangle, 0.0, 0.0, 100.0, 100.0, 1); frame::color_rgb (fr, 0, 128, 0);
document::saveas (docRef, "$DESKTOP/abc");
item::release (docRef); item::release (fr);
return 0; }

Parameter columns, ... mb ab Comet 3.1 R2187, 26.10.2010
Parameter startPageNum seit v4.3 R34040, 14. Dez 2024
Überarbeitung der Defaultwerte v4.3 R34040, 14. Dez 2024

priint:comet InDesign® Plug-Ins, comet_pdf

comet.document.create

static ItemRef document::open(
  char* path,
  float scale = 1.0,
  int left = 0,
  int top = 0,
  int right = 0,
  int bottom = 0,
  int visibility = 1,
  int appendToRecent = 1,
  int uiFlags = kSuppressUI,
  int parenting = -1)

Öffne ein InDesign®-Dokument. Unter InDesign® Server werden die Parameter zur Sichtbarkeit (ab scale) ignoriert.

Name Typ Default Beschreibung
Return ItemRef   Referenz auf das neu erzeugte Dokument, mit item::release zu löschen
path String oder char* - Vollständiger Pfad der zu öffnenden Datei.

In comet_pdf wird die Endung indd automatisch durch w2ml ersetzt.
scale float 1.0 Aktuelle Skalierung
left int 0 Fensterposition
top int 0 Fensterposition
right int 0 Fensterposition
bottom int 0 Fensterposition
visibility int 1 Soll das Dokument in einem Fenster gezeigt werden?

0 : Nein, nur im Hintergrund öffnen.
1 : Ja. Das Dokument wird zum neuen Vordergrund. Skriptanweisungen, die auf dem Frontdokument arbeiten, verwenden dann dieses Dokument. Ab v4.1 R22423 gilt dieses Verhalten auch für InDesign® Server.
appendToRecent int 1 Soll die Datei in das Menü Zuletzt verwendete Datei augenommen werden?

0 : Nein
1 : Ja
uiFlags int kSuppressUI Welche Dialoge sollen bei Bedarf gezeigt werden?
kSuppressUI : Alle Dialoge und Progressbalken unterdrücken
kMinimalUI : Nur die nötigsten Dialoge zeigen
kFullUI : Alle Dialoge und Progressbalken zeigen
parenting int -1 Wie und wo soll das neue Dokumentfenster erscheinen? InDesign® bietet dazu die folgenden (undokumentierten) Werte:

-1 : Ignoriere die Angabe
0 : InDesign® Default
1 : NewFloatingDock
2 : NewFloatingDock_ObscureRelative
3 : NewFloatingDock_DontObscureRelative
4 : AsSiblingOfRelative
5 : InNewTabGroupFromRelative
6 : InNewPaneFromRelative
7 : AsSiblingToLeftOfRelative
8 : AsRightmostChildOfParent
#include "internal/types.h"

Öffne ein Dokument. Warnugen über fehlende Verknüpfugen, Schriften, Farbprofile werden beim Öffnen uterdrückt.

#include "internal/types.h"
int main () { ItemRef doc = document::open ("$DESKTOP/paul.indd",   1.0,   0, 0, 0, 0,   1,   1,   kSuppressUI);
return 0; }

Öffne ein Dokument.

#include "internal/types.h"
int main () { ItemRef doc = document::open ("$DESKTOP/paul.indd",   1.0,   0, 0, 0, 0,   1,   1,   kFullUI);
return 0; }

appendToRecent seit Version 2.1 R1650, 11.11.2009
Parameter uiFlags seit Version 2.1 R1820, 30.03.2010
Parameter parenting seit v4.0.5 R16000, 7. Feb 2010

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

comet.document.open

static ItemRef document::open_copy(
  char* path,
  float scale = 1.0,
  int left = 0,
  int top = 0,
  int right = 0,
  int bottom = 0,
  int visibility = 1,
  int appendToRecent = 1,
  int uiFlags = kSuppressUI)

Öffne eine Kopie eines InDesign® -Dokumentes. Unter InDesign® Server werden die Parameter zur Sichtbarkeit (ab scale) ignoriert.

Name Typ Default Beschreibung
Return ItemRef   Referenz auf das neu erzeugte Dokument, mit item::release zu löschen
path String oder char* - Vollständiger Pfad der zu öffnenden Datei.
scale float 1.0 Aktuelle Skalierung
left int 0 Fensterposition
top int 0 Fensterposition
right int 0 Fensterposition
bottom int 0 Fensterposition
visibility int 1 Soll das Dokument in einem Fenster gezeigt werden?

0 : Nein, nur im Hintergrund öffnen.
1 : Ja. Das Dokument wird zum neuen Frontdocument. Skriptanweisungen, die auf dem Frontdokument arbeiten, verwenden dann dieses Dokument.
appendToRecent int 1 Soll die Datei in das Menü Zuletzt verwendete Datei augenommen werden?

0 : Nein
1 : Ja
uiFlags int kSuppressUI Welche Dialoge sollen bei Bedarf gezeigt werden?
kSuppressUI : Alle Dialoge und Progressbalken unterdrücken
kMinimalUI : Nur die nötigsten Dialoge zeigen
kFullUI : Alle Dialoge und Progressbalken zeigen
parenting int -1 Wie und wo soll das neue Dokumentfenster erscheinen? InDesign® bietet dazu die folgenden (undokumentierten) Werte:

-1 : Ignoriere die Angabe
0 : InDesign® Default
1 : NewFloatingDock
2 : NewFloatingDock_ObscureRelative
3 : NewFloatingDock_DontObscureRelative
4 : AsSiblingOfRelative
5 : InNewTabGroupFromRelative
6 : InNewPaneFromRelative
7 : AsSiblingToLeftOfRelative
8 : AsRightmostChildOfParent
#include "internal/types.h"

appendToRecent seit Version 3.1 R1650, 11.11.2009
Parameter uiFlags seit Version 2.1 R1820, 30.03.2010
Parameter parenting seit v4.0.5 R16000, 7. Feb 2010

priint:comet InDesign® Plug-Ins, comet_pdf

static int document::set_display_name(ItemRef doc, char* name)

Setzt den Anzeigenamen des Dokumentes. Setzt den angezeigten Namen des Dokumentes. Dieser Name wird in InDesign® als Fenstertitel des Dokumentes verwendet und als Vorschlag für den Dateinamen bei Datei -> Speichern unter.

Der Anzeigename ist NICHT der Dateiname. Änderungen des Display-Namens werden nicht ins Dokument übernommen und gehen beim Schließen des Dokumentes verloren.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
doc ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
name String oder char* - Neuer Anzeigename für das Dokumentfenster des Dokumentes

Setze den Namen des aktuellen Dokumentes

char* newName = "HelloWorld";
document::set_name(gDocument, newName);

@since Version 4.0.5 R8202, 17. June 2015

priint:comet InDesign® Plug-Ins

get_display_name
comet.CDocument.setDisplayName

static char* document::get_display_name(char* result, ItemRef docRef = 0)

Titel des Dokumentes im Dokumentfenster. Im Standardfall wird als Fenstertitel der Dateiname (oder Unbenannt-N bei neuen Dokumenten) verwendet. Wurde der Fenstertitel mit document::set_display_name geändert, liefert die Funktion den so geänderten Fenstertitel.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter result)   Fenstertitel des Dokumentes

Zur besseren Verwendung der Funktion wird result als Rückgabewert verwendet.
result String oder char* 0 Reservierter Speicher für das Ergebnis

0 : [seit v4.3 R33094] Rückgabe in statischer r/o Variable der Script Engine. Die Variable wird darf nicht geändert werden. Beim nächsten Aufruf der Funktion wird der Inhalt überschrieben!
docRef ItemRef 0 Angabe des Dokumentes

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

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

v4.1.8 R27600, 7. Okt. 2020

priint:comet InDesign® Plug-Ins, comet_pdf

document::set_display_name
document::name
comet.CDocument.getDisplayName

static int document::is_opened(char* path, ItemRef docRef = 0)

Gibt an, ob ein Dokument geöffnet ist oder nicht.

Name Typ Default Beschreibung
Return int   1, wenn das Dokument geöffnet ist, 0 andernfalls
path String oder char* - Vollständiger Pfad der Datei.
docRef ItemRef 0 Enthält nach erfolgreicher Ausführung die Referenz auf das geöffnete Dokument. Die Variable muss mit item::alloc zuvor allokiert worden sein}

Das Skript prüft, ob ein Dokument geöffnet ist, wenn nicht, wird es geöffnet. Beachten Sie, dass die Dokumentreferenz vor document::open gelöscht wird, dieser Aufruf legt sie neu an.

ItemRef		docRef		= item::alloc ();
int 		wasOpened 	= document::is_opened (path, docRef);
if (!wasOpened) { item::release (docRef); docRef = document::open (path, docRef); }
:
if (wasOpened) document::close(docRef);

docRef seit Version 2.1 R1800, 15. März 2010

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

static int document::can_save(ItemRef docRef = 0)

Kann das gegebene Dokument gesichert werden? Die Funktion prüft, ob ein Dokument eine existierende Datei zeigt.

Geöffnete und unveränderte Dokumente der aktuellen InDesign-Version können gesichert werden!

Name Typ Default Beschreibung
Return int   1 : Geöffnetes Dokument der aktuellen InDesign-Version. Das Dokument kann zum Zeitpunkt der Abfrage unverändert sein!

0 : Das Dokument zeigt eine der folgenden Dateien:
  • Neues ungesichertes Dokument
  • Konvertiertes ungesichertes Dokument einer älteren InDesign-Version
  • Geöffnete und ungesicherte IDML-Datei
  • Geöffnete und ungesicherte W2ML-Datei
docRef ItemRef 0 Verweis auf ein geöffnetes Dokument

0 : Skriptdokument bzw. aktuelles Front-Dokument, wenn das Skript kein Dokument hat.

Prüfe, ob das aktuelle Dokument gesichert werden kann.

int main ()
{
    if (document::can_save ()) wlog ("", "Das aktuelle Dokument kann gesichert werden.\n");
    else wlog ("", "Das aktuelle Dokument hat keinen Dateipfad.\n");
return 0; }

v5.0, R36580, 21. April 2025
comet.CDocument.canSave

static int document::close(
  ItemRef docRef,
  int saveOnClose = 1,
  int uiFlags = kSuppressUI,
  int allowCancel = 1,
  int mode = kSchedule)

Schließe ein Dokument. Dokumente können beim Schließen eine Vielzahl von Aktionen ausführen. InDesign® schließt Dokumente deshalb immer erst in einer Ruhephase. Mit kProcess können Sie erzwingen, dass Dokumente sofort geschlossen werden - innerhalb eines laufenden Prozesses, z.B. beim Produktaufbau, kann das zum Absturz von InDesign® führen.

[Ab v4.3 R35200] Paletten- und Front Row-Skripte können in eimem Schritt rückgängig gemacht werden. Weil Sichern oder Schließen des aktuellen Skript-Dokumentes die 'Aufzeichnung' der Änderungen beenden würde, lehnt InDesign das Sichern oder Schließen des aktuellen Dokumenten mitunter ab (Fehler 3590). Nach dem Sichern oder Schließen eines Doumentesist ist aber sowieso kein Undo mehr möglich. Sie können in diesen also Fällen auch gut auf die 'Aufzeichnung' verzichten. Schreiben Sie dazu an beliebiger Stelle in einen Kommentar den Hinweis -- Disable Undo -- (in genau dieser Schreibweise!) in ihr Skript.

cScript und Javascript

// -- Disable Undo --

Python

# -- Disable Undo --

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef - Dokument, das geschlossen werden soll

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
saveOnClose int 1 Soll das Dokument vor dem Schließen gesichert werden?
0 : Nicht sichern, Änderungen gehen verloren
1 : Sichern
uiFlags int kSuppressUI Welche Dialoge sollen bei Bedarf gezeigt werden?
kSuppressUI : Alle Dialoge und Progressbalken unterdrücken
kMinimalUI : Nur die nötigsten Dialoge zeigen
kFullUI : Alle Dialoge und Progressbalken zeigen
allowCancel int 1 Darf das Schließen abgebrochen werden? Nicht wirksam bei uiFlags kSuppressUI und bei mode kImmediate
0 : Nicht abbrechen
1 : Abbrechen erlaubt
mode int kSchedule Soll die Datei sofort oder normal geschlossen werden?

kSchedule : Datei normal schließen. Die Datei wird geschlossen, wenn InDesign® in den Ruhezustand kommt.

kProcess : Jetzt schließen. Das sofortige Schließen von Dokumenten kann zu Problemen von InDesign® führen!

kImmediate : seit v4.1 R24666 Sofort schließen. Das ist ein Versuch, die InDesign® -Probleme bei kProcess zu umgehen. Wir können leider nicht versprechen, dass das in jedem Fall funktionieren wird - aber einen Versuch ist es wert.
#include "internal/types.h"

v3.4
kImmediate seit v4.1 R24666, 11. Jan 2019

priint:comet InDesign® Plug-Ins, Illustrator

comet.CDocument.close

static int document::close_by_name(
  char* docPath,
  int saveOnClose = 1,
  int uiFlags = kSuppressUI,
  int allowCancel = 1,
  int mode = kSchedule)

Schließe ein Dokument über den Dokumentpfad. Dokumente können beim Schließen eine Vielzahl von Aktionen ausführen. InDesign® schließt Dokumente deshalb immer erst in einer Ruhephase. Mit kProcess können Sie erzwingen, dass Dokumente sofort geschlossen werden - innerhalb eines laufenden Prozesses, z.B. beim Produktaufbau, kann das zum Absturz von InDesign® führen.

[Ab v4.3 R35200] Paletten- und Front Row-Skripte können in eimem Schritt rückgängig gemacht werden. Weil Sichern oder Schließen des aktuellen Skript-Dokumentes die 'Aufzeichnung' der Änderungen beenden würde, lehnt InDesign das Sichern oder Schließen des aktuellen Dokumenten mitunter ab (Fehler 3590). Nach dem Sichern oder Schließen eines Doumentesist ist aber sowieso kein Undo mehr möglich. Sie können in diesen also Fällen auch gut auf die 'Aufzeichnung' verzichten. Schreiben Sie dazu an beliebiger Stelle in einen Kommentar den Hinweis -- Disable Undo -- (in genau dieser Schreibweise!) in ihr Skript.

cScript und Javascript

// -- Disable Undo --

Python

# -- Disable Undo --

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docPath String oder char* - Vollständiger Pfad des Dokumentes, das geschlossen werden soll.
saveOnClose int 1 Soll das Dokument vor dem Schließen gesichert werden?
0 : Nicht sichern, Änderungen gehen verloren
1 : Sichern
uiFlags int kSuppressUI Welche Dialoge sollen bei Bedarf gezeigt werden?
kSuppressUI : Alle Dialoge und Progressbalken unterdrücken
kMinimalUI : Nur die nötigsten Dialoge zeigen
kFullUI : Alle Dialoge und Progressbalken zeigen
allowCancel int 1 Darf das Schließen abgebrochen werden? Nicht wirksam bei uiFlags kSuppressUI und bei mode kImmediate
0 : Nicht abbrechen
1 : Abbrechen erlaubt
mode int kSchedule Soll die Datei sofort oder normal geschlossen werden?

kSchedule : Datei normal schließen. Die Datei wird geschlossen, wenn InDesign® in den Ruhezustand kommt.

kProcess : Sofort schließen. Das sofortige Schließen von Dokumenten kann zu Problemen von InDesign® führen!

kImmediate : seit v4.1 R24666 Sofort schließen. Das ist ein Versuch, die InDesign® -Probleme bei kProcess zu umgehen. Wir können leider nicht versprechen, dass das in jedem Fall funktionieren wird - aber einen Versuch ist es wert.
#include "internal/types.h"

v3.4
kImmediate seit v4.1 R24666, 11. Jan 2019

priint:comet InDesign® Plug-Ins

static int document::save(
  ItemRef docRef,
  int uiFlags = kSuppressUI,
  int millisec = 0,
  int repeat = 0)

Sichere ein Dokument.

InDesign® (alle Versionen von CS bis CS5.5, ...) verhält sich beim Sichern etwas unerwartet. Sie können dieses Verhalten leicht nachstellen : Tippen Sie einige Zeichen in einen nicht zu kurzen Text und ganz schnell im Anschluss daran klicken Sie Command-S für Sichern. Das Dokument wird gesichert - nach kurzer Zeit wird es aber im Fenstertitel wieder als ungesichert dargestellt. Wenn Sie das Fenster schließen wollen, müssen Sie erneut sichern.

Genau dieses Verhalten erhalten Sie aber, wenn Sie in einem Skript erst Text ändern oder einfügen und dann das Dokument sichern wollen : Das Dokument wird zwar gesichert - erscheint dem Benutzer aber weiter als ungesichert. Ein ziemlich misslicher Fall. Sie können das Sichern des Dokumentes deshalb mit der Angabe millisec verzögern lassen. Das Dokument wird dann zur nächsten Idle-Zeit nach der angegebenen Zeitspannne gesichert. Da InDesign® das Dokument nach dem Sichern aber zu einem unbekannten Zeitpunkt in den ungesicherten Modus bringt (das scheint von der Dokumentgröße und der Länge der Texte abzuhängen), können Sie das mit repeat auch mehrmals machen, dann wird nach millisec erneut gesichert. Recht erfolgreich waren unsere Tests mit 300 Millisekunden und 5-8 Wiederholungen.

Wenn Sie das Dokument verzögert sichern, ist es nach dem Aufruf der Funktion natürlich noch ungesichert!

[Ab v4.3 R35200] Paletten- und Front Row-Skripte können in eimem Schritt rückgängig gemacht werden. Weil Sichern oder Schließen des aktuellen Skript-Dokumentes die 'Aufzeichnung' der Änderungen beenden würde, lehnt InDesign das Sichern oder Schließen des aktuellen Dokumenten mitunter ab (Fehler 3590). Nach dem Sichern oder Schließen eines Doumentesist ist aber sowieso kein Undo mehr möglich. Sie können in diesen also Fällen auch gut auf die 'Aufzeichnung' verzichten. Schreiben Sie dazu an beliebiger Stelle in einen Kommentar den Hinweis -- Disable Undo -- (in genau dieser Schreibweise!) in ihr Skript.

cScript und Javascript

// -- Disable Undo --

Python

# -- Disable Undo --

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef - Dokument, das gesichert werden soll

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
uiFlags int kSuppressUI Welche Dialoge sollen bei Bedarf gezeigt werden?
kSuppressUI : Alle Dialoge und Progressbalken unterdrücken
kMinimalUI : Nur die nötigsten Dialoge zeigen
kFullUI : Alle Dialoge und Progressbalken zeigen

Von comet_pdf & Illustrator wird der Parameter ignoriert.
millisec int 0 Verzögert sichern : Zeit in Millisekunden nach dem Start der nächsten Idle-Phase

0 : Ignorieren (also sofort sichern)
>0 : Zeitspanne nach Beginn der Idle-Time
<0 : Das Dokument wird automatisch in diesen Intervallen gesichert

Von comet_pdf & Illustrator wird der Parameter ignoriert.
repeat int 0 (nur wenn millisec > 0) Anzahl der Versuche, zu sichern

Von comet_pdf & Illustrator wird der Parameter ignoriert.
#include "internal/types.h"

Parameter millisec und repeat ab Version 3.1 R1840, 27. April 2010

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

comet.CDocument.save

static int document::saveas(
  ItemRef docRef,
  char* path,
  int uiFlags = kSuppressUI)

Sichere ein Dokument unter einem anderen Namen. Das InDesign®-Fenster, das das angegebene Dokument anzeigt wird geändert und zeigt nach dem Aufruf die neue Datei an!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef - Dokument, das gesichert werden soll

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
path String oder char* - Vollständiger Pfad des neuen Dokumentes. Die Dateiendung wird von InDesign und comet_pdf automatisch ersetzt/angefügt. Existiert der Zielordner nicht, wird er automatisch angelegt.

Illustrator: Um eine EPS zu erzeugen, verwenden Sie die Endung ".eps".
uiFlags int kSuppressUI Welche Dialoge sollen bei Bedarf gezeigt werden?
kSuppressUI : Alle Dialoge und Progressbalken unterdrücken
kMinimalUI : Nur die nötigsten Dialoge zeigen
kFullUI : Alle Dialoge und Progressbalken zeigen

Von comet_pdf und Illustrator wird der Parameter ignoriert.
#include "internal/types.h"

Sichern ass EPS für Illustrator ab v4.2 R29182
Automatisches Ersetzen/Anfügen der passenden Dateieindung (indd bzw. w2ml) seit v4.3 R34040, 14. Dez 2023 v2.0

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

comet.CDocument.saveAs

static int document::revert(ItemRef docRef = 0)

Zurück zur letzten gesicherten Version des Dokumentes.

Aufrufe der Funktion können das Dokument schließen und neu öffnen. Verweise wie gFrame, Tabellenreferencen, etc. zeigen nach dem Aufruf auf nicht mehr existierende Objekte und können bei Verwendung zum Absturz von InDesign® führen!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

1280 : Dokument neu oder nicht verändert

Unter comet_pdf hat der Befehl keine Wirkung und gibt, wenn das Dokument gültig ist, 0 zurück.
docRef ItemRef 0 Angabe des Dokumentes

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

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

v4.0.5 R10000, 5. Feb 2015

priint:comet InDesign® Plug-Ins, comet_pdf

static char* document::name(char* result, ItemRef docRef = 0)

Dateiname des aktuellen Dokumentes. Als Eingabe wird ein String erwartet, der über genügend reservierten Speicher (mind. 1024) verfügt, damit das Ergebnis übernommen werden kann. Die Funktion liefert bei neuen ungesicherten Dokumenten kein Ergebnis.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter result)   Zur besseren Verwendung der Funktion wird result als Rückgabewert verwendet.
result String oder char* - Reservierter Speicher für das Ergebnis

0 : [seit v4.3 R33094] Rückgabe in statischer r/o Variable der Script Engine.
docRef ItemRef 0 Angabe des Dokumentes

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

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

Hole den Namen des aktuellen Dokumentes

char		name[256];
showmessage (document::name (name));

Der Parameter doc ist gültig ab Version 1.1.7, Januar 2005

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

document::path
document::path9
document::pathX
document::folder
comet.CDocument.getName

static char* document::path9(char* p, ItemRef docRef = 0)

Dateipfad inklusive Dateinamen des aktuellen Dokumentes. Am Mac wird das Ergebnis in der Schreibweise von MacOS 9 mit Laufwerksnamen und ':' als Pfadtrenner zurückgebenen.

Ja! Man sollte es nicht glauben: Das letzte Mac OS 9 gab es vor über 20 Jahren. Aber das InDesign-Menü 'Zuletzt verwendete Dateien' und die Palette 'Verknüpfungen' verwenden ebenso wie (leider, leider) auch das InDesign-SDK noch Mac OS 9 Pfade.

Als Eingabe wird ein String erwartet, der über genügend reservierten Speicher (mind. 1024) verfügt, damit das Ergebnis übernommen werden kann. Die Funktion liefert bei neuen ungesicherten Dokumenten kein Ergebnis.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter p)   Vollständiger MacOS 9 Pfad des aktuellen Dokumentes, Zeiger auf p
p String oder char* - Reservierter Speicher für das Ergebnis

0 : [seit v4.3 R33094] Rückgabe in statischer r/o Variable der Script Engine. Die Variable wird darf nicht geändert werden. Beim nächsten Aufruf der Funktion wird der Inhalt überschrieben!
docRef ItemRef 0 Angabe des Dokumentes

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

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

Hole den Namen des aktuellen Dokumentes

char		p[256];
showmessage (document::path9 (p));

Der Parameter doc ist gültig ab Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins, comet_pdf

document::name
document::path
document::pathX
document::folder

static char* document::path(char* p, ItemRef docRef = 0)

Dateipfad inklusive Dateinamen des aktuellen Dokumentes. Als Eingabe wird ein String erwartet, der über genügend reservierten Speicher (mind. 1024) verfügt, damit das Ergebnis übernommen werden kann. Die Funktion liefert bei neuen ungesicherten Dokumenten kein Ergebnis.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter p)   Vollständiger Pfad des aktuellen Dokumentes, Zeiger auf p
p String oder char* - Reservierter Speicher für das Ergebnis

0 : [seit v4.3 R33094] Rückgabe in statischer r/o Variable der Script Engine. Die Variable wird darf nicht geändert werden. Beim nächsten Aufruf der Funktion wird der Inhalt überschrieben!
docRef ItemRef 0 Angabe des Dokumentes

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

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

Hole den Pfad des aktuellen Dokumentes

char		p[1024];
showmessage (document::path (p));

Der Parameter doc ist gültig ab Version 1.1.7, Januar 2005

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

document::name
document::path9
document::pathX
document::folder
comet.CDocument.getPath

static char* document::pathX(char* p, ItemRef docRef = 0)

Dateipfad inklusive Dateinamen des aktuellen Dokumentes. Im Pfad sind alle Windows-Pfadtrenner (\) ersetzt durch /. Dieses Format sollte immer dann verwendet werden, wenn die Pfade zur internen Beschreibung (xmlquery, soap, cscript) verwendet werden. Als Eingabe wird ein String erwartet, der über genügend reservierten Speicher (mind. 1024) verfügt, damit das Ergebnis übernommen werden kann. Die Funktion liefert bei neuen ungesicherten Dokumenten kein Ergebnis.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter p)   Vollständiger Pfad des aktuellen Dokumentes, Zeiger auf p
p String oder char* - Reservierter Speicher für das Ergebnis

0 : [seit v4.3 R33094] Rückgabe in statischer r/o Variable der Script Engine. Die Variable wird darf nicht geändert werden. Beim nächsten Aufruf der Funktion wird der Inhalt überschrieben!
docRef ItemRef 0 Angabe des Dokumentes

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

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

Hole den OS X-Pfad des aktuellen Dokumentes

char		p[1024];
showmessage (document::pathX (p));

Der Parameter doc ist gültig ab Version 1.1.7, Januar 2005

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

document::name
document::path
document::path9
document::folder

static char* document::folder(char* p, ItemRef docRef = 0)

Ordner des aktuellen Dokumentes ohne Pfadbegrenzer (: oder /) am Ende. Als Eingabe wird ein String erwartet, der über genügend reservierten Speicher (mind. 1024) verfügt, damit das Ergebnis übernommen werden kann. Die Funktion liefert bei neuen ungesicherten Dokumenten kein Ergebnis.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter p)   Vollständiger Pfad des aktuellen Dokumentes, Zeiger auf p
p String oder char* - Reservierter Speicher für das Ergebnis

0 : [seit v4.3 R33094] Rückgabe in statischer r/o Variable der Script Engine. Die Variable wird darf nicht geändert werden. Beim nächsten Aufruf der Funktion wird der Inhalt überschrieben!
docRef ItemRef 0 Angabe des Dokumentes

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

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

Hole den Ordnerpfad des aktuellen Dokumentes

char		p[1024];
showmessage (document::folder (p));

Der Parameter doc ist gültig ab Version 1.1.7, Januar 2005

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

document::name
document::path
document::path9
document::folder

static char* (char* p, ItemRef docRef = 0)

DEPRECATED! Bitte verwenden Sie statt dessen die Funktion document::path9 und entfernen den Dokumentnamen vom Ergebnis.

Bitte verwenden Sie statt dessen die Funktion document::path9 und entfernen den Dokumentnamen vom Ergebnis.

static int document::pages(ItemRef doc = 0)

Anzahl der Seiten im Dokument.

Name Typ Default Beschreibung
Return int   Seitenanzahl des gegebenen Dokumentes
docRef ItemRef 0 Angabe des Dokumentes

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

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

Wieviel Seiten hat das aktuelle Dokument?

int p = document::pages ();

Der Parameter doc ist gültig ab Version 1.1.7, Januar 2005 v1.2

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

page::get
page::get_str
comet.CDocument.getPages

static int document::page(ItemRef docRef = 0)

Aktuelle Seite des eines gegebenen Dokumentes.

Um eine Seite zur aktuellen Seite zu machen, müssen Sie mindestens einmal in die Seitenfläche klicken. Ein Rahmen muß dafür nicht ausgewählt sein, aber einfaches Scrollen zur Seitenansicht reicht nicht! In InDesign® Server und comet_pdf ist die aktuelle Dokumentseite undefiniert!

Name Typ Default Beschreibung
Return int   0 : im Fehlerfall
sonst : 1-basiert aktuelle Seite des gegebenen Dokumentes

Unter InDesign® Server und comet_pdf ist die aktuelle Seite nicht definiert. Die Funktion gibt hier immer den Wert 0 zurück.

docRef ItemRef 0 Angabe des Dokumentes

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

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

Hole die Seitennummer der aktuell ausgewählten Seite den aktuellen Dokumentes.

int p = document::page ();

Der Parameter doc ist gültig ab Version 1.1.7, Januar 2005
... und wieder entfernt in Version 1.4.2 R 612 (11. März 2008)

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

page::get
page::get_str
comet.CDocument.getCurrentPage

static char* document::plugin(char* p)

Name des skriptausführenden Plugins.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter p)   Pluginname (XMLLink)
p String oder char* - Reservierter Speicher für das Ergebnis

Hole den Namen des auführenden Plugins.

char		p[1024];
showmessage (document::plugin (p));

Version 1.2.2 (24. November 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

document::name
document::path
document::path9
document::folder

static int document::begin_sequence(char* undo_name = 0)

Beende die Undo-Sequenz des Skriptes und beginne eine neue Sequenz. Undo-Sequenzen sind eine Folge von Dokumentänderungen, die mit einem Undo rückgängig gemacht werden können. Jedes Skript wird automatisch in eine Undo-Sequenz eingeschlossen (und kann daher mit einem Undo rückgängig gemacht werden).

Die Länge von Undo-Sequenzen ist durch die für die Dokumentänderungen nötigen Datenmengen begrenzt. Bei sehr langen Skripten oder bei Skripten mit vielen Dokumentänderungen kann es also nötig sein, die aktuelle Sequenz zu beenden und durch eine neue Sequenz fortzusetzen.

Die Undo-Sequenz wird automatisch durch einen erneuten Aufruf der Funktion oder durch das Ende des Skriptes beendet.

Unter comet_pdf hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
undo_name String oder char* 0 Name der Sequenz im Menü Bearbeiten -> Rückgängig ->

0 oder "" : "Skript ausführen"

Version 1.2.2 (24. November 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

document::end_sequence
document::build_products

static int document::end_sequence()

Beende die Undo-Sequenz des aktuellen Skriptes. Alle weiteren Dokumentänderungen durch das Skript können dann nur noch in Einzelschritten rückgängig gemacht werden.

Die Anweisung sollte nur in Fällen verwendet werden, in denen Sie sicher kein Undo der Dokumentänderungen des Skriptes benötigen. Dann allerdings kann sie die Bearbeitung deutlich beschleunigen. Im Normalfall verwenden Sie die Funktion document::begin_sequence, die die aktuelle Undo-Sequenz ebenfalls beendet - aber gleichzeitig eine neue Sequenz beginnt.

Unter comet_pdf und in Front Row Aktionen hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

Exportiere ein Dokument in ein PDF, dass alle Texte des Dokumentes in Pfade umgewandelt sind. Dazu wird zuerst mit Hilfe des Javascript-Befehls text.createOutline salle Buchstaben in Pfade umgewandelt, dann wird exportiert. Danach werden die Pfadumwandlungen wieder rückgängig gemacht. Hinweis: Das ist nur ein Beispiel für Command Sequences. Ein einfacherer Weg zum Export von PDFs mit Buchstaben als Pfaden ist die Option with comet-option outlines:yes des Skriptbefehls pdf_export.

// @@ICONID	533
char jsExportOulinedPDF [] = "\n\ var myDocPath = '$MYPATH';\n\ var myDocName = '$MYNAME';\n\ var myPDFPreset = '$MYPRESET';\n\ \n\ var gOptions = app.comet.ping() + ';-1;';\n\ var inddPath = myDocPath + '/' + myDocName + '.indd';\n\ var pdfPath = myDocPath + '/' + myDocName + '.pdf';\n\ \n\ function main() \n\ {\n\ for (var n = 0; n < app.documents.length; n++)\n\ {\n\ doc = app.documents [n];\n\ \n\ if (doc.saved && File (doc.fullName).fullName == File (inddPath).fullName)\n\ {\n\ var par = doc.stories.everyItem().paragraphs.everyItem().getElements();\n\ var parLen = par.length;\n\ \n\ for (var i = 0; i < parLen; i++)\n\ {\n\ var para = par [i];\n\ try { para.createOutlines(true); } \n\ catch(e) { }\n\ }\n\ try { app.comet.documentGeneratePDF (inddPath, '$MYPRESET', pdfPath, gOptions); }\n\ catch (e) { }\n\ \n\ break;\n\ }\n\ }\n\ }\n\ \n\ app.comet.documentOpen (inddPath, true, gOptions);\n\ app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, 'Generate PDF with Outlined Texts');\n\ ";
int main () { char docPath [512]; char docName [512]; char shortName [512]; String js1 = string::alloc (jsExportOulinedPDF); int seq;
string::replace (js1, "$MYPATH", document::folder (docPath, 0)); string::replace (js1, "$MYNAME", file::shortname (shortName, document::name (docName, 0))); string::replace (js1, "$MYPRESET", "");
seq = document::end_sequence (0); seq = document::open_sequence ("Hola paul");
run_javascript (js1, 0, 1, 0);
document::close_sequence (seq, 1);
return 0; }

Version 1.2.2 (24. November 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

document::begin_sequence

static int document::open_sequence(char* name = 0)

Öffne eine Anweisungs-Sequenz. Durch einen nachfolgenden Aufruf von close_sequence können die zwischen den beiden Aufrufen gemachten Dokumentänderungen bestätigt oder wieder rückgängig gemacht werden.

Beachten Sie bitte, dass jeder Aufruf von open_sequence wieder geschlossen werden muß! Sequenzen dürfen geschachtelt aber niemals gemischt werden: Die zuletzt geöffnete Sequenz muß immer zuerst wieder geschlossen werden.

Unter comet_pdf hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 : Fehler
sonst : ID der geöffnenten Sequenz
name char* 0 Name der Sequenz wie er im Undo-Menü von InDesign® gezeigt wird.

Der Rahmen bekommt zwar einen neuen Text. Aber die orange Farbe wird wieder rückgängig gemacht.

int main ()
{
    int 			seq;
frame::replace (gFrame, "abcde");
seq = document::open_sequence ("Hola paul"); frame::color_rgb (gFrame, 255, 128, 0); document::close_sequence (seq, 0);
return 0; }

v4.0.5 R20031, 30. Aug 2017

priint:comet InDesign® Plug-Ins, comet_pdf

document::close_sequence

static int document::close_sequence(int seqID, int state = 1)

Schließen einer geöffneten Anweisungs-Sequenz und Bestätigen oder Rückgängigmachen der Dokumentänderungen.

Beachten Sie bitte, dass jeder Aufruf von open_sequence wieder geschlossen werden muß! Sequenzen dürfen geschachtelt aber niemals gemischt werden: Die zuletzt geöffnete Sequenz muß immer zuerst wieder geschlossen werden. Jede Sequenz darf nur einmal geschlossen werden.

Unter comet_pdf hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
seqID int - ID der Sequence aus open_sequence
state int 1 1 : Änderungen bestätigen
0 : Änderungen rückgängig machen

Ersetze den Text des Rahmens durch 'abcde'. Danach wird der Rahmen in einer eigenen Sequenz orange gefärbt - aber die Frabänderung wird sofort wieder rückgängig gemacht.

int main ()
{
    int 			seq;
frame::replace (gFrame, "abcde");
seq = document::open_sequence ("Hola paul"); frame::color_rgb (gFrame, 255, 128, 0); document::close_sequence (seq, 0);
return 0; }

v4.0.5 R20031, 30. Aug 2017

priint:comet InDesign® Plug-Ins, comet_pdf

document::open_sequence

static int ()

Bei langen Skriptaktionen kann es vorkommen, dass der intern von InDesign® verwaltete Undo-Speicher überläuft. Nicht unterstützt ab InDesign® CS3. Dann wird automatisch eine Mitteilung gezeigt, dass die Gesamtaktion zu groß ist und nicht rückgängig gemacht werden kann. Diese Mitteilung nützt einem nicht sehr viel - sie stört nur. Ein Aufruf der Funktion bewirkt, dass beim Undo-Speicherüberlauf alle Aktionen bis zu dieser Stelle aufgeräumt werden. Vor dem Aufruf muss document::begin_sequence ausgeführt wurden sein.

Unter comet_pdf hat der Aufruf keine Wirkung.

Version 1.2.2 (24. November 2005)

priint:comet InDesign® Plug-Ins, comet_pdf

Die Funktion wird ab InDesign® CS3 nicht mehr unterstützt.
document::open_sequence
document::close_sequence
document::end_sequence

static int document::load(
  DBC dbc,
  char* attribute,
  char* table_,
  int ID,
  char* creationPath,
  float scale = -1.0,
  int left = 0,
  int top = 0,
  int right = 0,
  int bottom = 0,
  int appendToRecent = 1)

Erzeuge und öffne ein Dokument aus einem Template der Datenbank. Der erzeugte ItemRef muss vom Skript wieder gelöscht werden. Dokumente können mit store_macro auf der Datenbank hinterlegt werden.

Name Typ Default Beschreibung
Return ItemRef   Referenz auf das neu erzeugte Dokument, mit item::release zu löschen!!
dbc DBC - Datenbankverbindung (ODBC oder OCI)

0 : aktuelle Datenbankverbindung
attribute String oder char* - Attributname der Datenbanktabelle, in der das Template hinterlegt ist
table_ String oder char* - Name der Datenbanktabelle, in die das Template hinterlegt ist
ID int - ID unter der das Template auf der Datenbank hinterlegt ist
creationPath String oder char* - Pfad für die erzeugte Datei
scale float 1.0 Aktuelle Skalierung
left int 0 Fensterposition
top int 0 Fensterposition
right int 0 Fensterposition
bottom int 0 Fensterposition
appendToRecent int 1 Soll die Datei in das Menü Zuletzt verwendete Datei augenommen werden?

0 : Nein
1 : Ja
docRef = document::load (attribute, table_, ID, creationPath
[, scale,
[, left, top, right, bottom]]);

appendToRecent seit Version 2.1 R1650, 11.11.2009

priint:comet InDesign® Plug-Ins

document::store_macro

static int ()

DEPRECATED! Aktualisiere die Darstellung des Dokumentes.

1.0.19

priint:comet InDesign® Plug-Ins, comet_pdf

Verwenden Sie statt dieser Funktion bitte die Funktionen textmodel::force_redraw und document::force_redraw.
linklist::load

static int document::set_startpage(
  int startpage,
  int style = 0,
  ItemRef docRef = 0)

Setze die Startseite des Frontdokumentes. Neben der Startseite kann auch der Nummerierungsstil (Zahlen, römische Zahlen, Buchstaben) gesetzt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
startpage int - Startseitennummer
style int 0 Nummerierungstyp

0 : 1, 2, 3, 4, ...
1 : I, II, III, IV, ...
2 : i, ii, iii, iv, ...
3 : A, B, C, D, ...
4 : a, b, c, d, ...

Die folgenden Angaben sind erst ab CS2 verfügbar:
5 : 01, 02, 03, ...
6 : 001, 002, 003, ...
7 : 0001, 0002, 0003, ...
8 : Fullwidth (?)
9 : Kanji
docRef ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
err_code = document::set_startpage (i, 2);

Der Numerierungstyp kann ab Version 1.0.20 gesetzt werden.
Der Parameter doc ist gültig ab Version 1.1.7, Januar 2005

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CDocument.setStartPage

static int document::store_macro(
  DBC dbc,
  char* attribute,
  char* table_,
  int ID,
  char* preview = "",
  int preview_size = 200,
  char* leftPos = 0,
  char* topPos = 0,
  char* rightPos = 0,
  char* bottomPos = 0,
  int formatID = 1)

Sichere die aktuelle Rahmenauswahl auf die Datenbank. Das Zielattribut muss ein Blob sein. Ist der Attributname preview nicht leer, wird dort automatisch ein Preview der gesicherten Auswahl abgelegt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
dbc DBC - Zieldatenbank
attribute String oder char* - Attributname der Datenbanktabelle, in der das Template hinterlegt werden soll
table_ String oder char* - Name der Datenbanktabelle, in die das Template hinterlegt werden soll
ID int - ID unter der das Template auf der Datenbank hinterlegt werden soll
preview String oder char* '' != "" : schreibe ein Preview der Auswahl in das genannte Attribut
preview_size int 200 Größe des Previews in Pixeln
leftPos String oder char* "" != "" : Die Box um die Rahmen wird ermittelt und auf die Datenbank geschrieben (links)
topPos String oder char* "" != "" : Die Box um die Rahmen wird ermittelt und auf die Datenbank geschrieben (oben)
rightPos String oder char* "" != "" : Die Box um die Rahmen wird ermittelt und auf die Datenbank geschrieben (rechts)
bottomPos String oder char* "" != "" : Die Box um die Rahmen wird ermittelt und auf die Datenbank geschrieben (unten)
formatID int 1 In welchem Format soll das Template abgelegt werden?
1: Klassisch (InDesign® -Dokument)
2: Snippet (InDesign® -Snippet)
3: IDML (ab CS4, zur Zeit nicht unterstützt)
err_code = document::store_macro (dbc, attr, table_, id 
[, preview
[, preview_size]]);

v1.2

priint:comet InDesign® Plug-Ins

document::load
document::insert_macro

static ItemList document::insert_macro(
  DBC dbc,
  char* attribute,
  char* table_,
  int ID,
  float x = -1000.0,
  float y = -1000.0,
  int page = -1,
  char* layer = 0,
  int id1 = 0,
  int id2 = 0,
  int id3 = 0,
  char* stringid = 0,
  int autoLoad = 0,
  int classID = 0)

Setze eine datenbank-gesichertes Template in das aktuelle Dokument ein. Es wird geraten, zum Einfügen von Templates die allgemeinere Funktion document::place_items zu verwenden.

Wird der Aufruf in einem Ladenskript eines Platzhalters gemacht, muss sichergestellt werden, dass die neuen Rahmen nur einmal importiert werden. Das ist Aufgabe des Skriptprogrammiers. Macht der Platzhalter nur einen Import, können Sie einfach alle Cometuntergruppen des Rahmens entfernen. Verwenden Sie dazu frame::remove_sub_cometgroups.

Beim Einsetzen von Templates kann aus der gegebenen Template-ID automatisch ermittelt werden, ob entsprechend der aktuellen Zielseite und -position möglicherweise ein anderes Template eingesetzt werden soll, siehe dazu in der Beschreibung der Palette 'Templates' und TemplateID-Skript.

Name Typ Default Beschreibung
Return ItemList   Eingefügte Rahmen, muss mit itemlist::release wieder gelöscht werden
dbc DBC - Datenbank, auf der das Template hinterlegt ist

0 : Benutze die aktuelle Datenbankverbindung
attribute String oder char* - Attributname der Datenbanktabelle, in der das Template hinterlegt ist

Sind attribute und table leer, wird die Standardquelle für Templates verwendet. Sie müssen dann lediglich die Template-ID angeben.
table_ String oder char* - Name der Datenbanktabelle, in die das Template hinterlegt ist

Sind attribute und table leer, wird die Standardquelle für Templates verwendet. Sie müssen dann lediglich die Template-ID angeben.
ID int - ID unter der das Template auf der Datenbank hinterlegt ist
x float Originalposition Seitenrelative Position in Punkten
y float Originalposition Seitenrelative Position in Punkten
page int Originalseite Seitenummer auf der das Template platziert werden soll
layer String oder char* Aktueller Layer Ziellayer, auf der dem Template platziert werden soll
id1, id2, id3, stringid int, int, int, char* 0, 0, 0, "" Produkt-ID des Objektes, mit dem das Template verknüpft werden soll. Die Id wird ebenfalls im Template-ID Skript des Templates verwendet. Ist id1 = 0, werden die Rahmen des Template nicht neu verlinkt.
autoLoad int 0 Sollen die Rahmen des eingesetzten Templates verknüpft und geladen werden?

0 : Nein, die Platzhalter werden nicht neu verknüpft.

1 : Ja, Platzhalter verknüpfen, laden und bei Bedarf wiederholende Elemente anlegen. id1 muss in diesem Fall > 0 sein.

-1 : seit v3.3.1 R5125 Platzhalter verknüpfen aber nicht laden id1 muss in diesem Fall > 0 sein.
classID int 0 Nur Platzhalter dieser Klasse verknüpfen, laden und aufbauen

0 : Alle Platzhalter berücksichtigen
sonst : Nur Platzhalter mit dieser ClassID berücksichtigen
items = document::insert_macro (dbc, attr, table_, id
[, x, y
[, page
[, layer]]]);

id1, id2, id3, stringid seit Version 1.4 R340, Tag der Befreiung vom Faschismus 2007

autoLoad == -1 seit v3.3.1 R5126, 22. Jan 2014

priint:comet InDesign® Plug-Inss, comet_pdf

document::store_macro
pages
layer

static ItemList document::place_items(
  DataPool pool,
  char* attribute,
  char* table_,
  int ID,
  float x = -1000.0,
  float y = -1000.0,
  int page = -1,
  char* layer = "",
  int id1 = 0,
  int id2 = 0,
  int id3 = 0,
  char* stringid = 0,
  int autoLoad = 0,
  int classID = 0,
  int addToCometGroup = 1)

Setze ein Datenbank- oder Datei-gesichertes Template in das aktuelle Dokument ein. Ist das Template als Datei gesichert, muss sich die Datei im Datenordner des Pools (datapool::get_files) im Unterordner table_/attribute unter dem Namen ID.indd befinden.

Wird der Aufruf in einem Ladenskript eines Platzhalters gemacht, muss sichergestellt werden, dass die neuen Rahmen nur einmal importiert werden. Das ist Aufgabe des Skriptprogrammiers. Macht der Platzhalter nur einen Import, können Sie einfach alle Cometuntergruppen des Rahmens entfernen. Verwenden Sie dazu frame::remove_sub_cometgroups.

Um Rahmen von InDesign® -Dokumenten oder Snippets zu importieren, die nicht im aktuellen Datenpool liegen verwenden Sie die die Funktion place_indesign.

Beachten Sie bitte, der Rückgabewert der Funktion ist eine Liste (die eben importierten Dokumentrahmen). Wenn Sie diese Liste nicht abholen und wieder freigeben (itemlist::release) wird sie erst zum Skriptende automatisch gelöscht. Bei wiederholten Aufrufen der Funktion können Sie damit eine ganze Menge Speicher belegen.

Beim Einsetzen von Templates kann aus der gegebenen Template-ID automatisch ermittelt werden, ob entsprechend der aktuellen Zielseite und -position möglicherweise eine anderes Templates eingesetzt werden soll, siehe dazu in der Beschreibung der Palette 'Templates'.

Name Typ Default Beschreibung
Return ItemList   Eingefügte Rahmen, muss mit itemlist::release wieder gelöscht werden
pool DataPool - Datenbank oder Dateistruktur, in der das Template hinterlegt ist

0 : Aktueller Datenpool
attribute String oder char* - Attributname der Datenbanktabelle, in der das Template hinterlegt ist

Sind attribute und table leer, wird die Standardquelle für Templates verwendet. Sie müssen dann lediglich die Template-ID angeben.
table_ String oder char* - Name der Datenbanktabelle, in die das Template hinterlegt ist

t

Sind attribute und table leer, wird die Standardquelle für Templates verwendet. Sie müssen dann lediglich die Template-ID angeben.
ID int - ID unter der das Template auf der Datenbank hinterlegt ist
x float - Seitenrelative Position in Punkten (1/72 dpi)
y float - Seitenrelative Position in Punkten (1/72 dpi)
page int - Seitenummer auf der das Template platziert werden soll

-1 : aktuelle Seite

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

layer String oder char* "" Ziellayer, auf der dem Template platziert werden soll

0 oder "" : Hintergrundebene
id1, id2, id3, stringid int, int, int, String oder char* 0, 0, 0, "" Produkt-Id des Objektes, mit dem das Template verknüpft werden soll. Die Id wird ebenfalls im Template-ID Skript der Templates verwendet. Ist id1 = 0, werden die Platzhalter nicht neu verlinkt.
autoLoad int 0 Sollen die Rahmen des Templates automatisch neu geladen werden?

0 : Nein

1 : Ja, Rahmen laden und bei Bedarf wiederholende Elemente anlegen. Ist id1 = 0 werden die Platzhalter nicht geladen!
classID int 0 Nur Platzhalter dieser Klasse verknüpfen, laden und aufbauen, nur bei id1 > 0

0 : Alle Platzhalter berücksichtigen
sonst : Nur Platzhalter mit dieser ClassID berücksichtigen
addToCometGroup int 1 ab Comet3.1 Die Rahmen des Templates werden automatisch zu einer Comet-Gruppe zusammengefasst. Soll diese Gruppe eine Untergruppe des des aktuellen Skriptrahmens werden?

1 : Ja, aber der Hauptrahmen muss auf dem selben Spread wie das Skriptrahmen liegen.
0 : Nein. Wenn Sie diese Einstellung wählen, bilden die Rahmen des Templates eine eigene unabhängige Cometgruppe. Der Produktaufbau kann in diesem Fall nicht mehr erkennen, dass die Rahmen eigentlich noch zum Produkt gehören.
#include "internal/types.h"
#include "internal/products.h"

Alle Einträge der zweiten Ebene der ausgewählten Produkte werden platziert. Die Produkte müssen Raster und Rasterplatz definiert haben. Ist der Rasterplatz kleiner als der des Vorgängers, wird eine neue Seite angelegt.

#include "internal/text.h"
#include "internal/products.h"
int main () { ProductList pl = productlist::get ("selected [level = 2]"); ItemList inserted = 0; int lastElem = 0; int grid, elem, pid; Product p; float left, top; int pnum = page::get (0); char pname[1024]; int cc = 0; float ml, mt, mr, mb;
wlog ("", "# Starting import\n"); progress::start ("Produktaufbau", productlist::length (pl)); page::get_margins (pnum, &ml, &mt, &mr, &mb);
for (p = productlist::first (pl); p; p = productlist::next (pl)) { sprintf (pname, "Produkt %d [%s]", ++cc, product::gets (p, kStringID)); wlog ("", "# ---> Importing %s\n", pname); progress::step (pname, 1);
pid = product::get (p, kPageitemid); grid = product::get (p, kGridid); elem = product::get (p, kElementid);
if (grid <= 0) grid = 2;
//Neue Seite, wenn die Elemente wieder vorn vorne beginnen if (lastElem > elem) { page::create (1, pnum+1); pnum += 1; } lastElem = elem;
left = grid::left (grid, elem); top = grid::top (grid, elem);
inserted = document::place_items (   0, "", "",   product::get (p, kPageitemid),   left + ml,   top + mt,   pnum, "",   product::get (p, kID),   product::get (p, kID2),   product::get (p, kID3),   product::gets (p, kStringID),   1);
if (inserted) itemlist::release (inserted); inserted = 0; }
progress::stop (); return 0; }

Version 1.1.7, Januar 2005 id1, id2, id3, stringid seit Version 1.4 R340 addToCometGroup Version 3.1 R 1612, 21. Okt. 2009

priint:comet InDesign® Plug-Ins, comet_pdf

document::store_macro
pages
layer
document::place_indesign
comet.CDocument.placeTemplate

static ItemList document::place_snippet(
  int ID,
  float x = -1000.0,
  float y = -1000.0,
  int page = -1,
  char* layer = "",
  int id1 = 0,
  int id2 = 0,
  int id3 = 0,
  char* stringid = 0)

Setze ein Snippet in das aktuelle Dokument ein.

Beachten Sie bitte, der Rückgabewert der Funktion ist eine Liste (die eben importierten Dokumentrahmen). Wenn Sie diese Liste nicht abholen und wieder freigeben (itemlist::release) wird sie erst zum Skriptende automatisch gelöscht. Bei wiederholten Aufrufen der Funktion können Sie damit eine ganze Menge Speicher belegen.

Name Typ Default Beschreibung
Return ItemList   Eingefügte Rahmen, muss mit itemlist::release wieder gelöscht werden
ID int - Template ID. Dieser Parameter ist für zukünftige Erweiterungen der Snippet-Funktionalität vorgesehen und wird derzeit nicht ausgewertet
x float - Seitenrelative Position in Punkten (1/72 dpi)
y float - Seitenrelative Position in Punkten (1/72 dpi)
page int - Seitenummer auf der das Snippet platziert werden soll

-1 : aktuelle Seite

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

layer String oder char* "" Ziellayer, auf der dem Snippet platziert werden soll

0 oder "" : Hintergrundebene
id1 int - Id des Snippets das eingesetzt werden soll.
id2, id3, stringid int, int, String oder char* 0, 0, "" Weitere Product-Ids des Objektes, diese Parameter werden derzeit nicht ausgewertet.

Version 4.1.7 R26766, April 2020
priint:comet InDesign® Plug-Ins, comet_pdf

document::place_items

static ItemList document::place_indesign(
  char* path,
  int srcPage,
  char* srcLayers,
  int cometGroup,
  int page,
  float x,
  float y,
  char* layer = "",
  int id1 = 0,
  int id2 = 0,
  int id3 = 0,
  char* stringid = 0,
  int autoLoad = 0,
  int classID = 0,
  int addToCometGroup = 1)

Import von Dokumentrahmen aus InDesign® -Dokumenten oder Snippets (inds, idml).

Beachten Sie bitte, der Rückgabewert der Funktion ist eine Liste (die eben importierten Dokumentrahmen). Wenn Sie diese Liste nicht abholen und wieder freigeben (itemlist::release) wird sie erst zum Skriptende automatisch gelöscht. Bei wiederholten Aufrufen der Funktion können Sie damit eine ganze Menge Speicher belegen.

Wird der Aufruf in einem Ladenskript eines Platzhalters gemacht, muss sichergestellt werden, dass die neuen Rahmen nur einmal importiert werden. Das ist Aufgabe des Skriptprogrammiers. Macht der Platzhalter nur einen Import, können Sie einfach alle Cometuntergruppen des Rahmens entfernen. Verwenden Sie dazu frame::remove_sub_cometgroups.

Name Typ Default Beschreibung
Return ItemList   Eingefügte Rahmen, muss mit itemlist::release wieder gelöscht werden
path String oder char* - Vollständiger Pfad des InDesign® -Dokumentes oder -Snippets
⇨ Angaben zu den Rahmen, die importiert werden sollen. Snippets werden immer vollständig importiert, die Angaben werden bei Snippets ignoriert.
srcPage int - Dokumentseite, von der die Rahmen importiert werden sollen (1-basiert).

0 : Seitenzahl und Ebenen ignorieren und die Cometgruppe cometGroup verwenden
srcLayers String oder char* - Mit Leerzeichen getrennte Liste von Ebenennamen (jeweils in Anführungszeichen, z.B. "\"AAA\" \"BBB\"") : Nur Rahmen dieser Ebenen importieren.

"" : Nur Rahmen sichtbarer Ebenen importieren
cometGroup int - Nur die Rahmen dieser Cometgruppe importieren. Ist eine Seitenzahl größer 0 angegeben, wird der Parameter ignoriert.

0 : Cometgruppe ignorieren
⇨ Angaben zur Einfügestelle
page int - Zielseite (1-basiert)
x float - Seitenrelative Position in Punkten

-1000.0 : X-Position des Originales
y float - Seitenrelative Position in Punkten

-1000.0 : Y-Position des Originales
layer String oder char* "" Ziellayer, auf der dem die Rahmen platziert werden sollen

"" : Aktuelle Ebene
⇨ Angaben zur Verknüpfung
id1, id2, id3, stringid int, int, int, String oder char* 0, 0, 0, "" Product-Id des Objektes, mit dem das Template verknüpft werden soll. Ist id1 = 0, werden die Rahmen nicht neu verlinkt.
autoLoad int 0 Sollen die Rahmen neu geladen werden?

0 : Nein
1 : Ja, Rahmen laden und bei Bedarf wiederholende Elemente anlegen. Ist id1 = 0 werden die Rahmen nicht neu geladen!
classID int 0 Nur Platzhalter dieser Klasse verknüpfen, laden und aufbauen

0 : Alle Platzhalter berücksichtigen
sonst : Nur Platzhalter mit dieser ClassID berücksichtigen
addToCometGroup int 1 Sollen die eingefügten Rahmen in Cometgruppen zusammengefasst werden?
  • 0 : Die eingefügten Rahmen werden zu einer eigenen neuen Cometgruppe zusammengefasst.
  • 1 : Hat das ausführende Skript einen definierten Rahmen gFrame und liegt gFrame auf dem gleichen Spread wie die eingefügten Rahmen, werden die eingefügten Rahmen zur Cometgruppe von gFrame hinzugefügt. Ist gFrame undefiniert oder liegt auf einem anderen Spread, wird aus den eingefügten Rahmen eine eigene Cometgruppe gebildet.
  • 2 : [seit v4.3 R36610] Versuche die originalen Cometgruppen wieder herzustellen.
  • 3 : [seit v4.3 R36610] Keine Cometgruppe(n) bilden

Importiere die Rahmen der Ebenen 1 und 2 der Seite 3.

int main ()
{
    document::place_indesign (
     	"$DESKTOP/aaa.indd",
     	3, "\"Ebene 1\" \"Ebene 2\"",
     	0,
     	4, 100.0, 100.0);
    return 0;
}

Aus einer InDesign® -Datei soll die Cometgruppe eines Produktes in unser Dokument übernommen werden. Zum Ermitteln der Cometgruppe müssen Sie dazu das Dokiument erst öffnen und in den Vordergrund holen. Achten Sie darauf, das Dokument wieder zu schließen, wenn es vorher nicht geöffnet war. Hat der Rahmen bereits einmal zusätzliche Rahmen importiert, werden diese Rahmen vor dem Import automatisch gelöscht.

char			stSrcDoc []		= "$DESKTOP/big.indd";
int main () { ItemRef docRef = document::get_front (); ItemRef docRef2 = item::alloc (); int mustClose = 0; ItemRef frameRef = item::alloc (); int groupID = 0;
if (!document::is_opened (stSrcDoc, docRef2)) { item::release (docRef2); docRef2 = document::open (stSrcDoc); mustClose = 1; } document::select (docRef2);
document::find_frame (frameRef, 3, 100, 10, 0); if (item::defined (frameRef)) { groupID = frame::get_cometgroup (frameRef, 0); } if (groupID == 0) { if (mustClose) document::close (docRef2); showmessage ("Produkt nicht gefunden!"); return 0; }
document::select (docRef); frame::remove_sub_cometgroups (gFrame); document::place_indesign (   stSrcDoc,   0, "",   groupID,   2, 100.0, 100.0);
if (mustClose) document::close (docRef2);
return 0; }

Werte 2 und 3 für addToCometGroup seit v5.0 R36610, 25. April 2025
v2.1 R 1800, 14. März 2010

priint:comet InDesign® Plug-Ins

document::palce_items
pages
layer

static int document::find_frame(
  ItemRef frameRef,
  int classid,
  int id,
  int id2,
  int id3,
  char* sid = "",
  int diveInto = 0)

Suche den ersten Rahmen, der mit einem Objekt einer gewünschten Klasse verbunden ist. Für das Ergebnis muss ein ItemRef mit reserviertem Speicher übergeben werden.

Name Typ Default Beschreibung
frameRef ItemRef - Enthält nach dem Aufruf den gesuchten Rahmen. Wurde kein Rahmen gefunden, ist der Wert der Variable leer, testen mit item::defined
classid int - Klassennummer oder 0
id int - Suche nach diesem Produkt
id2 int - Suche nach diesem Produkt
id3 int - Suche nach diesem Produkt
sid String oder char* "" Suche mit dieser StringID nach dem Produkt. Ein Produkt wird nur dann gefunden, wenn alle 3 IDs und die StringID übereinstimmen. Werden keine StringIDs verwendet, wird der Wert mit "" angegeben.
diveInto int 0 Auch in Unterrahmen suchen?

0 : Nein
1 : Ja

Suche nach dem ersten Rahmen, der mit der Staude (1, 3, 4) verknüpft ist

ItemRef		frame	= item::alloc ();
document::find_frame (frame, 1, 1, 3, 4); if (!item::defined (frame)) { item::release (frame); showmessage ("Rahmen nicht gefunden"); return 1; }

sid seit Version 1.3 (Build 96)

priint:comet InDesign® Plug-Ins, comet_pdf

Parameter diveInto seit v4.0.5 R11012

static int document::export_(
  ItemRef docRef,
  char* destPath,
  char* format,
  char* profile = "",
  int uiflag = 0,
  int fileflag = 1,
  ...)

Exportiere ein Dokument in ein gegebenes Zielformat.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

2201 : Document to packa not found
2202 : Error while creating package file
2203 : Cannot open file to package
2204 : Error while checking links of document (NOT missing images!)
2205 : Cannot create internal link object
2206 : Link resource not found
2207 : Error while duplicating image file
2208 : Error while updating link
docRef ItemRef - Dokument, das exportiert werden soll

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
destPath String oder char* - Zielpfad für den Export. Existiert der Ordnerpfad nicht, wird er automatisch erzeugt.

0 oder "" und format = "package" : Verwende Pfad und Namen (ohne .indd) als Name des Paketes.
format String oder char* - Zielformat. Folgende case sensitiven Angaben sind möglich:
  Format Kommentar
JPG JPEG  
inx InDesign® -Austauschformat  
idml InDesign® -Austauschformat  
svg SVG Erzeugt für jede Seite > 1 eine Datei nameX.svg die bei gesetztem fileflag automatisch mit gelöscht werden.
svgz Komprimiertes SVG Erzeugt für jede Seite > 1 eine Datei nameX.svgz die bei gesetztem fileflag automatisch mit gelöscht werden.
swf Adobe Flash Multimedia Datei Nicht mehr unterstützt ab InDesign® 2020! Die Funktion gibt in diesem Fall den Fehler -2020 zurück.
xml XML  
pdf Adobe PDF Für den Export ausgewählter Seiten oder Spreads können Sie die Funktion pdf_export verwenden.
EPS EPS Erzeugt für jede Seite eine Datei name_X.EPS die bei gesetztem fileflag automatisch mit gelöscht werden.
package Packet-Ordner oder zip

ab v4.0.4 R9030 Verpacke die Datei in einen Ordner und optionales Verpacken dieses Ordners in einem ZIP.

Beachten Sie bitte: Das Verpacken von Dokumenten wird mit Hilfe der in InDesign® eingebauten Javascript-Funktion document.packageForPrint gemacht. Fehler im Verhalten der Funktion oder InDesign®-Abstürze durch die Funktion sind nicht auf die cScript-Funktion document::export_ zurückzuführen, sondern direktes Fehlverhalten von InDesign®!

w2ml Comet interchange format ab v4.1 R23572
profile String oder char* "" Name der Konfiguration, die für den Export verwendet werden soll. Profile werden nur für das Format "pdf" verwendet:
  • interactive# : Interaktives PDF mit den aktuellen Einstellungen des PDF-Exportes für interaktive PDFs
  • interactive#key1:value1;key2:value2;... : Interaktives PDF mit den Einstellungen der Key/Value-Paare
  • Nicht leer : PDF (Druck) mit dem gegebenen Profil
  • Leer oder 0 : PDF mit den aktuellen PDF-Exportoptionen für PDF (Druck)
uiflag int 0 0 : Unterdrücke alle Dialoge und Progressbalken. Nötige Exportangaben werden aus den aktuellen oder Standardangaben von InDesign® oder aus dem Profile genommen.
1 : Nur die nötigsten Dialoge werden gezeigt.
2 : Alle Dialoge und Progressbalken werden gezeigt.
3 : nur bei format "package" Führe den Menübefehl Datei -> Verpacken ... aus. Aus technischen Gründen kann diese Anweisung erst zur nächsten Ruhezeit von InDesign® ausgeführt werden und nicht direkt beim Aufruf im Skript. Vor der Verwendung der Anweisung muß unbedingt geprüft werden, ob das in Ihrem Arbeitsablauf überhaupt möglich und sinnvoll ist!
fileflag int 1 Soll die Zieldatei überschrieben werden?
0 : Zieldatei nicht überschreiben
1 : Zieldatei darf überschrieben werden
2 : nur bei format = "package" Komprimiere das Ergebnis als ZIP-Datei. Hat der Paket-Ordner nicht existiert, wird er hier auch wieder gelöscht. (Auf dem Mac werden die Ordner in den Papierkorb verschoben. Die Verschiebung wird im Logfile vermerkt.)
⇨ Zusatzparameter. Die Zusatzparameter bestehen jeweils aus einem Schlüsselwort (String oder char*) und den zugehörigen Werten. Die Liste der Zusatzparameter darf beliebig lang sein und eine beliebige Reihenfolge haben. Werden Schlüssel mehrfach angegeben, wird immer der letzte Wert verwendet.

seit v3.3 R2580 25.07.2011 und CS4 SWF-Export. Die Parameter entsprechen im Wesentlichen den Einstellungen des Export-Dialoges für SWF. Nicht angegebene Einstellungen werden (wenn möglich) aus den Einstellungen dieses Dialoges genommen. Die Einstellungen des Export-Dialoges bleiben unverändert.

Der SWF-Export wird ab InDesign® 2020 nicht mehr unterstützt!

seit v4.0.4 R9030, 2. Okt. 2015 Beim Verpacken (format = "package") eines Dokumentes können die mit pkg: definierten Optionen verwendet werden.
"swf:generateHTML" int - 0 | 1
"swf:viewAfterExport" int - 0 | 1
"swf:sizeAndFitting:fitTo" int - 0: 1280x800
1 : 1240x620
2 : 1024x768
3 : 984x588
4 : 800x600
5 : 760x420
6 : 640x480
7 : 600x300
"swf:sizeAndFitting:scale" float - 0.0 -100.0
"swf:sizeAndFitting:size" float, float - Größe in Punkten
"swf:bkTransparent" int - erst ab CS5

0 | 1
"swf:transparencyHandler" int - erst ab CS5

0: ignore
1 : flatten
2 : native
"swf:mediaHandler" int - erst ab CS5

0: alles einschließen
1 : nur Erscheinungsbild
"swf:pageTransition" int - 0 : ohne

ab CS5
1 : aus Dokument
2 : Blenden
3 : Einblenden
4 : Kämmen
5 : überdecken
6 : Auflösen
7 : Verblassen
8 : Umblättern
9 : Schieben
10 : Teilen
11 : Aufdecken
12 : Wischen
13 : Einzoomen
14 : Auszoomen

vor CS5
Alle anderen Werte schalten die Seitenüberblendung ein.
"swf:bookControl:curl" int - 0 | 1 - Interaktives Aufrollen der Seiten einschließen
"swf:bookControl:showAtRest" int - 0 | 1
"swf:bookControl:cornerTease" int - 0 | 1
"swf:bookControl:sizePercent" float - 0.0 - 100.0
"swf:frameRate" int - since CS5

Bilder pro Sekunde
"swf:textExport" int - 0 : Klassischer Text
1 : In Pixel konvertieren
2 : In Pfade umwandeln
3 : Vellum
"swf:rasterizePage" int - 0 | 1
"swf:rasterCompression" int - 0 : JPEG (verlustbehaftet)
1 : PNG (verlustfrei)
2 : Automatisch
"swf:jpgQuality" int - 0 : Minimum
1 : Niedrig
2 : Mittel
3 : Hoch
5 : Maximum
"swf:rasterResolution" int - Auflösung (ppi)
"swf:curveQuality" int -  
"swf:resampling" int - 0 : aus
1 : Durchschnitt
2 : Subsample
3 : Bikubisch
"swf:resampleTreshold" int -  
"swf:readerSpreads" int - 0 | 1
"swf:useNetwork" int - 0 | 1
"swf:includePreloader" int - since CS5

0 | 1
"pkg:fonts" int 1 Schriften exportieren?

0 : Nein
1 : Ja
"pkg:images" int 1 Bilder exportieren?

0 : Nein
1 : Ja. In diesem Fall werden automatisch auch alle Verweise im verpackten Dokument aktualisiert.

Fehlende Bilder sind kein Abbruchgrund. Verweise auf fehlende Bilder bleiben unverändert. Im Logfile finden Sie Meldungen über fehlende Bilder.
"pkg:profiles" int 1 Farbprofile exportieren?

0 : Nein
1 : Ja
"pkg:hiddenLayers" int 1 Schriften und Farben auch von unsichtbaren Ebenen exportieren?

0 : Nein
1 : Ja
"pkg:ignoreErrors" int 1 Bei Preflight-Fehlern trotzdem verpacken?

0 : Nein
1 : Ja
"pkg:report" int 1 Report-Datei (Anleitungen.txt) schreiben?

0 : Nein
1 : Ja
"pkg:idml" int 0 Erst ab InDesign® CC. Sonst wird die Angabe ignoriert. IDML-Version des Dokumentes schreiben?

0 : Nein
1 : Ja

"pkg:pdf" int 0 Erst ab InDesign® CC. Sonst wird die Angabe ignoriert. PDF-Version des Dokumentes schreiben?

0 : Nein
1 : Ja
"pkg:pdfstyle" String oder char* 0 Erst ab InDesign® CC. Sonst wird die Angabe ignoriert. PDF-Stil für den PDF-Export. Achten Sie darauf, dass die Angabe ein String ist!

Exportiere das aktuelle Dokument in eine PDF-Datei. Das Profil 'Paul' muss angelegt sein (Menü Datei:PDF-Exportvorgaben:Definieren ...).

int main ()
{
    int       result	= 0;
result = document::export_ (   0,   "/AAA/BBB/a.pdf",   "pdf",   "Paul",   0,   1); return 0; }

Verpacke das aktuelle Dokument als ZIP. Farbprofile sollen nicht exportiert werden. Eine Report-Datei ist nicht nötig.

result = document::export_ (0, "", "package", "", 0, 2, 
 	"pkg:profiles", 0,
 	"pkg:report", 0);

Version 1.1.4
uiflag = 3 seit v4.1.7 R27305, 20. Jul 2020

priint:comet InDesign® Plug-Ins

document::open
document::close
document::duplicate
document::print
document::pdf_export
comet.CDocument.exportPDF

static int document::pdf_export(
  ItemRef docRef,
  char* destPath,
  char* profile = "",
  int scope = 2,
  List indexes = 0,
  ...)

PDF-Export einzelner Seiten oder Spreads eines Dokumentes. Die Seiten oder Spreads können dabei in beliebiger Reihenfolge exportiert werden.

Seit v4.1 R23334 Im erzeugten PDF können zusätzlich die Comet-Notizen als PDF-Kommentare angelegt werden. Addieren Sie dazu zum Parameter scope den Wert 4 (nur sichtbare Notizen) oder 8 (auch unsichtbare Notizen). Beachten Sie dazu bitte auch die Installations-Hinweise zur PDFlib!

Mit der Funktion können wahlweise auch interaktive PDFs erzeugt werden. Da es für interaktive PDFs keine PDF-Profile gibt, müssen die Exportoptionen im Skriptaufruf gemacht werden. Um interaktive PDFs zu erzeugen, definieren Sie den Parameter profile wie folgt:

interactive#{key:value;} mit key und value gemäß der folgenden Tabelle.

Ist die Liste der Key-Values leer, werden die aktuellen InDesign®-Einstellungen zum Export interaktiver Dokumente verwendet. Ist mindestens ein Wert definiert, wird für die fehlenden Werte der in der Tabelle angegebene fett dargestellte Default verwendet.

Key Value Beschreibung
Allgemein singlePages no | 0
yes | 1
Seiten : Separate PDFs erstellen

Verfügbar ab InDesign® 2020
singlePagesSuffix beliebiger String Seiten : Separate PDFs erstellen ... Suffix

Nur beim Erstellen von Einzelseiten (singlePages:yes;)

Verfügbar ab InDesign® 2020
magnification actual
fitPage
fitWidth
fitHeight
fitVisible
25
50
75
100
Anzeige : Skalierung der Ansicht
pageLayout single
singleContinue
twoUp
twoUpContinue
twoUpCover
twoUpCoverContinue
Anzeige : Layout
fullScreen no | 0
yes | 1
Anzeige : Im Vollbildmodus öffnen
flipPages no | 0
yes | 1
Anzeige : Seiten wechseln ...

Die Angabe wird nur im Vollbildmodus (fullScreen:yes;) verwendet.
flipSpeed Sekunden als Ganzzahl, Default 5 Anzeige : Seiten wechseln nach ... Sekunden

Die Angabe wird nur im Vollbildmodus (fullScreen:yes;) verwendet.
transition nothing
blend
combine
box
cover
push
uncover
wipe
zoomIn
zoomOut
disolve
fade
turn
split
Anzeige : Seitenübergänge

Die Angabe wird nur im Vollbildmodus (fullScreen:yes;) verwendet.
autoShow no | 0
yes | 1
Anzeige : Nach Export anzeigen
showInteractives no | 0 - nur Erscheinungsbild
yes | 1 - alle einschließen
Optionen : Formulare und Medien einschließen
thumbnails no | 0
yes | 1
Optionen : Seitenminiaturen einbetten
layers no | 0
yes | 1
Optionen : Acrobat-Ebenen erstellen
tags no | 0
yes | 1
Optionen : PDF mit Tags erstellen
tabs definition | 0
structure
Optionen : Struktur für Aktivierungsreihenfolge verwenden

Nur bei PDFs mit erstellten Tags (tags:yes;)
Komprimierung compression jpeg
lossless
auto
Bildkomprimierung
quality min
low
medium
high
max
JPEG-Qualität
resolution PPI als Ganzzahl
Minimum 10
Default 72
Auflösung (ppi)
Barrierefreiheit title document
file
Barrierefreiheitsoptionen : Titel anzeigen
language Sprache als String Barrierefreiheitsoptionen : Sprache

Die verfügbaren Sprachen und deren Schreibweise entnehmen Sie dem Popupmenü Barrierefreiheitsoptionen : Sprache.
Sicherheit Die Sicherheitseinstellungen hängen sehr stark vom verwendeten PDF-Viewer ab. Viewer wie Acrobat oder Acrobat Pro können mitunter nicht alle gemachten Sicherheitseinstellungen realisieren. Bitte prüfen Sie bei nicht angewendeten Sicherheitseinstellungen im PDF zuerst, ob Sie die gewünschte Einstellung bei einem manuellen Export erreichen!
password String
Default: kein Kennwort
Kennwort zum Öffnen des Dokumentes
authorization String
Default: kein Kennwort
Berechtigungen : Berechtigungskennwort
allowPrint no | 0
low
yes | 1
Berechtigungen : Zulässiges Drucken

Nur aktiv wenn ein Berechtigungskennwort gesetzt ist (authorization:'pwd';)
allowAssembly yes | 1
no | 0
Zulässige Änderungen -> Einfügen, Löschen und Drehen von Seiten

Nur aktiv wenn ein Berechtigungskennwort gesetzt ist (authorization:'pwd';)
allowFormfill yes | 1
no | 0
Zulässige Änderungen -> Ausfüllen von Formularfeldern

Nur aktiv wenn ein Berechtigungskennwort gesetzt ist (authorization:'pwd';)
allowNotes yes | 1
no | 0
Zulässige Änderungen -> Einfügen von Kommentaren

Nur aktiv wenn ein Berechtigungskennwort gesetzt ist (authorization:'pwd';)
allowExtraction yes | 1
no | 0
Zulässige Änderungen -> Alle außer Entnehmen von Seiten

Nur aktiv wenn ein Berechtigungskennwort gesetzt ist (authorization:'pwd';)
allowCopy yes | 1
no | 0
Kopieren von Text, Bildern und anderen Inhalten ermöglichen

Nur aktiv wenn ein Berechtigungskennwort gesetzt ist (authorization:'pwd';)
allowChange yes | 1
no | 0
Textzugriff ...

Nur aktiv wenn ein Berechtigungskennwort gesetzt ist (authorization:'pwd';)
plainTextForMeta yes | 1
no | 0
Reines Textformat für Metadaten aktivieren

Nur aktiv wenn ein Berechtigungskennwort gesetzt ist (authorization:'pwd';)

InDesign® kann beim Export in PDF Texte automatisch in Pfade umwandeln. Jeder Buchstabe des Dokumentes wird dabei durch einen entsprechenden Pfad, den sogenannten Outline ersetzt und mit der entsprechenden Farbe gefüllt. Die dafür nötige Konfiguration ist nicht so ganz offensichlich. Hier eine Schritt-für-Schritt Anleitung:

  1. Öffnen Sie das Menü Bearbeiten -> Transparenzreduzierungsvorgaben...

  2. Wählen Sie [Hohe Auflösung] (oder was immer Sie wollen) und klicken Sie auf Neu....

  3. Aktivieren Sie im erscheinenden Dialog das Kontrollkästchen Text in Pfade umwandeln. Und was Sie sonst noch so wollen. Nachdem Sie dem Ganzen einen Namen gegeben haben (hier Text in Pfade) klicken Sie auf OK. Danach schließen Sie auch den Dialog aus Schritt 2.

  4. Im nächsten Schritt legen Sie eine PDF-Vorgabe mit der eben definierten 'Transparenzreduzierungsvorgabe' an. Wählen Sie dazu zunächst das Menü Datei -> Adobe PDF-Vorgaben -> Definieren.... Im erscheinden Dialog wählen Sie daas Button Neu... (oder einen der Nicht-Standard-Einträge ohne [eckige Klammern]). Es erscheint ein weiterer Dialog mit den Einstellungen der PDF-Vorgabe. Gehen Sie hier links zum Tab Erweitert. Dort wählen Sie im Dropdown Transparenzreduzierung die in Schritt 3 definierte Vorgabe (hier Text in Pfade).

    Bitte beachten Sie : Damit das Dropdown aktiviert ist, muss mindestens PDF/X als Standard der Vorgabe gewählt sein.

  5. Jetzt kommt der wirkliche, leicht hinterhältige Trick, ohne den alles gar nicht funktionieren würde: Damit die 'Transparenzreduzierungsvorgabe' (und damit das Umrechnen von Buchstaben in Pfade) von InDesign® überhaupt angewendet wird, muß das Dokument mindestens einen Rahmen mit Transparenz haben - und zwar auf jeder Seite!. Legen Sie dazu auf jeder Musterseite einen (kleinen) Rahmen an, in dem Sie mit Hilfe der Palette Fenster -> Effekte die Transparenz 0% einstellen:

Wenn Sie ein so vorbereitetes Dokument jetzt mit der erstellten PDF-Vorgabe in ein PDF exportieren, wird InDesign® Ihnen alle Texte des Dokumentes in Pfade umwandeln.

Suchen Sie gar nicht erst auf Ihrem Rechner nach der 'Transparenzreduzierungsvorgabe'. InDesign® schreibt die entsprechenden Einstellungen direkt in die PDF-Vorgabe! (Was wohl auch bedeutet: Änderungen einer 'Transparenzreduzierungsvorgabe' ändern das Verhalten von PDF-Vorgaben, die diese 'Transparenzreduzierungsvorgabe' verwenden, nicht!

Hier ein Ausschnitt einer PDF-Vorgabe mit aktivierter Umwandlung von Text in Pfade.

/FlattenerPreset <<
    /ClipComplexRegions false
    /ConvertStrokesToOutlines false
    /ConvertTextToOutlines true
    /GradientResolution 300
    /LineArtTextResolution 1200
    /PresetName (Text to Outlines)
    /PresetSelector /UseName
    /RasterVectorBalance 1
>>

Mit der Angabe with comet-options ... am Ende des Namens des PDF-Profiles können spezifische Einstellungen festgelegt werden, die vom Standard-PDF-Export abweichen. Zur Zeit wird 'lediglich' die Umwandlung von Buchstaben in Pfade unterstützt.

Bevor Sie diese Option verwenden, versuchen Sie bitte unbedingt, ob derStandard-Export mit Outlines nicht vollkommen ausreichend ist. Hier finden Sie Informationen zum Standard-Outlines-Export von PDFs.

Key Value Beschreibung
outlines no | 0
yes | 1
Alle Texte in Pfade umwandeln. Die Umwandlung der einzlenen Buchstaben im InDesign-Dokument in Pfade erfolgt temporär für den Export und wird nach dem Export wieder rückgängig gemacht. Für comet_pdf gibt es keine vergleichbare Funktion.

Verwende die aktuellen Einstellungen für den PDF-Export und erzeuge ein PDF, in dem alle Buchstaben durch Pfade ersetzt sind.

Parameter profile : "with comet-options outlines:yes"

Verwende das Basisprofil für den PDF-Export und erzeuge ein PDF, in dem alle Buchstaben durch Pfade ersetzt sind.

Parameter profile "[Basic Style] with comet-options outlines:yes"

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
destPath String oder char* - vollständiger Zielpfad und Name für den Export

0 oder "" : Pfad und Name (mit der Endung .pdf) des Dokumentes verwenden. Das geht natürlich nicht bei neuen ungesicherten Dokumenten!
profile String oder char* "" Name des PDF-Exportprofiles:
  • interactive# : Interaktives PDF mit den aktuellen Einstellungen des PDF-Exportes für interaktive PDFs
  • interactive#key1:value1;key2:value2;... : Interaktives PDF mit den Einstellungen der Key/Value-Paare
  • Nicht leer : PDF (Druck) mit dem gegebenen Profil
  • Leer oder 0 : PDF mit den aktuellen PDF-Exportoptionen für PDF (Druck)
  • Endung "with comet-options ..." : Export-Erweiterungen, siehe hier
scope int 2 Seiten oder Spreads exportieren?
1 : Spreads
2 : Seiten

Export der Comet-Notizen:
+4 : Export aller sichtbaren Comet-Notizen
+8 : Export aller Comet-Notizen

Siehe document::notes::set_pdf_prefs für Standardeinstellungen. Unter comet_pdf gibt es keine Notitzen-Sichtbarkeit, hier werden immer alle Notizen ins PDF eingefügt.

PDFs mit Comet-Notizen sollten keinesfalls als finale Druckvorlage verwendet werden!

Enthält das Dokument keine Comet-Notizen, die exportiert werden müssen, bleibt das PDF unverändert - wird also auch nicht mit Hilfe der PDFlib neu zsammengestellt.

Wird bei Illustrator ignoriert.
indexes List 0 Liste von 0-basierten Seiten- oder Spreadnummern. Ist die Liste leer, werden die folgenden Parameter als Zahlenangaben verwendet. Folgen auch keine weiteren Angaben, werden alle Seiten/Spreads exportiert

Beim PDF-Export der Comet-Notizen muß der Export bei Seite 1 beginnen und alle Folgeseiten in ihrer richtigen Reihenfolge enthalten. Andernfalls treten Fehler bei der Seitenzuordnung von Notizen auf. Seiten am Ende des Dokumentes dürfen im Export fehlen.

Wird bei Illustrator ignoriert.
... int, ... - Beliebige Anzahl von 0-basierten Seiten- oder Spreadnummern, die exportiert werden sollen. Die Angaben werden nur ausgewertet, wenn die Liste indexes 0 ist.

Beim PDF-Export der Comet-Notizen muß der Export bei Seite 1 beginnen und alle Folgeseiten in ihrer richtigen Reihenfolge enthalten. Andernfalls treten Fehler bei der Seitenzuordnung von Notizen auf. Seiten am Ende des Dokumentes dürfen im Export fehlen.

Wird bei Illustrator ignoriert.

PDF-Export verschiedener Dokumentseiten. Achten Sie insbesondere auf vollständige Seitenbereiche beim Export von Comet-Notizen (scope + 8).

int main ()
{
    document::pdf_export (0, "$DESKTOP/aaa/aaa_spreads.pdf", "", 1, 0);
    document::pdf_export (0, "$DESKTOP/aaa/aaa_spreads.pdf", "", 1 + 8, 0); // export all Comet notes too
    document::pdf_export (0, "$DESKTOP/aaa/aaa_spread_2_4.pdf", "", 1, 0, 2, 4);
    document::pdf_export (0, "$DESKTOP/aaa/aaa_spread_2_4.pdf", "", 1 + 8, 0, 2, 4); // possible wrong Comet notes!
    document::pdf_export (0, "$DESKTOP/aaa/aaa3.pdf", "", 2, 0, 3);
    document::pdf_export (0, "$DESKTOP/aaa/aaa1401.pdf", "", 2, 0, 1, 4, 0, 1);
    document::pdf_export (0, "$DESKTOP/aaa/aaa1702.pdf", "", 2, 0, 1, 7, 0, 2);
return 0; }

Exportiere alle ungeraden Seiten des aktuellen Dokumentes in ein PDF.

int main()
{
    List  pnums = list::alloc ();
    int   p;
for (p = 0; p < document::pages (); p += 2) { list::append (pnums, p); }
document::pdf_export (0, "$DESKTOP/aaa.pdf", "", 2, pnums);
return 0; }

Export der Comet-Notizen seit v4.1 R23334, 28. Jun 2018 Version 3.2 R 2234, 24. Dez. 2010

priint:comet InDesign® Plug-Ins, Illustrator

document::export_
document::print
document::notes::import
document::notes::set_pdf_prefs
document::notes::import
comet.CDocument.exportPDF

static int document::html_export(
  ItemRef docRef = 0,
  char* destPath = "",
  int target = 1,
  ItemRef itemToExport = 0,
  ...)

HTML-Export eines Dokumentes. Sie können wählen, ob die aktuelle Auswahl, ein bestimmter Rahmen, eine bestimmte Tabelle oder das gesamte Dokument exportiert werden soll.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

-8000 : Exportscript nicht gefunden. Das Hauptskript sollte in Ihrem InDesign® definiert sein. Überprüfen Sie, ob im Ordner Scripts von InDesign® der Unterordner Export As XHTML existiert und vollständig ist.
-8001 : Die Liste der zu exportierenden Dokumentobjekte ist leer
-8002 : Exportfehler
-8003 : Mind. ein verknüpftes Bild ist nicht vorhanden
-8004 : Mind. ein verknüpftes Bild ist veraltet
-8005 : Mind. ein eingebettetes Bild übersprungen. (Nur verknüpfte Bilder können expotiert werden.)
-8006 : Mind. ein verknüpfter Film ist nicht vorhanden.
-8007 : Nicht unterstützte Filme übersprungen. (Nur SWF-Filme werden unterstützt).
docRef ItemRef 0 Dokument das exportiert werden soll

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
destPath String oder char* "" Vollständiger Pfad für die html-Datei. Existiert die Datei, wird sie überschrieben
"" : Verwende den Pfad der InDesign® -Datei mit der Endung html
int target 1 Was soll exportiert werden?

0 : aktuelle Dokumentauswahl
1 : Gesamtes Dokument
2 : das folgenden Objekt (itemToExport)
itemToExport ItemRef 0 Gültige Rahmen- oder Tabellenreferenz. Ist ein gültiges Objekt angegeben, wird docRef ignoriert und das Dokument des Objektes verwendet.
⇨ Exportoptionen. Die Angaben sind jeweils Paare bestehend aus Wertname und Wert. Der Datentyp der Werte kann unterschiedlich sein.

Sie können eine beliebig lange Liste von Wertepaaren angeben.
"bulletListPolicy" int 0 0 : nicht sortierten Listen zuordnen
1 : in Text konvertieren
"numberedListPolicy" int 0 0 : sortierten Listen zuordnen
1 : statisch sortierten Listen zuordnen
2 : in Text konvertieren
"imageHandling" int 0 0 : Original kopieren
1 : Optimiert

2 : Mit Serverpfad verknüpfen
"serverImgPath" String oder char* "" Bei Verknüpfung der Bilder mit einem Serverpfad der Pfad zum Server.
Die Angaben $DESKTOP, ... werden für diesen String nicht ausgewertet.
"serverImgExtension" String oder char* "" Endung für Bilder, die mit einem Serverpfad verknüpft werden (z.B. ".jpg")
"imageConversion" int -1 Bildumwandlung
-1 : aktuelle Einstellung verwenden
0 : automatisch
1 : JPEG
1 : GIF
"gifpalette" int -1 Farbpalette GIF-Bilder
-1 : aktuelle Einstellung verwenden
0 : Flexibel (ohne Dithering)
1 : System (Mac)
2 : Web
3 : System (Windows)
"gifInterlaced" int -1 Interlace verwenden?
-1 : aktuelle Einstellung verwenden
0 : nein
1 : ja
"jpegQuality" int -1 Bildqualität
-1 : aktuelle Einstellung verwenden
0 : niedrig
1 : mittel
2 : hoch
3 : maximal
"jpegFormat" int -1 JPEG-Formatmethode
-1 : aktuelle Einstellung verwenden
0 : mehrere Durchgänge
1 : Grundlinie
"styleHandling" int 0 CSS-Optionen
0 : Leere CSS-Klassendeklarationen
1 : Kein CSS
2. Externe CSS-Datei
"styleSheet" String oder char* "" Vollstänger Pfad/URL zur Stylesheet-Datei
Die Angaben $DESKTOP, ... werden für diesen String nicht ausgewertet.
"linkToJavaScript" int 0 Mit externer JavaScript-Datei verknüpfen?
0 : nein
1 : ja
"javaScriptURL" String oder char* "" Vollstänger Pfad/URL zur JavaScript-Datei
Die Angaben $DESKTOP, ... werden für diesen String nicht ausgewertet.
"showErrors" int -1 Fehler zeigen?
0 : nein, nur den Fehlercode zurückgeben
1 : ja, in einem Alert zeigen

Exportiere die gesamte aktuelle Datei. Wenn Fehler auftreten, zeige eine Meldung.

int main ()
{
    int r;
r = document::html_export (0, "", 1, 0, "showErrors", 1); wlog ("", "#html export : %d\n", r);
return 0; }

Exportiere den aktuellen Rahmen.

int main ()
{
    int r;
r = document::html_export (0, "", 2, gFrame); wlog ("", "#html export : %d\n", r);
return 0; }

Exportiere die erste Tabelle des aktuellen Rahmens.

int main ()
{
    int 		r;
    Table		T	= table::alloc ();
table::get (T, 0, 0);
r = document::html_export (0, "", 2, T, "styleHandling", 2, "styleSheet", "/Users/paul/Desktop/xxx.css"); wlog ("", "#html export : %d\n", r);
return 0; }

Version 3.1 R 1819, 22.3.2010

priint:comet InDesign® Plug-Ins

static int document::jpeg(
  ItemRef docRef,
  char* destPath,
  char* destName,
  int aggregateSpreads,
  float resolution,
  float bleed,
  float greekBelow,
  int quality,
  int suppressNonPrintableFrames = 0)

Export aller Spreads oder Seiten eines Dokuments als JPEG Dateien.

Der Befehl exportiert wahlweise Spreads oder Einzelseiten, Auflösung und Qualität lassen sich im durch InDesign® vorgegebenen Rahmen fein abstimmen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef - Dokument, das exportiert werden sollAngabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
destPath String oder char* - Zielordner, wird ein Leerstring übergeben wird in den aktuellen Ordner des Dokuments exportiert.
destName String oder char* - Name der JPEG Dateien OHNE Erweiterung. Wird ein Leerstring übergeben, wird der Name des Dokuments verwendet.
aggregateSpreads int - 0: Ausgabe seitenweise, 1: Ausgabe von Spreads
resolution float 72.0 Auflösung in dpi
bleed float 0.0 Wieviel (in Punkt dpi) Rand soll mitgezeichnet werden?
greekBelow float 7.0 Unterhalb welcher Schriftgöße (in dpi) soll Schrift ausgegraut werden?
quality int - Verschiedene Angaben zur Ausgabe und JPEG-Qualität. Mögliche Werte sind:

Antialiasing für alle Objekte: kAntiAliasing

Voll auflösende Grafiken: kFullResGraphics

Graustufen: kDrawGray

Transparenz:
 kXPOff
 kXPLow
 kXPMedium
 kXPHigh
 kXPMaximum

JPEG Qualität (Die Angabe hat nur auf die Qualität der gesicherten Datei Einfluß, nicht auf die Qualität das Previews selbst.):
 kJPEGLowQuality
 kJPEGGoodQuality
 kJPEGExcellentQuality
 kJPEGGreatQuality

JPEG Encoding (Die Angabe hat nur auf die Qualität der gesicherten Datei Einfluß, nicht auf die Qualität das Previews selbst.):
 kJPEGBaseline
 kJPEGProgressive

Der Wert wird als Bitfeld (kXXX... + kXXX + ...) übergeben, Standard ist:
kAntiAliasing + kFullResGraphics + kXPHigh + kJPEGExcellentQuality + kJPEGBaseline
suppressNonPrintableFrames int 0 Sichtbarkeit nicht-druckbarer Rahmen im JPEG

0 Nicht-druckbare Rahmen bleiben im Bild sichtbar
1 Nicht-druckbare Rahmen erscheinen nicht im Bild
#include "internal/types.h"

Version 2.1 R989, 21. October 2008
Parameter suppressNonPrintableFrames seit v4.0.5 R14478, 12. Jan 2017

priint:comet InDesign® Plug-Ins

document::export_

static int document::duplicate(
  ItemRef docRef,
  char* destPath,
  int fileflag = 1)

Kopieren eines Dokumentes in eine neue Datei.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef - Dokument, das dupliziert werden soll

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
destPath String oder char* - Zielpfad für den Export. Existiert der Ordnerpfad nicht, wird er automatisch erzeugt.
fileflag int 1 Soll die Zieldatei überschrieben werden?
0 : Zieldatei nicht überschreiben
1 : Zieldatei darf überschrieben werden

Version 1.1.4
document::open
document::close
document::export_
comet.CDocument.saveAsCopy

priint:comet InDesign® Plug-Ins
Illustrator


static int document::force_redraw(ItemRef docRef = 0, int doAll = 0)

Neuzeichnen des Dokumentfensters erzwingen. Mit dem Befehl können wahlweise alle, ein einzelnes oder nur das aktuelle Dokument neugezeichnet werden. Der Befehl ist sinnvoll in Aufgaben, in denen Veränderungen am Dokument direkt bei der Ausführung des Skriptes gezeigt werden sollen. Wenn nur einzelne Texte oder Textteile neu gerendert werden sollen, können Sie die Funktion textmodel::force_redraw verwenden.

Unter comet_pdf hat der Aufruf keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Dokument gDocument oder 0: Dokument, mit dem das Skript gestartet wurde.

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
doAll int 0 0 : Nur das gegebene Dokument aktualisieren

1 : Alle geöffneten Dokumente aktualisieren. Der Parameter docRef bleibt in diesem Fall unberücksichtigt.

v4.2 R33733, 3. Nov 2023

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator
textmodel::force_redraw
comet.CDocument.redraw

static int document::print(
  ItemRef docRef,
  char* profile,
  char* path = "",
  int uiflag = 0,
  int fileflag = 1)

Drucken eines Dokumentes. Das Dokument kann wahlweise zu einem Drucker geschickt oder als Postscript-Datei abgelegt werden. Die Angabe der Druckeinstellungen wird über die Angabe einer Druckervorgabe festgelegt (Menü Datei:Druckvorgaben).

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef - Dokument, das gedruckt werden soll

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
profile String oder char* - Druckervoreinstellung. Die Angabe ist case sensitiv. Siehe InDesign® -Menü Datei:Druckvorgaben
Leerstring : Verwende die aktuellen Einstellungen des Drucken-Dialoges
path String oder char* "" Leer : Drucken oder Dateinachfrage
Sonst : Druckerausgabe als Postscriptdatei. Der Pfad bis zur angegebenen Datei wird automatisch erzeugt.
uiflag int 0 0 : Zeige alle Dialoge und Progressbalken
1 : Progressbalken nicht zeigen
2 : Warnungen werden nicht gezeigt
4 : Druckendialog nicht zeigen
8 : Dateiauswahldiallog nicht zeigen
0xFF : Nichts zeigen Die Optionen sind mit logischen OR (|) verknüpfbar.
fileflag int 1 Soll die Zieldatei überschrieben werden?
0 : Zieldatei nicht überschreiben
1 : Zieldatei darf überschrieben werden

Erzeuge aus der die aktuellen Datei ein Postscript-File, ohne irgendwelche Dialoge oder Progressbalken zu zeigen.

document::print (0, "", "/AAA/KKK/GGG/asdd.ps", 0xff);

Version 1.1.4

priint:comet InDesign® Plug-Ins

document::export_

static int document::move_pageitems(
  ItemRef docRef,
  int startPage,
  int pages,
  int deleteOld = 1,
  float leftpages_offset_x = 0.0,
  float leftpages_offset_y = 0.0,
  float rightpages_offset_x = 0.0,
  float rightpages_offset_y = 0.0)

Verschiebe den Inhalt von Dokumentseiten. Die Inhalte der Seiten können dabei mit einem seitenspeziefischen Offset platziert werden. Ist nichts anderes angegeben, wird der Inhalt der ersten Zielseite zuvor gelöscht.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef Item - Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
startPage int - 1-basierte Seitennummer, ab der die Inhalte verschoben werden sollen.
0 : Seite des ersten ausgewählten Rahmens oder der aktuellen Textauswahl
-1 : Aktuell angezeigte Seite des Dokumentes
pages int - Anzahl der Seiten, um die Inhalte verschoben werden sollen
<0 : Verschiebe nach vorne
0 : Keine Verschiebung auf andere Seite
>0 : Verschiebe nach hinten
deleteOld int 1 Soll der Inhalt der ersten Zielseite zuvor gelöscht werden?
1 : Löschen
0 : Nicht löschen
Der Parameter hat nur für die erste Seite Gültigkeit. Die folgenden Seiten sind durch die Verschiebung ihrer Inhalte ja schon leer.
leftpages_offset_x float 0.0 Wird ein Rahmen von einer rechten oder unisex Seite auf eine linke Seite verschoben, dann wird der Rahmen auf der neuen Seite um den gegebenen Offset nach links/rechts verschoben. Lag der Rahmen bereits auf einer linken Seite, wird kein Offset eingefügt.
leftpages_offset_y float 0.0 s.o., Verschiebung nach unten/oben
rightpages_offset_x float 0.0 Wird ein Rahmen von einer linken oder unisex Seite auf eine rechte Seite verschoben, dann wird der Rahmen auf der neuen Seite um den gegebenen Offset nach links/rechts verschoben. Lag der Rahmen bereits auf einer rechten Seite, wird kein Offset eingefügt.
rightpages_offset_y float 0.0 s.o., Verschiebung nach unten/oben

Verschiebe ab Seite 3 alle Dokumentrahmen um zwei Seiten nach hinten.

main ()
{
    document::move_pageitems (
     	0,	// Aktuelles Dokument
     	3,	// Ab Seite 3 ...
     	2,	// um zwei Seiten nach hinten
     	1,	// Letzte Seite des Dok. zuvor löschen
     	11.0, 22.0,
     	33.0, 44.0);
}

v3.0

priint:comet InDesign® Plug-Ins

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

Produktaufbau. Die Funktion ist eine der mächtigsten der gesamten Comet-Plugins. Die ausgewählten oder alle Produkte der Produktpalette werden in das aktuelle Dokument übernommen. Für die Positionierung werden die produktspezifischen Rasterplätze verwendet. Hat ein Produkt keinen Rasterplatz, kann ein Standardraster verwendet werden. Eingefügt wird das im Produkt hinterlegte Template. Ist dieses Template nicht definiert, kann ein Standardtemplate angegeben werden. Beim Einfügen wird darauf geachtet, dass Templates nicht über bestehende Seiteninhalte gelegt werden. Neue Seiten werden automatisch angelegt. Die dafür verwendete Musterseite kann ebenfalls im Produkt hinterlegt sein oder als Standard gegeben werden. Musterseiten-Elemente werden nicht automatisch lokalisiert. Zum Lokalisieren von Musterseiten-Rahmen auf den neu erzeugten Seiten verwenden sie die Funktion page::masteritems_load.

Die Funktion erfordert #include "internal/types.h"

Für den Import können drei verschiedene Algorithmen verwendet werden :
Beschreibung Neue Seiten Dokumentanpassung Flags
rasterorientiert
Suche im Raster nach dem nächsten freien Rasterplatz, mit den folgenden Eigenschaften
  • noch kein Dokumentinhalt an dieser Stelle
  • neuer Rahmen passt noch auf die Seite (bei kUseFullPage), auf die Seite inkl. Anschnitt (bei kUseBleed) in die Boundingbox um alle Rasterplätze (ohne kUseFullPage oder bei kUseBleed)
  • bei kCheckGridElementSize, ob der neue Rahmen in den Rasterplatz passt
Jeweils beim Erreichen des letzten Rasterplatzes oder wenn die Seite voll ist. Als Musterseite wird defaultMasterpage verwendet (oder vor dem Import erfragt). Ja. Alle Rahmen hinter den eingefügten oder gelöschten Produkten werden gemäß den aktuellen allgemeinen Platzierungsinfos neuen Rasterplätzen zugewiesen. Dieses Verhalten kann mit kDisableOptimizing abgeschaltet werden. kUseDefaultGrid

Optional
  • kDisableOptimizing
  • kUseFullPage/kUseBleed
  • kCheckGridElementSize
  • kCheckIfNotExists
  • kShowErrors
rasterfixiert
Benutze ein Standardraster. Unabhängig von bestehenden Dokumentrahmen werden die Produkte am jeweils nächsten Rasterplatz eingefügt. Enthält die Platzierungsinfo des Produktes ein Template, wird dieses Template zum Import verwendet, sonst das Template pageitemID. Fehlt auch das, wird die Template-ID vor dem Import erfragt.
Jeweils beim Erreichen des letzten Rasterplatzes. Als Musterseite wird defaultMasterpage verwendet (oder vor dem Import erfragt). Nein kUseDefaultGrid + kIntersectionsAllowed

Optional
  • kIgnoreIncompletePlacements
  • kCheckIfNotExists
  • kShowErrors
produktdefiniert
Benutze die Platzierungshinweise im jeweiligen Produkt.
Werden immer dann angelegt, wenn der Zielplatz im Dokument bereits belegt ist. Es wird die im Produkt angegebene Musterseite verwendet. Ist die nicht definiert, wird defaultMasterpage verwendet (oder vor dem Import erfragt). Nein kIntersectionsAllowed

Optional
  • kIgnoreIncompletePlacements
  • kAllowIncompletePlacements
  • kCheckIfNotExists
  • kShowErrors
Das Flag kAllowIncompletePlacements kann zu unerwarteten Ergebnissen führen. In diesem Fall wird bei unvollständigen Platzierungsinfos auf die übergebenen oder erfragten Standardwerte zurückgegriffen und mit diesen Importoptionen gearbeitet, also der nächste freie Rasterplatz im Standardraster verwendet und bestehende Seiteninhalte überlagert.

Vor dem Aufbau der Produkte kann ein Vorbereitungsskript ausgeführt werden (Parameter preScript). Dieses Skript dient insbesondere dazu, die Liste der aufzubauenden Produkte nachzubearbeiten. Das Skript wird ausgeführt, nachdem die Liste der einzufügenden Produkte zusammengestellt wurde.

Das Skript wird wie alle anderen Skripte in der Datenbanktabelle actions bzw. in der XML-Datei actions.xml definiert. Es muss die Klassennummer 14 (= Unterstützungsskript für den Produktaufbau) haben. Über den Umgang mit Produktplatzierungen und Seitenumbrüchen in diesem Skript siehe unter All about "Seitenumrüche".

Eine ausführliche Beschreibung finden Sie hier.

Vor und nach dem (vollständigen) Aufbau jedes Produktes kann jeweils ein Skript ausgeführt werden, mit dem Sie das Seitenelement für das nächste Produkt 'in letzter Sekunde' ändern können. Im Flussdiagramm werden diese Skripte (gelb hinterlegt) als PreRule und PostRule bezeichnet.

Die Skripte werden wie alle anderen Skripte in der Datenbanktabelle actions bzw. in der XML-Datei actions.xml definiert und müssen die Klassennummer 14 (= Unterstützungsskript für den Produktaufbau) haben. Über den Umgang mit Produktplatzierungen und Seitenumbrüchen in diesen Skripten siehe unter All about "Seitenumrüche".

Um das Skript für ein Produkt zu aktivieren, setzen Sie den Wert von kPreRuleid bzw. kPostRuleid auf die ID des entsprechenden Skriptes.

product::set (p, kPreRuleid, 3020);

Eine ausführliche Beschreibung finden Sie hier.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode. Für eine genauere Fehlerbeschreibung kann der Funktion ein allokierter String für die Fehlerbeschreibung übergeben werden, siehe Parameter errmess.
statement String oder char* "watched" Auswahl der Objekte (und Unterobjekte), die aufgebaut werden sollen, siehe hier.
flags int 0 Steuerung des Importes. Der Wert wird als Summe (Bitfeld) der folgenden Konstanten angegeben, also zum Beispiel kUseDefaultGrid + kUseFullPage. Es gibt drei unterschiedliche Importalgorithmen, siehe dazu die obige Tabelle.

kUseDefaultGrid : Ignoriere die in den Produkten hinterlegten Rasterangaben und verwende das Standardraster (siehe Parameter grid).

kIgnoreIncompletePlacements : Produkte mit unvollstandigen Angaben zur Platzierung (Raster und/oder Template) werden nicht ins Dokument eingefügt.

kAllowIncompletePlacements : Sollen die Produktplatzierungen verwendet werden (kUseDefaultGrid nicht gesetzt), wird vor dem Import geprüft, ob alle Angaben vollständig sind. Ist dieses Bit gesetzt, werden unvollständige Angaben erlaubt und die Standardangaben verwendet.

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

kIntersectionsAllowed : Beim Einfügen von Produkten mit einem Standardraster wird geprüft, dass keine bestehenden Seiteninhalte überschnitten werden und dass das neue Produkt auch auf die Seite passt. Diese Prüfung kann mit dem Flag kIntersectionsAllowed verhindert werden, dann wird ganz stur immer der nächste freie Rasterplatz verwendet. (s.a. kUseFullPage, kUseBleed, kCheckGridElementSize

kCheckGridElementSize : Von den Rasterplätzen werden normalerweise nur die Positionen verwendet. Mit dem Flag kann zusätzlich geprüft werden, ob der neue Rahmen auch in den Rasterplatz passt. Nur aktiv, wenn Überschneidungen verboten sind (kIntersectionsAllowed nicht an).

kUseFullPage : Beim Prüfen der bestehenden Seiteninhalte wird auch geprüft, ob das neue Produkt überhaupt noch auf die Seite passt. Im Normalfall wird dabei geprüft, ob das Produkt noch in die Boundingbox um alle Rasterplätze passt. Mit dem Flag kann erzwungen werden, dass statt dessen die Größe der aktuellen Dokumentseite inkl. ihrer Druckränder verwendet wird. Nur aktiv, wenn Überschneidungen verboten sind (kIntersectionsAllowed nicht an).

kUseBleed : wie kUseFullPage, aber der Anschnitt der Seite (Bleed) wird der Seitengröße zugeschlagen

kPreferDefaultPageItem : Verwende das Template pageitemID für alle Produkte und ignoriere das in den Produkten gegebene Template.

kShowErrors : Auftretende Fehler werden automatisch in einem Fehlerdialog gezeigt.
errmess String oder char* 0 Zeigt die Variable auf einen allokierten String (z.B. vom Typ char[8192] oder Typ String), kann hier eine Fehlermeldung erhalten werden.
⇨Mit den folgenden Angaben werden die Startseite und die Ebene für den Import angegeben.
baseFrame ItemRef 0 Die Seite und die Ebene, auf der sich der Rahmen im Dokument befindet werden als Startposition für den Import verwendet. Ist die Angaben leer, werden diese Angaben aus pageNum und layerName ermittelt.
removeFrame int 0 Soll der Startrahmen aus dem Dokument entfernt werden? 0 : Nein, Rahmen erhalten
sonst : Rahmen löschen
pageNum int -1 1-basierte Seitennummer, ab der eingfügt werden soll. Der Wert wird nur dann verwendet, wenn baseFrame = 0 ist.
-1 : Verwende die aktuelle Seite

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

layerName String oder char* - Name der Zielebene für den Import. Der Wert wird nur dann verwendet, wenn baseFrame = 0 ist.
0 oder "" : Aktuelle Ebene
⇨Angaben zu Standardraster, -template und --Musterseite. Die Werte werden nur angewendet, wenn das Flag kUseDefaultGrid gesetzt ist oder wenn das Flag kAllowIncompletePlacements gesetzt ist und ein einzufügendes Produkt keine vollständige Platzierungsinformation hat.
Vor dem Einfügen der Produkte wird ermittelt, ob mindestens ein Produkt die Standardwerte benötigt. Wenn ja, wird geprüft, ob die Funktion alle Standardwerte übergeben bekommen hat. Fehlt mindestens einer dieser Werte, wird automatisch ein Dialog geöffnet, der die Werte fehlenden erfragt.
defaultMasterpage String oder char* 0 Name der Musterseite, die verwendet werden soll, wenn neue Seiten ins Dokument eingefügt werden müssen. Sollen in einseitigen Dokumenten für linke und rechte Seiten unterschiedliche Musterseiten verwendet werden, werden beide Musterseitennamen in einfache Anführungszeichen und durch Komma getrennt angegeben.
Beispiel 1 : "A-Musterseite"
Beispiel 2 : "'A-Musterseite-li', ''A-Musterseite-re'"
gridID int 0 Standardraster. Zum Einfügen werden der Reihenfolge nach (sortiert nach ihrer ID) die Stellplätze des Rasters verwendet.
pageitemID int 0 Standardtemplate zum Einfügen der Produkte. Enthält ein Produkt eine davon abweichende Angabe zum Template, wird dieses Template verwendet. Dabei wird darauf geachtet, dass das Template zum Typ der Zielseite passt und bei Bedarf auf ein Ausweichtemplate zurückgegriffen, siehe dazu in der Beschreibung der Palette 'Templates'.
anchor int 0 Gesperrte Seitenfläche. Die Angabe gilt nur für die Startseite des Importes, alle folgenden Seiten werden ja neu angelegt und sind leer. Als Vergleichsgrenzen wird der Rahmen baseFrame verwendet. Ist diese Angabe leer, können die Grenzen in den folgenden Parametern left, ... gegeben werden.
-1 : Dialog zur Nachfrage öffnen 0 : Ganze Seite zum Einfügen verwenden 1 : Unter dem Rahmen beginnen
2 : Neben dem Rahmen beginnen
3 : Unter und neben dem Rahmen darf eingefügt werden
⇨Angaben zur Positionierung auf der Startseite. Die Angaben gelten nur für die Startseite und nur für Objekte, die mit dem Standardraster eingefügt werden. Es kann fetsgelegt werden, ob erst neben und/oder unter dem gegebenen Rahmen eingefügt werden soll. In diesen Fällen werden nur Rasterplätze ausgewählt, deren Rahmen den gegebenen Rahmen nicht überschneiden.
left float 0.0 Bei der Verwendung eines Standardrasters muss ermittelt werden, welches der erste verwendete Rasterplatz sein soll. Das wird über einen Seitenrahmen und eine Ankerposition festgelegt. left legt die linke Seite des Rahmens fest.
top float 0.0 ... obere Seite des Rahmens
right float 0.0 ... rechte Seite des Rahmens
bottom float 0.0 ... untere Seite des Rahmens
purgeSequence int 0 Produkte jeweils in eigener Sequenz bearbeiten

0 - Gesamter Aufbau in einer Sequenz. Der Aufbau kann mit einem Undo rückgängig gemacht werden. Größere Importe werden meist durch einen Dialog unterbrochen, der nutzlos mitteilt, dass die Sequenz zu groß ist, und deshalb nicht rückgängig gemacht werden kann.
1 - Jedes Produkt wird in einer eigenen "gepurgten" Sequenz (siehe purge_sequence) bearbeitet. Beim Undo wird jedes Produkt einzeln wieder aus dem Dokument entfernt. Bei "clean" hat der Parameter keine Bedeutung.
sequName String oder char* "Aufbau %d. Produkt" Name einer einzelnen Importsequenz, wird nur bei purgeSequence != 0 verwendet. Die Angabe muss genau ein %d enthalten, das durch den aktuellen Importzähler ersetzt wird, also etwa "Import %d. Produkt". Ist die Angabe leer, wird der Defaultstring verwendet.
preScript int kNoRule ID des Vorbereitungsskriptes. Das Skript wird ausgeführt, nachdem die Liste der zu importierenden Produkte ermittelt worden ist und kann dazu verwendet werden, die Produktliste zu bearbeiten. Siehe dazu auch product::set, product::clone, productlist und unter dem Absatz Skriptunterstützung.

kNoRule - Kein Skript ausführen
Sonst ID des Skriptes, Skriptaufbau siehe hier.
#include "internal/types.h"
#include "internal/products.h"

Baue über ein Palettenskript alle mit einem Auge markierten Produkte, die ein Oberprodukt haben, im Dokument auf.

#include "internal/types.h"
int main () { char errmess[512]; int result;
if (gRun != 1) return 0;
result = document::build_products (   "watched id2 > 0",// Nur Unterprodukte mit Auge   kAllowIncompletePlacements,   errmess, // Fehlernachricht
  // Zielseite und -ebene. Ist baseFrame definiert,   // werden Seitennummer und Ebene ignoriert   gFrame,   true, // Rahmen löschen   -1, // Seitennummer   "", // Ebene
  // Platzierungshinweise   // Ist einer der Werte undefiniert, wird   // ein Dialog geöffnet, der den Wert   // erfragt.   "A-Musterseite",// Musterseite   2, // Raster ID   1, // Template ID   0); // Anker (undef = -1)
if (result && result != -1199)   showmessage ("%d : %s", result, errmess);
return 0; }

Um alle Produkte mit Oberprodukt aufzubauen, die in der Liste zu sehen sind, muss im obigen nur das Statement geändert werden.

list id2 > 0 and level = 1

Und zur Demonstration, wie kurz die Anweisung sein kann, noch mal ohne Kommentare.

int main ()
{
    char		errmess[512];
    int			result;
if (gRun != 1) return 0;
result = document::build_products (   "watched id2 > 0",   kAllowIncompletePlacements   errmess);
if (result && result != -1199) showmessage ("%d : %s", result, errmess);
return 0; }

Version 1.2.1 (19. August 2005)
firstPageType seit Version 1.3.1, R115

priint:comet InDesign® Plug-Ins

datapool::get_products
page::masteritems_load
textmodel::insert_products

static int document::get_firstpagetype(ItemRef docRef = 0)

Ermittle ob die die erste Dokumentseite eine linke, mittlere oder rechte Seite ist. Der Befehl liefert nur bei einseitigen Dokumenten ein Ergebnis, sonst wird immer 1 zurückgegeben.

Name Typ Default Beschreibung
Return int   kLeftPage (0) : linke Seite
kRightPage (2) : rechte Seite
1 : kein oder doppleseitiges Dokument
docRef ItemRef 0 Dokument, von dessen erster Seite der Typ ermittelt werden soll

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
#include "internal/types.h"

Version 1.3.1 (19. Januar 2006)

priint:comet InDesign® Plug-Ins

document::build_products
document::place_items
document::set_firstpagetype

static int document::set_firstpagetype(int typ, ItemRef docRef = 0)

Lege fest, ob die erste Dokumentseiten eine linke oder eine rechte Seite ist. Das Festlegen des Types der ersten Seite geht nur in einseitigen Dokumente. Der Seitentyp wird benötig, um feststellen zu können, welchen Seitentyp eine beliebige Dokumentseite hat.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
typ int - kLeftPage (0) : linke Seite
kRightPage (2) : rechte Seite
docRef ItemRef 0 Dokument, von dessen erster Seite der Typ geändert werden soll

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
#include "internal/types.h"

Version 1.3.1 (19. Januar 2006)

priint:comet InDesign® Plug-Ins

document::get_firstpagetype
document::build_products
document::place_items

static int document::split(
  ItemRef docRef = 0,
  char* postfix = "",
  char* basename = "",
  char* destPath = "")

Trennen eines Dokumentes in Einzelseiten. Das angegebene Dokument wird in einzelne Teildokumente zerlegt. Jedes Teildokument enthält eine Seite des Originales. Die Teildokumente enthalten jeweils alle Musterseiten, Stilinformationen, Farben, usw. des Originales. Linke Seiten bleiben linke Seiten und rechte Seiten rechte Seiten.

Existieren im Zielordner Seitendokumente mit gleichem Namen, werden sie gelöscht!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
postfix String oder char* "" Die Namen der Seitendokumente werden mit einem Postfix und der Seitennummer versehen, also etwa myfile_1.indd, myfile_2.indd, ... . Die Seitennummer wird automatisch vergeben, was zwischen Name und Nummer steht, können Sie bestimmen.
basename String oder char* "" Basisname der Seitendokumente

"" : Verwende den Namen der Originaldatei
destPath String oder char* "" Zielpfad, an dem die Seitendokumente abgelegt werden sollen. Existiert dieser Ordner nicht wird er angelegt.

"" : Ordner des Originaldokumentes

Version 1.3.3 (P/R 59)

priint:comet InDesign® Plug-Ins

document::concat

static int document::concat(char* dest, char* src)

Anfügen der Seiten eines Dokumentes an ein anderes. Alle Seiten des zweiten Dokumentes werden an das erste Dokument angefügt. Musterseiten, Stilinformationen, Farben usw. werden nicht übernommen.

Beim Anfügen der Dokumentseiten können Spreads getrennt werden. Magnete zwischen so getrennten Seiten gehen dabei verloren.

Sichtbare Comet-Notizen werden übernommen. Unsichtbare Comet-Notizen werden ignoriert.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
dest String oder char* - Pfad des Dokumentes, an das angefügt werden soll. Die Datei muss nicht in InDesign® geöffnet sein.

"" : aktuelles InDesign® -Dokument
src String oder char* - Pfad der InDesign® -Datei, die angefügt werden soll

Version 1.3.3 (P/R 59)

priint:comet InDesign® Plug-Ins

document::split

static int (
  char* firstPath,
  char* newname = "",
  char* destpath = "",
  long lastPage = -1)

DEPRECATED! Verwenden Sie dafür die Funktionen file::get_nth und document::concat.

Name Typ Default Beschreibung
Return int   -1198

Verwenden Sie dafür die Funktionen file::get_nth und document::concat.

static int document::allow_shuffle(ItemRef docRef = 0, int allow = 1)

Neue Seitenanorndung in einem Dokument zulassen oder verbieten

Name Typ Default Beschreibung
Return int   Fehlercode or 0
docRef ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
allow int 1 Neue Seitenanorndung zulassen oder verbieten

1 : Zulassen
0 : Verbieten

Version 1.4 (R 334), 11. Apr. 2007

priint:comet InDesign® Plug-Ins

static int document::justify_text(
  ItemRef docRef,
  int page,
  char layerName,
  int keepLast,
  char* style1,
  ...)

Vertikaler Keil. Der vertikale Keil vergrößert in den Rahmen einer Seite in einer Liste gegebener Absatzstile den "Abstand vor" so, dass der Text den Rahmen jeweils vollständig ausfüllt. Die Absatzstile können zu unterschiedlichen Anteilen am vertikalen Keil beteiligt sein.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
page int - 1-basierte Seitenangabe im Dokument, deren Textrahmen bearbeitet werden sollen

-1 : Alle Dokumentseiten
layerName String oder char* - Einschränkung der Bearbeitung auf eine Ebene

"" : alle Ebenen
"--visible--" : nur sichtbare Ebenen
"--active--" : nur die aktive Ebene
sonst : Gültiger Ebenenname
keepLast int - 1 : Der letzte Rahmen einer Textverkettung wird unverändert gelassen

0 : Letzten Rahmen auch bearbeiten
style1, percent1, ... String oder char*, float, ... - Beliebig lange Liste von jeweils einem Absatzstil-Namen und einer Prozentangabe (als float). Die Prozentangabe legt fest, zu welchem Anteil ein Absatzstil am vertikalen Keil beteiligt sein soll. Mit Angabe 0.0 werden die Abstände gleichmäßig verteilt. Die Summe der Prozente darf nicht größer als 100.0 sein.

0 oder "" : Beliebiger Absatzstil

Hier eine Testdatei

 

Version 1.4 (R 339), 2. Mai 2007

priint:comet InDesign® Plug-Ins

document::justify_text_reset
textmodel::justify

static int document::justify_text_reset(
  ItemRef docRef,
  int page,
  char* layerName,
  int keepLast,
  char* style1,
  ...)

Vertikalen Keil zurücksetzen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
page int - 1-basierte Seitenangabe im Dokument, deren Textrahmen bearbeitet werden sollen

-1 : Alle Dokumentseiten
layerName String oder char* - Einschränkung der Bearbeitung auf eine Ebene

"" : alle Ebenen
"--visible--" : nur sichtbare Ebenen
"--active--" : nur die aktive Ebene
sonst : Gültiger Ebenenname
keepLast int - 1 : Der letzte Rahmen einer Textverkettung wird unverändert gelassen

0 : Letzten Rahmen auch bearbeiten
style1, ... String oder char*, ... - Liste von Paragraphenstilen, deren "Abstand vor" wieder auf den Wert zurückgesetzt werden soll, den die Stildefinition enthält

Hier eine Testdatei

 

Version 1.4 (R 339), 2. Mai 2007

priint:comet InDesign® Plug-Ins

document::justify_text
textmodel::justify_reset

static int document::remove_redundant_tags(
  ItemRef docRef = 0,
  int page = -1,
  char* layerName = "")

Textplatzhalter aufräumen. Werden in einem Textplatzhalter Textattribute (Font, Farbe, Größe, ...) geändert, werden die Platzhalter intern in verschiedende sogenannte Runs getrennt. Die Comet-Plugins stellen sicher, dass alle zusammengehörigen Runs richtig erkannt werden. Für Templates und Musterdokumente ist es aus Performancegründen aber sinnvoll, diese redundanten Runs wieder zu verbinden.

Über das Menü Plug-ins -> Platzhalter -> Platzhalter vor dem Sichern aufräumen (Zusatzmodule statt Plug-ins in Versionen vor InDesign® 2025)können die redundanten Platzhalter im gesamten Dokument auch automatisch entfernt werden.

Die Funktion beseitigt in allen Textrahmen des Dokumentes redundante Textplatzhalter. Die Bearbeitung kann dabei auf eine Seite und bestimmte Ebenen eingeschränkt werden. Es wird aber empfohlen, die Platzhalter im gesamten Dokument zu bereinigen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
page int -1 1-basierte Seitenangabe im Dokument, deren Textrahmen bearbeitet werden sollen

-1 : Alle Dokumentseiten
layerName String oder char* "" Einschränkung der Bearbeitung auf eine Ebene

"" : alle Ebenen
"--visible--" : nur sichtbare Ebenen
"--active--" : nur die aktive Ebene
sonst : Gültiger Ebenenname

Version 1.4.1 R417, 24. Jul 2007

priint:comet InDesign® Plug-Ins

textmodel::remove_redundant_tags
textmodel::gremove_redundant_tags
frame::remove_redundant_tags

static int document::table_of_content(
  ItemRef frameRef,
  char* styleName,
  int update_all = 1)

Einfügen oder Aktualisieren von Inhaltsverzeichnissen. Enthält das Dokument Texte mit Overset, wird ein Warndialog gezeigt, der erfragt, ob die im Overset befindlichen Textteile bei der Erstellung des Inhaltsverzeichnises beachtet werden sollen oder nicht. Dieser Dialog kann nicht verhindert werden. Hier ein Ausschnitt aus der Adobe-Entwicklerdoku : Set the include overset flag to determine if we should include table of content entries in overset. In fact, the include overset flag is set in runtime through user's input(a warning dialog). Currently, the function is only used for scripting to control the default behavior if we should include overset or not.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
frameRef ItemRef - Zielrahmen

!= 0 : Einfügen oder Aktualieren eines Inhaltsverzeichnisse in diesem Rahmen. Ist der Rahmen kein Textrahmen, wird versucht, den Rahmen in einen Textrahmen zu konvertieren. Enthält der Rahmen Text, wird dieser Text entfernt.

0 : Aktualisiere alle Inhaltsverzeichnisse mit dem Namen styleName des aktuellen Dokumentes. (update_all muss in diesem Fall den Wert 1 haben!)
styleName String oder char* "" Name eines existierenden Inhaltsverzeichnis-Stiles

"" : Benutze den Standardstil, der im Dokument angegeben ist
update_all int 1 Wenn sich im Dokument noch weitere Inhaltsverzeichnisse des gegebenen Stiles befinden, wie soll verfahren werden?

1 : ebenfalls aktualisieren
0 : unverändert lassen

Ersetze den Inhalt des aktuellen Skriptrahmens durch das Inhaltsverzeichnis "Mein Inhalt". Inhaltsverzeichnisse gleichen Namens im Dokument bleiben unverändert.

int main ()
{
    int 		res;
res = document::table_of_content (gFrame, "Mein Inhalt", 0); wlog ("", "# table_of_content returns %s\n", serror (res));
return 0; }

Version 1.4.2 R491, 26. Okt 2007

priint:comet InDesign® Plug-Ins

static int document::adapt_many(char* xmlControlFile = 0)

Seitenadaptionen für das aktuelle ausführen. Die Adaptionen sind in einer Steuerdatei gegeben. Ist keine Steuerdatei gegeben, wird sie erfragt. Für die Funktion muss das Plugin PageAdapter installiert und lizensiert sein.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
xmlControlFile String oder char* "" vollständiger Pfad zur Steuerdatei.

"" : Automatische Nachfrage

Hier ein Beispiel einer gültigen Steuerdatei. Folgende Formatangaben sind erlaubt : A3, A4, A5, B5, CD, US-Letter, US-Long, Tabloid, US-Letter Half, US-Long Half.

<?xml version="1.0" encoding="utf-8"?>
<adaptions
 	basename 	= ""
 	folder 		= "$DESKTOP/adapt/ok"
 	errfolder 	= "$DESKTOP/adapt/err">
 	<adaption>
 		<format>A4</format>
 		<width></width>
 		<height></height>
 		<name></name>
 	</adaption>
 	<adaption>
 		<format>A5</format>
 		<width></width>
 		<height></height>
 		<name></name>
 	</adaption>
 	<adaption>
 		<format>A3</format>
 		<width></width>
 		<height></height>
 		<name></name>
 	</adaption>
</adaptions>

Version 1.4.2, R 504, 12. Nov. 2007

priint:comet InDesign® Plug-Ins

document::adapt

static int document::adapt(
  float width,
  float height,
  char* destPath = 0,
  char* destName = 0)

Führe für das aktuelle Dokument eine Seitenadaption durch. Das Dokument selbst bleibt dabei unverändert. Für die Funktion muss das Plugin PageAdapter installiert und lizensiert sein.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
width, height float - Größenangaben für die adaptierte Datei in Punkten.
destPath String oder char* "" Zielpfad für die Adaption

"" : Verwende den selben Ordner wie die aktuelle Datei
destName String oder char* "" Name der Adaption (ohne Kürzel .indd)

"" : Namen der aktuellen Datei plus ein "_wxh" verwenden

AppleScript zum Adaptieren eines Dokumentes.

tell application "Adobe InDesign® CS5"
 	set d to document 1
 	tell d
 		adapt width 333.3 height 444.4
 	end tell
end tell

Version 1.4.2, R 504, 12. Nov. 2007

priint:comet InDesign® Plug-Ins

document::adapt_many

static int document::adapt_self(float width, float height)

Führe für das aktuelle Dokument eine Seitenadaption durch. Für die Funktion muss das Plugin PageAdapter installiert und lizensiert sein.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
width, height float - Größenangaben für die adaptierte Datei in Punkten.

Version 2.1, R 1090, 17. Dez. 2008
document::adapt
document::resize

static int document::start_stamping(
  int actionID,
  ItemRef origin,
  ItemList designated = 0,
  int autoClose = 0)

Starte das 'Stempeln' von Rahmen. Als Stempeln wird ein Prozess bezeichnet, der ausgehend von einem ersten Rahmen, dem sog. origin, 'irgendetwas' mit den Rahmen tut, die in der Folge angeklickt werden. Die Stempelaktion kann beliebig sein und sich auf die Anzahl der geklickten Rahmen und/oder auf den Originalrahmen beziehen.

Stempelaktionen können ausschließlich aus der Palette Front Row gestartet werden!

Auf Grund eines InDesign-Fehlers können Stempelaktionen zur Zeit leider nicht als ein Schritt rückgängig gemacht werden. Um die Aktionen rückgängig zu machen, müssen daher leider entsprechend viele Undos gemacht werden. Wir versuchen, dieses Verhalten so schnell wie möglich zu korrigieren - aber das liegt nicht alleine aus uns.

Stempel-Skripte müssen mit dem folgenden Pragma und in genau dieser Schreibweise eingeleitet werden:

#pragma _stamp_

Das Stempeln unterteilt sich in drei Unteraktionen:

  1. Start : document::start_stamping
  2. Stempelaktion : Diese Aktion kann beliebig oft aufgerufen werden.
  3. Beenden : Automatisch oder mit document::stop_stamping

In der Regel können alle drei Schritte in einem Skript implementiert werden. Anhand der Existenz globlaler Variablen (s.u.) können Sie mit declared unterscheiden, ob der Stempel gestartet oder ausgeführt werden soll. In allen Fällen muß der Stempel entweder automatisch oder mit document::stop_stamping 'irgendwann' beendet werden! Für das Beenden des Stempels eignen sich der Zählerstand gCounter oder z.B. die CMD-Taste (system::cmdkey).

Das Stempeln kann mit designated auf eine beliebige Anzahl von Rahmen beschränkt werden. In diesem Fall werden Klicks auf andere Rahmen ignoriert und das Stempeln kann autmatisch abgebrochen werden, wenn der letzte Rahmen bearbeitet wurde. Setzen Sie dazu den Parameter autoClose auf den Wert 1.

Ist eine Rahmenliste gegeben, werden nach dem Stempel-Start alle beteiligten Rahmen mit einer entsprechenden roten Sequenznummer versehen. Die beim Klicken vergebenen neuen Sequenznummern werden in blau hinter der alten Nummerierung angezeigt. Zum Anzeigen der Sequenznummern muß die Anzeige der Nägel und Magnete im Menü Dokument-Kontext -> Nägel und Magneten -> Zeigen aktiviert sein. Hier ein Screenshot:

Zum Korrigieren der bereits vergebenen Stempel-Reihenfolge klicken Sie einafch in einen bereits blau markierten Rahmen. Die Sequenz und der Zähler gCounter beginnen dann automatisch wieder an Stelle dieses Rahmens und allen Rahmen mit einer höheren blauen Nummer wird ihre blaue Nummer wieder entzogen.

Ohne oder mit leerer Rahmenliste werden keine Sequenznummern gezeigt.

Folgende globale Variablen sind beim Ausführen der Stempel-Aktionen in Schritt 2 und 3 (aber nicht in Schritt 1) definiert.
Name; Type Beschreibung
gCounter int*

0-basierte Zählnummer des Stempels. Die Variable ist ein Zeiger, Sie können die Zählummer also im Skript ändern. Den Inhalt erhalten Sie mit *gCounter.

gOriginalFrame ItemRef Der im Parameter origin von document::start_stamping übergebene erste Rahmen der Stempelaktion.

Name Typ Default Beschreibung
Return int   0 : Kein Fehler und weitermachen
1 : Stempeln abbrechen
actionID int - ID der auszuführenden Aktion.

-1 : Aktuelles Skript
origin ItemRef - Originalrahmen. Üblicherweise ist das der aktuelle Scriptrahmen gFrame.
designated ItemList 0 Liste der Rahmen, die gestempelt werden können. Die Liste sollte den Rahmen origin enthalten. Die Rahmen werden in der Reihenfolge der Liste mit einer rot eingekreisten Sequenznummer versehen.

0 : Alle Rahmen dürfen bearbeitet werden. In diesem Fall erhalten die Rahmen keine Sequenznummern.
autoClose int 0 Soll das Stempeln automatisch beendet werden?

1 : Ja. Das Stempeln wird automatisch beendet, wenn der Zähler gCounter die Länge der Liste designated erreicht hat. Ist die Liste designated leer, wird die Option ignoriert. Hinweis : Durch Hochsetzen des Zählers oder mit einem Returnwert > 0 können Sie das Stempeln unabhängig von dieser Option auch eher beenden.

sonst : Nicht automatisch beenden

Das Skript nimmt die Farbe des ersten Rahmens und verringert in allen Folgerahmen den Grünanteil um 20. Hier ein Vorher/Nachher-Screenshot, bei dem zuerst im grünen Rahmen das Stempeln gestartet wurd und dann der Reihe nach die blauen Rahmen geklickt wurden.

#pragma _stamp_
#include "internal/types.h" #include "internal/text.h"
int main () { float c1, c2, c3, c4;
if (system::cmdkey ()) { document::stop_stamping (); beep (); return 1; }
if (!declared ("gCounter")) { document::start_stamping (-1, gFrame); return 0; }
if (*gCounter > 0) { frame::get_color (gOriginalFrame, 0, 0, &c1, &c2, &c3, &c4); frame::color_rgb (gFrame, (int)(c1), (int)(c2) - (20 * *gCounter), (int)(c3)); }
return 0; }

Das nächste Beispiel ist etwas komplexer: Es werden alle Rahmen der aktuellen Seite (oder bei linken Seiten alle Rahmen des Spreads) gesucht, die einen bestimmten Platzhalter (im Beispiel der Platzhalter 10) enthalten. Die gefundenen Rahmen werden seitenweise sortiert nach ihrem Platzhalter-Präfix (der in diesem Fall eine Zahl enthalten sollte). Mit dieser Rahmenliste wird das Stempeln gestartet. Mit jedem Klick in einen Rahmen dieser Liste bekommt der Platzhalter jetzt die aktuelle Sequenznummer (plus 1, weil 0-basiert!) als Präfix. Ist der letzte Rahmen bearbeitet, wird das Stempeln automatisch beendet.

#pragma _stamp_
/* @@ICONID 533 @@SEQ 1 @@LABEL Leitziffern @@HELP Your Help Text */
#include "internal/types.h" #include "internal/text.h"
//***************************************************************************
int stPlaceholderID = 10;
//***************************************************************************
// Sort all links by their prefixes // int sort_links (Link a, Link b) { int result = 0; int pga = page::get (link::frame (a)); int pgb = page::get (link::frame (b)); String prea = string::alloc (); String preb = string::alloc ();
if (pga == pgb) { link::prefix (a, prea); link::prefix (b, preb); if (string::compare (preb, prea) < 0) result = 1; } else { if (pgb < pga) result = 1; }
string::release (prea); string::release (preb); return result; }
//***************************************************************************
// Get all frames of the page // If we are on a left page, also add the frames of the right page. // ItemList get_frames (ItemRef fr) { int pg = page::get (fr); ItemList pageFrames = itemlist::pageframes (pg, 1); ItemList pageFrames2 = 0; LinkList lli = linklist::alloc (0); Link li; ItemRef lif;
itemlist::sort (pageFrames, kSortRowwise); if (pg % 2 == 0) { pageFrames2 = itemlist::pageframes (pg + 1, 1); itemlist::sort (pageFrames2, kSortRowwise); itemlist::appendlist (pageFrames, pageFrames2); itemlist::release (pageFrames2); }
linklist::collect_any (lli, pageFrames, "--list--", kFirstIgnore, kSortNo, stPlaceholderID); linklist::sort (lli, sort_links); itemlist::clear (pageFrames); li = linklist::first (lli);
while (li) { lif = link::frame (li); if (itemlist::get_pos (pageFrames, lif) < 0) { itemlist::append (pageFrames, lif); } li = linklist::next (lli); } linklist::release (lli);
return pageFrames; }
//***************************************************************************
int find_placeholder (ItemRef fr, int pid) { int result = -1; int pos = 0; int len, phid;
while (pos < textmodel::fulllength (fr)) { len = 0; textmodel::get_placeholder (fr, pos, &pos, &len, &phid); if (len > 0) { if (phid == pid) { result = pos; break; } pos = pos + len; } else { pos = pos + 1; } }
return result; }
//***************************************************************************
// Main function // int main () { char txt [512]; ItemList pageFrames = 0; int pos;
// Emergency exit if (system::cmdkey ()) { document::stop_stamping (); wlog ("", "# Stamping Finished\n"); beep (); return 1; }
if (!declared ("gCounter")) { pageFrames = get_frames (gFrame); document::start_stamping (-1, gFrame, pageFrames, 1); itemlist::release (pageFrames); wlog ("", "# Start stamping\n"); return 0; }
pos = find_placeholder (gFrame, stPlaceholderID); if (pos < 0) return 0;
sprintf (txt, "%d | ", *gCounter + 1);
placeholder::change_tags (gFrame, 0, "Prefix+Apply", txt, kTextPlaceholder, pos, 1); placeholder::load (gFrame, 0, pos, 1);
return 0; }

v4.2 R30710, 11. Mai 2022

priint:comet InDesign® Plug-Ins

document::stop_stamping

static int document::stop_stamping()

Beende das Stempeln von Rahmen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

v4.2 R30710, 11. Mai 2022

priint:comet InDesign® Plug-Ins

document::start_stamping

static int document::resize(float width, float height)

Ändere die Seitengröße des aktuellen Dokuments

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
width, height float - neue Breite / Höhe des Dokuments

Version 2.1, R 1090, 17. Dez. 2008

priint:comet InDesign® Plug-Ins

document::adapt_self

static int document::getid(
  ItemRef docRef,
  int* id1,
  int* id2 = 0,
  int* id3 = 0,
  char* stringid = 0)

Hole die Comet-ID eines Dokumentes.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
id1 int* - Variable für die ID1 der Dokument-ID
id2 int* 0 Variable für die ID2 der Dokument-ID, darf 0 sein
id3 int* 0 Variable für die ID3 der Dokument-ID, darf 0 sein
stringid String oder char* 0 Variable für die StringID der Dokument-ID, darf 0 sein

Version 1.4.2 R 565, 12. Jan. 2008

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

document::setid
comet.CDocument.getID

static int document::setid(
  ItemRef docRef,
  int id1,
  int id2 = 0,
  int id3 = 0,
  char* stringid = 0)

Setze die Comet-ID eines Dokumentes. Die ID1 eines Dokumentes muss >=0 sein.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
id1 int - Wert für ID1 der Dokument-ID
id2 int 0 Wert für ID2 der Dokument-ID
id3 int 0 Wert für ID3 der Dokument-ID
stringid String oder char* 0 Wert für die StringID der Dokument-ID

Version 1.4.2 R 565, 12. Jan. 2008

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

document::setid
comet.CDocument.setID

static ItemRef document::get_book(ItemRef docRef = 0)

Hole das Buch, zu dem ein Dokument gehört. Das Buch muss in InDesign® geöffnet sein.

Name Typ Default Beschreibung
Return ItemRef   Neue Referenz auf das geöffnete Buch. Vor einem neuen Aufruf an die Funktion muss das Ergebnis mit item::release wieder gelöscht werden.

0 : Das Dokument gehört zu keinem Buch oder das Buch ist nicht geöffnet oder es ist gar kein Dokument geöffnet
docRef ItemRef 0 Dokument, dessen Buch ermittelt werden soll.

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

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

Ermittle das Buch des aktuellen Dokumentes und schreibe alle Schwestern-Dokumente ins Logfile.

int main ()
{
    ItemRef		book	= document::get_book (0);
    int			i;
if (book::is_valid (book)) { for (i = 0; i < book::count_docs (book); i++) { wlog ("", "%d. Dokument : '%s'\n", i+1, book::nth_doc (book, i)); } }
item::release (book); return 0; }

Version 2.1 R668, 9. April 2008

priint:comet InDesign® Plug-Ins

book
item
comet.CDocument.getBook

static int document::update_crossrefs(
  ItemRef docRef = 0,
  ItemList frames = 0,
  int updateCrossrefs = 1,
  int showProgress = 0)

Neuberechnung aller Querverweis-Platzhalter in einem Dokument. Ist das Dokument Teil eines geöffneten Buches, werden auch die Referenzen aller anderen Dokumente des Buches aktualisiert.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Dokument, dessen Querverweis-Platzhalter aktualisiert werden sollen

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
frames ItemList 0 Nur diese Rahmen sollen bearbeitet werden. Ist die Angabe ungleich 0, wird der Wert von docRef ignoriert.
updateCrossrefs int 1 Querverweis-Platzhalter aktualisieren?

0 : Nein. Diese Angabe bewirkt bei geöffneten Büchern eine Aktualisierung der Seitennummerierung. Sonst hat sie keinen Einfluss.

1 : Nur wenn das Dokument Teil eines Buches ist. In diesem Fall werden auch die Referenzen dieser Bücher aktualisiert.

2 : Die Referenzen sollen auch in einem einzelnen Dokument aktualisiert werden.
showProgress int 0 Soll beim Aktualisieren der Querverweis-Platzhalter ein Progressbalken gezeigt werden?
0 : Nein
1 : Ja

Version 2.1 R668, 10. April 2008

priint:comet InDesign® Plug-Ins

document::get_book

static int document::get_bleed(
  ItemRef docRef,
  int pageNum,
  float* inner,
  float* top,
  float* outer,
  float* bottom,
  int* isUniform)

Ermittle den Anschnitt, den das Dokument erwartet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
pageNum int - 1-basierte Seitennummer. Die Seitennummer ist wichtig, um über den Seitentyp zu ermitteln, welches die Außen- und welches die Innenkante der Seite ist.

-2 : Werte ohne Beachtung der Seite holen
-1 : Aktuelle Seite

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

Von Illustrator wird der Parameter ignoriert.
inner, top, outer, bottom float* - Variablen für die Ergebnisse. Alle Angaben sind in Punkten (z.B. &inner)
isUniform int* - Wird für alle kanten der gleiche Bleed verwendet?

Version 2.1 R1130, 22. Januar 2009

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

document::set_bleed
document::get_slug
comet.CDocument.getBleed

static int document::get_slug(
  ItemRef docRef,
  int pageNum,
  float* inner,
  float* top,
  float* outer,
  float* bottom,
  int* isUniform)

Ermittle den Infobereich, den das Dokument bereitstellt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
pageNum int - 1-basierte Seitennummer. Die Seitennummer ist wichtig, um über den Seitentyp zu ermitteln, welches die Außen- und welches die Innenkante der Seite ist.

-2 : Werte ohne Beachtung der Seite holen
-1 : Aktuelle Seite

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

inner, top, outer, bottom float* - Variablen für die Ergebnisse. Alle Angaben sind in Punkten (z.B. &inner)
isUniform int* - Wird für alle Kanten der gleiche Anschnitt verwendet?

Version 2.1 R1130, 22. Januar 2009

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_bleed
document::set_slug

static int document::set_bleed(
  ItemRef docRef,
  float inner,
  float top,
  float outer,
  float bottom)

Setze den Dokument-Anschnitt. Durch die Veränderung der Anschnittsgröße eines Dokumentes wird auch die Größe der Montagefläche verändert!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
inner float - Neuer Wert für den Anschnitt (in Punkten) an der Innenkante. Fehlen die Angaben für top, outer und bottom, wird dieser Wert für alle vier Seiten verwendet.
top, outer, bottom float siehe oben  

Version 2.1 R1130, 22. Januar 2009

priint:comet InDesign® Plug-Ins, comet_pdf

document::get_bleed
document::set_slug
comet.CDocument.setBleed

static int document::set_slug(
  ItemRef docRef,
  float inner,
  float top,
  float outer,
  float bottom)

Setze den Dokument-infobereich. Durch die Veränderung des Infobereiches eines Dokumentes wird auch die Größe der Montagefläche verändert!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
inner float - Neuer Wert für den Anschnitt (in Punkten) an der Innenkante. Fehlen die Angaben für top, outer und bottom, wird dieser Wert für alle vier Seiten verwendet.
top, outer, bottom float siehe oben  

Version 2.1 R1130, 22. Januar 2009

priint:comet InDesign® Plug-Ins

document::get_slug
document::set_bleed

static int document::get_pasteboard_gutter(
  ItemRef docRef,
  float* minXBorder,
  float* minYBorder)

Ermittle die Größe der Ränder für den Arbeitsbereich.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

pasteBoardDocErr (1272) : CS-Versionen vor CS5
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)
minXBorder float* - Minimalwert für den linken und den rechten Rand
minYBorder float* - Minimalwert für den oberen und den unteren Rand

v3.3.1 R4100, 1. Aug 2013 und CS5

priint:comet InDesign® Plug-Ins

document::set_pasteboard_gutter

static int document::set_pasteboard_gutter(
  ItemRef docRef,
  float minXBorder,
  float minYBorder)

Setze die Größe der Ränder für den Arbeitsbereich.

Verkleinerungen der Arbeitsfläche werden automatisch so begrenzt, dass keine Rahmen von der Arbeitsfläche fallen. Mindestens eine Kante der Rahmen bleibt sichtbar.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

pasteBoardDocErr (1272) : CS-Versionen vor CS5
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)
minXBorder float - neuer Minimalwert für den linken und den rechten Rand

-1.0 : Unverändert lassen
-10.0 : Standard (595.276 Pt, Änderungen der InDesign® -Voreinstellungen für diesen Wert werden ignoriert.)
minYBorder float - neuer Minimalwert für den oberen und den unteren Rand

-1.0 : Unverändert lassen
-10.0 : Standard (72.0 Pt, Änderungen der InDesign® -Voreinstellungen für diesen Wert werden ignoriert.)

v3.3.1 R4100, 1. Aug 2013 und CS5

priint:comet InDesign® Plug-Ins

document::get_pasteboard_gutter

static int document::show_page_elements(ItemRef docRef, int state)

Zeige oder verstecke die in den Dokumentseiten hinterlegten Seiteninformationen und -elemente.

Beim Druck und in PDFs werden die Seitenelemente nicht gezeigt. Die Wirkung der Einstellung ist deshalb nur unter InDesign® Desktop sichtbar. Trotzdem wird die Einstellung auch unter InDesign® Server und comet_pdf ins Dokument übernommen. Mit comet_pdf können die Seitenelemente mit der Option -ae im PDF sichtbar gemacht werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
state int -1 Anzeigestatus

-1 : Umschalten
0 : Verstecken
1 : Zeigen

Version 3.0 R1155, 2. Februar 2009

priint:comet InDesign® Plug-Ins, comet_pdf

document::page_elements_shown

static int document::page_elements_shown(ItemRef docRef = 0)

Werden die Seiteninformationen und -elemente im Dokument angezeigt oder nicht?

Name Typ Default Beschreibung
Return int   0 : unsichtbar (oder Fehler)
1 : sichtbar
docRef ItemRef 0 Angabe des Dokumentes

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

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

Version 3.0 R1155, 2. Februar 2009

priint:comet InDesign® Plug-Ins, comet_pdf

document::show_page_elements

static int document::export_notes(
  ItemRef docRef = 0,
  char* destPath = 0,
  String destString = 0,
  int flags = 4)

Siehe document::notes::export_

document::notes::export_

static int document::import_notes(
  ItemRef docRef = 0,
  char* srcPath = 0,
  String srcString = 0,
  int flags = 6)

Siehe document::notes::import

document::notes::import

static int document::show_notes(ItemRef docRef = 0)

Siehe document::notes::show

document::notes::show

static int document::hide_notes(ItemRef docRef = 0)

Siehe document::notes::hide

document::notes::hide

static int document::set_default_style(
  ItemRef docRef,
  int type,
  char* stylePath)

Standardstil setzen. Beachten Sie, dass Stildefinitionen dokumentabhängig definiert sind.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
type int - Welcher Stil soll gesetzt werden?

1 : Absatzstil
2 : Zeichenstil
stylePath String oder char* - Name oder Pfad des Stiles, der als Standard verwendet werden soll. Der Stil muss definiert sein. Als Pfadtrenner wird ':' verwendet.

Ermittle den bisherigen Standard-Absatzstil und setze dann einen neuen Stil. Den alten Stil müssen Sie in Anwendungen natürlich nur dann holen, wenn Sie auch was damit machen wollen.

int main ()
{
    char		oldStyle [256];
    int			res;
*oldStyle = 0; document::get_default_style (0, 1, oldStyle); showmessage ("Old default style : '%s'.", oldStyle);
res = document::set_default_style (0, 1, "Beta:Geuze"); if (res) showmessage ("Cannot set default style.");
return 0; }

Version 2.1 R 1582, 5. Okt. 2009

priint:comet InDesign® Plug-Ins

document::get_default_style
textmodel::insert

static char* document::get_default_style(
  ItemRef docRef,
  int type,
  char* stylePath)

Ermittle einen Standardstil. Beachten Sie, dass Stildefinitionen dokumentabhängig definiert sind.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter stylePath)   Die Eingabevariable stylePath
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)
type int - Welcher Stil soll erfragt werden?

1 : Absatzstil
2 : Zeichenstil
stylePath String oder char* - Name oder Pfad des Stiles, als Pfadtrenner wird ':' verwendet.

Ermittle den bisherigen Standard-Absatzstil und setze dann einen neuen Stil.

int main ()
{
    char			oldStyle [256];
    int			res;
*oldStyle = 0; document::get_default_style (0, 1, oldStyle); showmessage ("Old default style : '%s'.", oldStyle);
res = document::set_default_style (0, 1, "Beta:Geuze"); if (res) showmessage ("Cannot set default style.");
return 0; }

Version 2.1 R 1582, 5. Okt. 2009

priint:comet InDesign® Plug-Ins

document::get_default_style
textmodel::insert

static int document::set_modified(ItemRef docRef = 0, int modified = 0)

Setze den Sichern-Status eines Dokumentes. Der Aufruf lässt den Inhalt des Dokumentes unverändert. Mit dem Aufruf können Sie erzwingen, dass unveränderte Dokumente neu gesichert werden bzw. veränderte Dokumente ohne Sichern geschlossen werden können. Der Aufruf hat insbesondere in Batch-Skripten, bei denen lediglich Informationen aus dem Dokument gesammelt werden sollen, Bedeutung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
modified int 0 neuer Dokumentstatus

0 : Dokument nicht geändert
1 : Dokument geändert

Ein Dokument soll, obwohl möglicherweise verändert, ungesichert geschlossen werden.

int main ()
{
    document::set_modified ();
    return 0;
}

Version 2.1 R1978, 27.06.2010

priint:comet InDesign® Plug-Ins

static int document::get_modified(ItemRef docRef = 0)

Ermittle den Sichern-Status eines Dokuments.

Name Typ Default Beschreibung
Return int   0 (nicht geändert) oder 1 oder Fehlercode
docRef ItemRef 0 Angabe des Dokumentes

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

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

Ungesicherte Dokumente sollen von der Bearbeitung ausgeschlossen werden.

int main ()
{
    if (document::get_modified ())
    {
        return 0;
    }
// weitere Bearbeitung // ...
return 0; }

Version 3.3 R2764, 14.12.2011

priint:comet InDesign® Plug-Ins, Illustrator

static int document::set_units(
  ItemRef docRef = 0,
  int horiz_unit = 0,
  int vert_unit = 0,
  int text_units = 0,
  int text_size_units = 0,
  int print_units = 0,
  int line_units = 0,
  float customHPoints = -1.0,
  float customVPoints = -1.0,
  float key_nudge = -1.0,
  float ppi = -1.0)

Maßeinheiten des Dokumentes setzen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
horiz_unit, horiz_unit int 0 Maßeinheit horizontal/vertikal

0, kUnitUndefined: unverändert lassen
kUnitPoints
kUnitPicas
kUnitInches
kUnitInchesDecimal
kUnitMillimeters
kUnitCentimeters
kUnitCentimeters
kUnitCiceros
kUnitAgates (ab CS5)
kUnitPixels (ab CS5)
text_units int 0 Maßeinheit (??)

0, kUnitUndefined: unverändert lassen
kUnitPoints
kUnitPixels (ab CS5)
text_size_units int 0 Maßeinheit 'Textgröße'

0, kUnitUndefined: unverändert lassen
kUnitPoints
kUnitPixels (ab CS5)
print_units int 0 Maßeinheit 'Drucken'

0, kUnitUndefined: unverändert lassen
kUnitPoints
kUnitMillimeters
kUnitPixels (ab CS5)
line_units int 0 Maßeinheit 'Kontur'

0, kUnitUndefined: unverändert lassen
kUnitPoints
kUnitMillimeters
kUnitPixels (ab CS5)
customHPoints, customVPoints float -1.0 custom points for horz/vert ruler - Was immer das bedeutet

-1.0 unverändert lassen sonst : Angabe in Punkten
key_nudge float -1.0 Tastaturschritte Pfeiltasten

-1.0 unverändert lassen sonst : Angabe in Punkten
ppi float -1.0 Punkt/Zoll

-1.0 unverändert lassen sonst : Angabe in Punkten
#include "internal/types.h"
#include "internal/types.h"
int w_unit (char * m, int u) { char ustr[512];
if (u == kUnitUndefined) strcpy (ustr, "Unit undefined"); else if (u == kUnitPoints) strcpy (ustr, "points"); else if (u == kUnitPicas) strcpy (ustr, "picas"); else if (u == kUnitInches) strcpy (ustr, "inches"); else if (u == kUnitInchesDecimal) strcpy (ustr, "decimal inches"); else if (u == kUnitMillimeters) strcpy (ustr, "mm"); else if (u == kUnitCentimeters) strcpy (ustr, "cm"); else if (u == kUnitCiceros) strcpy (ustr, "ciceros"); else if (u == kUnitAgates) strcpy (ustr, "agates"); else if (u == kUnitPixels) strcpy (ustr, "pixels");
if (m) wlog ("", "# %s : ", m); wlog ("", "%s\n", ustr); return 0; }
int w_units (ItemRef docRef) { float h, v, nudge, ppi;
w_unit ("Horizontal", document::get_units (docRef, kHorizontalUnit)); w_unit ("Vertical", document::get_units (docRef, kVerticalUnit)); w_unit ("Text", document::get_units (docRef, kTextUnit)); w_unit ("Textsize", document::get_units (docRef, kTextSizeUnit)); w_unit ("Print", document::get_units (docRef, kPrintUnit)); w_unit ("Line", document::get_units (docRef, kLineUnit));
h = document::get_custompoints (docRef, kHorizontalUnit); v = document::get_custompoints (docRef, kVerticalUnit); nudge = document::get_keynudge_inc (docRef); ppi = document::get_ppi (docRef);
wlog ("", "Pointsize [%f, %f], key nudge %f, ppi %f\n", h, v, nudge, ppi);
return 0; }
int main () { float h, v, nudge, ppi;
wlog ("", "=== Before ===\n"); w_units (0);
document::set_units (   0,   kUnitPixels, // horiz   kUnitAgates, // vert   kUnitPixels, // text pt/px   kUnitPixels, // textsize pt/px   kUnitMillimeters, // print pt/px/mm   kUnitMillimeters, // lines pt/px/mm   18.0, 22.0,   2.3456,   120.0);
wlog ("", "=== After ===\n"); w_units (0);
return 0; }

Version 3.1 R2187, 25. Okt. 2010

priint:comet InDesign® Plug-Ins

document::get_units
document::get_custompoints
document::get_keynudge_inc
document::get_ppi

static int document::get_units(ItemRef docRef = 0, int what = 0)

Maßeinheit des Dokumentes holen.

Name Typ Default Beschreibung
Return int   0 oder
kUnitPoints
kUnitPicas
kUnitInches
kUnitInchesDecimal
kUnitMillimeters
kUnitCentimeters
kUnitCentimeters
kUnitCiceros
kUnitAgates (ab CS5)
kUnitPixels (ab CS5)
docRef ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
what int kHorizontalUnit Welche Maßeinheit soll ermittelt werden?

kHorizontalUnit
kVerticalUnit
kTextUnit Maßeinheit '??'
kTextSizeUnit Maßeinheit 'Textgröße'
kPrintUnit Maßeinheit 'Drucken'
kLineUnit Maßeinheit 'Kontur'
#include "internal/types.h"

Version 3.1 R2187, 25. Okt. 2010

priint:comet InDesign® Plug-Ins

document::set_units
document::get_custompoints
document::get_keynudge_inc
document::get_ppi

static float document::get_custompoints(ItemRef docRef = 0, int what = 0)

Zitat aus der InDesign® -API für Plug-Ins : "custom points for horz/vert ruler". Diese Werte holt die Funktion.

Name Typ Default Beschreibung
Return float   aktueller Wert in Punkten oder 0.0 im Fehlerfall
docRef ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
what int kHorizontalUnit Welcher Wert soll ermittelt werden?

kHorizontalUnit
kVerticalUnit
#include "internal/types.h"

Version 3.1 R2187, 25. Okt. 2010

priint:comet InDesign® Plug-Ins

document::set_units
document::get_units
document::get_keynudge_inc
document::get_ppi

static float document::get_keynudge_inc(ItemRef docRef = 0)

Länge der Tastaturschritte der Pfeiltasten.

Name Typ Default Beschreibung
Return float   aktueller Wert in Punkten oder 0.0 im Fehlerfall
docRef ItemRef 0 Angabe des Dokumentes

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

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

Version 3.1 R2187, 25. Okt. 2010

priint:comet InDesign® Plug-Ins

document::set_units
document::get_units
document::get_custompoints
document::get_ppi

static float document::get_ppi(ItemRef docRef = 0)

Pixel/Punkt des Dokumentes.

Name Typ Default Beschreibung
Return float   aktueller Wert in Punkten oder 0.0 im Fehlerfall
docRef ItemRef 0 Angabe des Dokumentes

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

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

Version 3.1 R2187, 25. Okt. 2010

priint:comet InDesign® Plug-Ins

document::set_units
document::get_units
document::get_custompoints
document::get_keynudge_inc

static int document::get_visible_areas(
  ItemRef docRef,
  int page,
  int flags,
  List pageNums,
  List cometGroupIDs,
  IDTypeList ids,
  RectList bboxes,
  FloatList visible_sizes,
  FloatList sizes,
  FloatList percents)

Berechnen der Flächen, die Cometgruppen im Dokument belegen. Die sichtbare Flächen eines Rahmens ist die Fläche, die sich aus der folgenden Schnittmenge ergibt :

Wie Sie sich sicher denken können, ist das Verfahren zur Berechnung der Schnittflächen und Größen beliebiger Formen nicht ganz einfach. Die Integrale der Kurven (Bézier-Kurven) werden durch Interpolation berechnet. Dabei ergibt sich ein kleiner Rundungsfehler von durchschnittlich 0,03 ‰. Das ist etwa 150-mal weniger als der in alkoholfreiem Bier tolerierte Alkoholgehalt. Eine Verkleinerung des Fehlers um eine weitere 0 nach dem Komma bedeutet einen etwa 100-mal größeren Rechenaufwand (aus jeder Sekunde werden also fast 2 Minuten!).

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
page int - Seitennummer

-1 : alle Dokumentseiten
sonst : 1-basierte Seitennummer
flags int - Steuerung der Berechnung

kUseClippath : Verwende bei Bildern den Bildinhalt. Wird das Bild mit einem Beschneidungspfad angezeigt, wird dieser Pfad verwendet. Der Pfad darf beliebig komplex sein und wird immer mit der Form des Rahmens geschnitten.

kAllowHoles : Löcher im Bild werden normalerweise zur Bildfläche hinzugerechnet. Mit dieser Option werden Löcher im Bild nicht zur Bildfläche hinzugerechnet. Die Option ist nur aktiv, wenn kUseClippath verwendet wird.

kCheckTransparenz : Der Rahmenhintergrund von Bildern kann selbst undurchsichtig sein. Nicht-transparente Bildhintergründe werden im Normalfall ignoriert und nicht zur Rahmenfläche hinzugerechnet. Soll bei nicht-transparenten Bildhintergründen der gesamte Rahmen als Fläche verwendet werden, setzen Sie dieses Flag. Rahmenhintergründe sind transparent, wenn eine der folgenden Eigenschaften gesetzt ist :
  • Keine Hintergrundfarbe
  • Effekte : Füllmethode ungleich "Normal"
  • Effekte : Deckkraft < 100.0
Die Option ist nur aktiv, wenn kUseClippath verwendet wird. Das Flag wird nicht verwendet, um bei Rahmenüberlappungen die Transparenz der überlappenden Rahmen zu prüfen!

kUseMargins : Es werden immer nur die sichtbaren Flächenteile der Rahmen berechnet. Rahmenteile, die in die Montagefläche ragen, werden ignoriert. Ist das Flag kUseMargins gesetzt, wird die zu berücksichtigende Fläche weiter verkleinert auf die Seite des Rahmens ohne deren Seitenanschnitt. Die Seite eines Rahmens ist die Seite des Spreads, auf der der grösste Teil der Boundingbox um den Rahmen liegt.
⇨ Die folgenden Listen werden durch die Funktion gefüllt. Nach erfolgreicher Ausführung der Funktion enthalten die Listen für jede Cometgruppe einen Eintrag mit dem zugehörigen Wert. Die Listen haben alle die gleiche Länge. (0-Werte sind erlaubt, diese Listen werden ignoriert.)
pageNums List - Seitennummer der Cometgruppe (1-basiert)
cometGroupIDs List - Cometgruppen-ID
ids IDTypeList - Objekt-ID der Cometgruppe oder des Rahmens.
bboxes RectList - Boundingbox um die jeweilige Cometgruppe bzw. den Rahmen. Die Angaben sind in Punkten.
visible_sizes FloatList - Berechnete sichtbare Größe der Rahmen in Quadrat-Punkt.
sizes FloatList - Größe der Boundingbox in Quadrat-Punkt.
percents FloatList - Berechnete sichtbare Größe in Prozent zur Gesamtseite (mglw. ohne Ränder, siehe Flag kUseMargins).
#include "internal/types.h"
#include "internal/types.h"
int write_areas (   List pageNums,   List cometGroups,   IDTypeList ids,   RectList bboxes,   FloatList visible_sizes,   FloatList sizes,   FloatList percents) { int i = 0; int p = -1; int p1; IDType id; Rect r;
if (list::length (pageNums) == 0) { wlog ("", "document::calc_areas : No frames found\n"); return 0; }
for (i = 0; i < list::length (pageNums); i++) { // Pagenum p1 = list::get (pageNums, i); if (p1 != p) wlog ("", "Page %d\n", p1); p = p1;
// Comet group wlog ("", " Comet group %d\n", list::get (cometGroups, i));
// Id id = idtypelist::get (ids, i); wlog ("", " Id [%d, %d, %d, '%s']\n", idtype::id (id), idtype::id2 (id), idtype::id3 (id), idtype::stringid (id));
// BBoxes r = rectlist::get (bboxes, i); wlog ("", " bbox %f %f %f %f\n", rect::left (r), rect::top (r), rect::right (r), rect::bottom (r));
// Areas wlog ("", " Netto : %f\n", floatlist::get (visible_sizes, i)); wlog ("", " Brutto : %f\n", floatlist::get (sizes, i)); wlog ("", " Percent : %f\n", floatlist::get (percents, i));
}
return 0; }
int main () { int flags = kUseClippath + kUseMargins; List pageNums = list::alloc (); List cometGroups = list::alloc (); IDTypeList ids = idtypelist::alloc (); RectList bboxes = rectlist::alloc (); FloatList visible_sizes = floatlist::alloc (); FloatList sizes = floatlist::alloc (); FloatList percents = floatlist::alloc ();
document::get_visible_areas (0, -1, flags, pageNums, cometGroups, ids, bboxes, visible_sizes, sizes, percents); write_areas (pageNums, cometGroups, ids, bboxes, visible_sizes, sizes, percents);
return 0; }

Version 3.2 R2210, 2. Dez. 2010
frame::get_visible_area
rectlist
floatlist
rect
idtype
idtypelist

priint:comet InDesign® Plug-Ins


static int document::get_links(
  ItemRef docRef,
  int page,
  char* layer,
  ItemList resultList)

Dokument-Verknüpfungen holen. Die Auswahl kann wahlweise auf eine Seite und/oder eine Ebene eingeschränkt werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
page int - Seitennummer (1-basiert)

≤0 : Alle Seiten
sonst : nur Links dieser Seite holen (1-basiert)
layer String oder char* - Ebenenname

"" : Alle Ebenen
Sonst : Nur Links dieser Ebene holen
resultList ItemList - Allokierte Ergebnisliste.

In InDesign® sind die Einträge der Liste keine Dokumentrahmen. Um die Einträge zu verwenden, benutzen Sie die Funktionen des Modules frame::doclink.

Unter comet_pdf enthält die Ergebnisliste die tatsächlichen Bildrahmen, die auch in allen anderen Rahmenfunktionen verwendet werden können.

Alle Verknüpfugen des Dokumentes holen und ins Logfile schreiben.

int main ()
{
    ItemList	lks	= itemlist::alloc ();
    ItemRef		lk	= item::alloc ();
    ItemRef		fr	= item::alloc ();
    char		p	[5000];
    int			i;
document::get_links (0, 0, "", lks); for (i = 0; i < itemlist::length (lks); i++) { itemlist::get (lks, lk, i);
frame::doclink::get_frame (lk, fr); frame::doclink::get_path (lk, p);
wlog ("", "Frame %d\t<- %d [%d, '%s']\n",   item::getint (fr),   item::getint (lk),   frame::doclink::get_state (lk), p); }
return 0; }

v3.3 R2550, 30.06.2011
Implementiert für comet_pdf seit v4.2 R32078, 28. Dez 2022

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CDocument.getDocLinks

static int document::update_links(
  ItemRef docRef = 0,
  int page = 0,
  char* layer = "",
  IDTypeList changedLinks = 0)

Aktualisiere (die) Verknüpfungen des Dokumentes. Sie können die Aktualisierung auf eine Ebene und/oder Seite beschränken. In einer Ergebnisliste können Sie sich die aktualisierten Rahmen und die Dateipfade zurückgeben lassen.

Unter comet_pdf ist Funktion verfügbar, hat aber keine Wirkung und die Ergebnisliste bleibt immer leer.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
page int -1 Seitennummer

-1 : Alle Seiten
sonst : nur Links dieser Seite aktualisieren (1-basiert)
layer String oder char* "" Ebenenname

"" : Alle Ebenen
Sonst: Nur Links dieser Ebene werden aktualisiert
changedLinks IDTypeList 0 Liste der aktualisierten Links. Mit idtype::id erhalten Sie die UIDs der einzelnen Rahmen (Bei Textverkettungen die UID des ersten Rahmen der Kette). Mit idtype::stringid erhalten Sie den vollständigen Dateipfad.
int main ()
{
    IDTypeList		updated	= idtypelist::alloc ();
    IDType 		*	p;
document::update_links (0, 1, "", updated);
for (p = idtypelist::first (updated); p; p = idtypelist::next (updated)) { wlog ("", "# %d\t'%s'\n", idtype::id (p), idtype::stringid (p)); }
return 0; }

v3.3 R2489, 06.06.2011

priint:comet InDesign® Plug-Ins

static int document::export_styles(
  ItemRef docRef = 0,
  char* destPathAndBaseName = 0,
  int fileFlag = 1)

XML-Export aller Stilinformationen und Farbfelder eines Dokumentes.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
destPathAndBaseName String oder char* "" Pfad und Basisname für die Exportdateien. Die Stilinformationen werden in die Datei destPathAndBaseName_Styles.xml exportiert. Die Farbfelder befinden sich in der Datei destPathAndBaseName_Graphic.xml

"" : Pfad und Name des Dokumentes verwenden. Das Dokument darf dazu nicht neu und ungesichert sein!
fileFlag int 1 Bestehende Exportdateien löschen?

0 : Nein
1 : Ja

v3.3 R2580, 1. Aug. 2011

priint:comet InDesign® Plug-Ins

static int document::get_styles(
  ItemRef docRef,
  char* styleClass,
  StringList resultList)

Sammeln aller Stilnamen eines Dokumentes. Die Name aller verfügbaren Stile einer Klasse werden inklusive ihrem Ordnerpfad in einer Liste gesammelt. Als Pfadtrenner wird ':' verwendet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
styleClass char* oder String - Welche Stilnamen sollen gesammelt werden?

"parastyles" : Absatzstile
"charstyles" : Zeichenstile
"objstyles" : Objektstile
"tablestyles" : Tabellenstile
"cellstyles" : Zellstile
resultList StringList - Liste für die Ergebnisse.

Bitte beachten Sie:
  1. Die Liste muss vor dem Aufruf mit stringlist::alloc bereitgestellt werden!
  2. Die Liste wird vor der Ausführung geleert.

Schreibe alle verfügbaren Absatzstile des aktuellen Dokumentes ins Logfile.

int main ()
{
    StringList	li 	= stringlist::alloc ();
    char	*	str;
document::get_styles (0, "parastyles", li);
for (str = stringlist::first (li); str; str = stringlist::next (li)) { wlog ("", "--%s--\n", str); }
stringlist::release (li); return 0; }

v4.1 R24333, 6. Dez 2018

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CDocument.getStyleNames

static int document::import_styles(
  ItemRef docRef,
  char* whatStyles,
  char* sourceDocument,
  int clashResolution = 0)

Importieren von Stilen aus einem anderen Dokument.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
whatStyles char* oder String - Welche Formate sollen importiert werden? Folgende (case insensitiven) Angaben sind möglich:

"paraStyles" : Absatzstile
"charStyles" : Zeichenstile
"textStyles" : Zeichen- und Absatzstile
"tableStyles" : Tabellenstile
"cellStyles" : Zellstile
"tableAndCellstyles" : Tabellen- und Zellstile
"tocStyles" : Inhaltsverzeichnisstile
"strokeStyles" : Linienstile (Nicht unterstützt von comet_pdf.)
"objectStyles" : Objektstile

"all" : Alles
sourceDocument char* oder String - Vollständiger Pfad des Dokumentes aus dem die Stile importiert werden sollen
clashResolution int 0 Strategie zur Auflösung von Konflikten bei Namensgleichheiten

0 : Stil nicht importieren
1 : Stil überschreiben
2 : Unter neuem Namen importieren

Hinweis für comet_pdf : Werden nur Zellstile importiert, werden fehlende Absatzstile, die in Zellstilen verwendet werden, ebenfalls importiert. Bereits existierende Absatzstile werden dabei nicht überschrieben. Wird also der Zellstil Z mit dem Absatzstil A importiert, dann wird A importiert, wenn es noch keinen Absatzstil A gibt. Existiert A bereits, bleibt der Absatzstil A unverändert.

Das Gleiche gilt analog beim Import von Tabellenstile für die verwendeten Zellstile und deren Absatzstile.

result = document::import_styles (0, "tableAndCellStyles", "$DESKTOP/naiv.indd", 0);

v4.1.6 R25778, 11. Sep. 2019
comet_pdf-Unterstützung seit v4.1.8, R27723

priint:comet InDesign® Plug-Ins, comet_pdf

static int document::show_folio(ItemRef docRef = 0)

Foliovorschau eines Dokumentes öffnen. Die Anweisung wird erst von InDesign® CS5.5 unterstützt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
docRef ItemRef 0 Angabe des Dokumentes

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

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

v3.3 R2670, 14. Okt. 2011 und InDesign® CS5.5

priint:comet InDesign® Plug-Ins

static int document::get_notes_printable(ItemRef docRef = 0)

Siehe document::notes::get_printable

document::notes::get_printable

static int document::set_notes_printable(ItemRef docRef = 0, int newState = 0)

See document::notes::set_printable

document::notes::set_printable

static int document::get_masterpages(
  ItemRef docRef,
  IDTypeList resultList,
  int unusedOnly = 0,
  int sortedByBasedOn = 1)

Informationen über Musterseiten des Dokumentes. Sammle die Namen und UIDs aller Musterseiten eines Dokumentes.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
resultList IDTypeList - allokierte Ergebnisliste. Die Listeneinträge enthalten folg. Werte:

idtype::stringid () : Name der Musterseite
idtype::id () : UID der Musterseite
idtype::id2 () : Anzahl der Seiten
idtype::id3 () : UID der Musterseite, von der die Seite abgeleitet ist
unusedOnly int 0 ab V4.1.6 R25778 Hole nur die unbenutzten Musterseiten des Dokumentes
sortedByBasedOn int 1 ab V4.1.6 R25778 Sortierreihenfolge der Ergebnisliste

1 : Sortiere die Ergebnisse so, dass Musterseiten, die auf anderen Musterseiten basieren, später in der Liste erscheinen.

0 : Sortiere die Liste so wie in der Palette Seiten.
int main ()
{
    IDTypeList		masters	= idtypelist::alloc ();
    IDType			master;
document::get_masterpages (0, masters); for (master = idtypelist::first (masters); master; master = idtypelist::next (masters)) { wlog ("", "%s [UID %d, %d page(s), Ancestor %d]\n",   idtype::stringid (master),   idtype::id (master),   idtype::id2 (master),   idtype::id3 (master)); }
return 0; }

v3.3 R3091, 20.07.2012
Parameter unusedOnly seit v4.1.6 R25778, 16. Sep 2019
Parameter sortedByBasedOn seit v4.1.6 R25778, 16. Sep 2019

priint:comet InDesign® Plug-Ins, comet_pdf

comet.CDocument.getMasterPageInfo

static int document::import_masterpage(
  ItemRef docRef,
  char* orgPath,
  char* master_name,
  int overrideExisting = 0,
  int openAsCopy = 0)

Importiere/Aktualisiere Musterseiten eines Dokumentes aus einem anderen Dokument. Ist eine Musterseite von anderen Musterseiten abgeleitet, werden auch alle Basisseiten importiert/aktualisiert.

Ist das Quell-Dokument nicht bereits geöffnet, wird es im Hintergrund geöffnet und zur nächsten Idle-Time automatisch wieder geschlossen. Bis dahin darf es nicht geändert werden. Änderungen am Dokument gehen dabei verloren!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
orgPath String oder char* - vollständiger Pfad auf das Quell-Dokument
master_name String oder char* - vollständiger Name der Musterseite, z.B. C-Musterseite.

Ist die Seite von einer anderen Musterseite abgeleitet, werden auch alle Basisseiten importiert/aktualisiert
overrideExisting int 0 Bestehende Musterseiten aktualisieren?

0 : nein
1 : ja. In diesem Fall werden automatisch alle freigestellten Musterseiten-Einträge der zu aktualisierenden Musterseiten im Dokument entfernt.
openAsCopy int 0 Modus zum Öffnen der Datei

0 : Normal öffnen. Ist die Datei bereits geöffnet, wird dieses Dokument verwendet.

1 : Als Kopie öffnen. Ungesicherte Änderungen in einem anderen Dokumentfenster der gleichen Quelldatei werden ignoriert.
int main ()
{
    int			res;
res = document::import_masterpage (   0,   "$DESKTOP/musterseiten.indd",   "C-Musterseite",   1);
wlog ("", "import_masterpage result %d\n", res); return 0; }

v3.3 R3091, 20.07.2012

priint:comet InDesign® Plug-Ins

Parameter openAsCopy seit v4.1 R24334, 17. Dez 2018
import_masterpages

static int document::import_masterpages(
  ItemRef docRef,
  char* sourceDocument,
  int clashResolution = 0)

Importieren aller Musterseiten eines anderen Dokumentes. Gelöschte Musterseitenrahmen, die im Ziel überschrieben wurden (siehe frame::is_overriden_masteritem) bleiben beim Import erhalten.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
sourceDocument char* oder String - Vollständiger Pfad des Dokumentes aus dem die Musterseiten importiert werden sollen
clashResolution int 1 Strategie zur Auflösung von Konflikten bei Namensgleichheiten

1 : Musterseite überschreiben
2 : Unter neuem Namen importieren
int main ()
{
    int res = document::import_masterpages (0, "$DESKTOP/m_src.indd", 1);
wlog ("", "Import masterpages result : %d", res); return 0; }

v4.1.6 R25778, 16. Sep. 2019

priint:comet InDesign® Plug-Ins, comet_pdf

import_masterpage

static int document::remove_masterpage(ItemRef docRef, char* master_name)

Lösche eine Musterseite aus einem gegebenen Dokument.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
master_name String oder char* - vollständiger Name der Musterseite, z.B. C-Musterseite.

v4.1.6 R25788, 16. Sep 2019

priint:comet InDesign® Plug-Ins

static int document::move_masterpage(
  ItemRef docRef,
  char* master_name,
  char* before)

Verschiebe einen Musterseiteneintrag in der Liste der Musterseiten auf der Palette Seiten.

Der Aufruf hat keinerlei Einfluß auf das Aussehen des Dokumentes. Er ändert lediglich die Reihenfolge der Musterseiten in der Palette Seiten.

Aus irgendeinem für uns nicht nachvollziehbaren Grund ist die Anweisung nicht rückgängig zu machen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
master_name String oder char* - vollständiger Name der Musterseite, z.B. C-Musterseite.
before String oder char* - Vor welche Musterseite soll der Eintrag geschoben werden?

"" oder nicht existierende Musterseite : Ans Ende verschieben

v4.1.6 R25788, 16. Sep 2019

priint:comet InDesign® Plug-Ins

static int document::dump_uidtranstable(ItemRef docRef = 0)

Nur zur internen Verwendung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)

v3.3 R3500, 07.03.2012

priint:comet InDesign® Plug-Ins, comet_pdf

static int document::cometgroup_recreated(
  ItemRef docRef,
  int oldGroupID,
  int newGroupID)

Übernahme einer Cometgruppen-ID. Beim Ersetzen von Produkten oder Teilen von Produkten kann es erwünscht sein, dass die Cometgruppen-ID des Produktes erhalten bleibt. In diesem Fall ermitteln so den Änderungen die bisherige Cometgruppen-ID. Am Ende können Sie der geänderten Cometgruppe diese Nummer dann wieder übergeben.

Achten Sie darauf, nur gültige Cometgruppen-IDs zu verwenden. Falsche Angaben können zu Dokumentfehlern führen und Ihre Dokumente unbrauchbar machen!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
oldGroupID int - Alte Cometgruppen-ID. Die Rahmen sollen diese Cometgruppen-Nummer behalten.
newGroupID int - Aktuelle Cometgruppen-ID. Die Rahmen haben nach den Änderungen diese Cometgruppe.
#include "internal/types.h"

Sammle alle Cometgruppen des Dokumentes und ersetze einige davon durch fertige Snippets. Um das Skript ausführen zu können, müssen Sie zuerst das Skript im folgenden Beispiel als eigene Action anlegen und MY_COMPARE_SCRIPT durch die ID dieser Action ersetzen.

#include "internal/types.h"
int get_snippet (IDType id) { if (idtype::id (id) == 0) return 0; if (strcmp (idtype::stringid (id), "109007") == 0) return 617; if (strcmp (idtype::stringid (id), "109507") == 0) return 621; if (strcmp (idtype::stringid (id), "107507") == 0) return 623;
return 0; }
IDType get_id (ItemRef fr, IDType id) { int i; char base [255]; char slot [255];
idtype::set_id (id, 0); if (!frame::get_cometgroup (fr)) return id;
for (i = 0; i < 2; i++) { if (i == 0) strcpy (base, "BuiltBy"); else strcpy (base, ""); idtype::set_id (id, placeholder::get_value (fr, sprintf (slot, "%d%s", base, "ID"))); idtype::set_id2 (id, placeholder::get_value (fr, sprintf (slot, "%s%s", base, "ID2"))); idtype::set_id3 (id, placeholder::get_value (fr, sprintf (slot, "%s%s", base, "ID3"))); idtype::set_stringid (id, placeholder::sget_value (fr, sprintf (slot, "%s%s", base, "StringID")));
if (idtype::id (id)) break; }
return id; }
int replace (ItemList oldFrames) { ItemList newFrames = 0; ItemRef fr = item::alloc (); IDType id = idtype::alloc (); int snippet; float l, t, r, b; int pg, gid, new_gid; char lay [512];
while (1) { // Sanity check itemlist::get (oldFrames, fr, 0); if (!frame::is_valid (fr)) break;
// Do we have to replace this Comet group? snippet = get_snippet (get_id (fr, id)); if (!snippet) break;
// Get old states pg = page::get (fr); gid = frame::get_cometgroup (fr); frame::get_layer (fr, lay); itemlist::bbox (oldFrames, &l, &t, &r, &b);
wlog ("", "'%s' replace by snippet %d\n", idtype::stringid (id), snippet);
// Remove old, create new itemlist::remove_items (oldFrames); newFrames = document::place_items (0, 0, 0, snippet, l, t, pg, lay);
// Reset comet group id itemlist::get (newFrames, fr, 0); new_gid = frame::get_cometgroup (fr); document::cometgroup_recreated (0, gid, new_gid);
break; // ready }
item::release (fr); idtype::release (id); itemlist::release (newFrames);
return 0; }
int main () { ItemListList lli; ItemList li; ItemList docFrames = itemlist::allframes ();
if (gRun > 1) return 0;
lli = itemlist::logical_groups (docFrames, kSearchDocument, "", 1, "script", MY_COMPARE_SCRIPT);
for (li = itemlistlist::first (lli); li; li = itemlistlist::next (lli)) { replace (li); }
itemlist::release (docFrames); itemlistlist::release (lli);
return 0; }

Vergleichsfunktion für das Skript des obigen Beispieles. Das Skript muss zuvor als eigene Action gesichert werden.

int main ()
{
    int		group1	= frame::get_cometgroup (gMasterFrame);
    int		group2	= frame::get_cometgroup (gCheckFrame);
if (!gCheckFrame) { if (!group1) return 0; return 0; }
return (group1 != group2); }

v3.4 R7150, 07.12.2014

priint:comet InDesign® Plug-Ins

static int document::get_pageref(
  ItemRef outRef,
  ItemRef docRef,
  int pg)

Ermitteln der UID einer Seite.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
outRef ItemRef - allokiertes ItemRef für das Ergebnis.
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)
pg int - 1-basierte Seitenindex der Seite, deren ItemRef ermittelt werden soll
int main ()
{
    int   		pg            = page::get (gFrame);
    int    		indexInSpread;
    int    		spread        = page::get_spread (0, pg, &indexInSpread);
    ItemRef		pageRef       = item::alloc ();
    ItemRef		spreadRef     = item::alloc ();
document::get_pageref (pageRef, 0, pg); document::get_spreadref (spreadRef, 0, spread);
wlog ("", "Spread %d (%d), Seite %d (%d), %d. page in Spread\n",   spread, item::getint (spreadRef),   pg, item::getint (pageRef), indexInSpread);
return 0; }

v3.3 R3500, 08.03.2012

priint:comet InDesign® Plug-Ins, comet_pdf

@see comet.CPage.getUID

static int document::get_spreadref(
  ItemRef outRef,
  ItemRef docRef,
  int spreadIndex)

Ermitteln der UID eines Spreads über den Spreadindex. Den Spreadindex einer Seite erhalten Sie über die Funktion page::get_spread.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
outRef ItemRef - allokiertes ItemRef für das Ergebnis.
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)
spreadIndex int - 0-basierter Spreadindex. Den Spreadindex einer Seite erhalten Sie über die Funktion page::get_spread.
int main ()
{
    int			pg            = page::get (gFrame);
    int			indexInSpread;
    int			spread        = page::get_spread (0, pg, &indexInSpread);
    ItemRef		pageRef       = item::alloc ();
    ItemRef		spreadRef     = item::alloc ();
document::get_pageref (pageRef, 0, pg); document::get_spreadref (spreadRef, 0, spread);
wlog ("", "Spread %d (%d), Seite %d (%d), %d. page in Spread\n",   spread, item::getint (spreadRef),   pg, item::getint (pageRef), indexInSpread);
return 0; }

v3.3 R3500, 08.03.2012

priint:comet InDesign® Plug-Ins, comet_pdf

page::get_spread

static int document::has_overset(
  ItemRef docRef,
  ItemList frames = 0,
  ItemList tables = 0,
  IDTypeList cells = 0)

Hat ein Dokument mindestens einen Textübersatz? Der Übersatz kann in normalen Texten oder in Tabellenzellen sein.

Name Typ Default Beschreibung
Return int   0 : Kein Übersatz oder Fehler
1 : Mind. ein Text oder eine Tabellenzellen haben einen Übersatz
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)
frames ItemList 0 Die Liste enthält nach erfolgreicher Ausführung der Funktion alle Rahmen mit Textübersatz.
tables ItemList 0 Die Liste enthält nach erfolgreicher Ausführung der Funktion alle Tabellen mit Zellen mit Textübersatz. Die Liste hat die gleiche Länge wie cells und der i-te Eintrag der Liste ist die Tabellenreferenz des i-ten Eintrags aus cells.
cells IDTypeList 0 Die Liste enthält für jede Tabellenzelle mit Übersatz einen Eintrag vom Typ IDType mit den folgenden Werten:

idtype::id : 0-basierte Spalte
idtype::id2 : 0-basierte Zeile
idtype::id3 : UID der Tabelle. Zur Verwendung von UIDs siehe item::define. Alternativ kann die zugehörige Tabellenreferenz auch über den gleichen Listenindex aus der Liste tables ermittelt werden.
#include "internal/types.h"
#include "internal/table.h"
#include "internal/text.h"
#include "internal/products.h"
int main ()
{
    ItemList		frames	= itemlist::alloc ();
    ItemList		tables	= itemlist::alloc ();
    IDTypeList		cells	= idtypelist::alloc ();
    int				ov;
ov = document::has_overset (0, frames, tables, cells); if (ov) { wlog ("", "# Oversets : %d frame(s), %d table(s), %d cells(s)\n",   itemlist::length (frames),   itemlist::length (tables),   idtypelist::length (cells)); }
return 0; }

Lege über alle Tabellenzellen mit Übersatz einen roten Rahmen. Diese Rahmen sollen auf der Extra-Eben 'Overset' angelegt werden.

#include "internal/types.h"
#include "internal/table.h"
#include "internal/text.h"
#include "internal/products.h"
int main() { checkAndMarkOversets(); return 0; }
int checkAndMarkOversets() { ItemList frames = itemlist::alloc(); ItemList tables = itemlist::alloc(); IDTypeList cells = idtypelist::alloc(); int ov; char * layerName = "Overset";
layer::remove(layerName); layer::add(layerName, ""); ov = document::has_overset(0, frames, tables, cells); if (ov) handleOversetTable(tables, cells);
itemlist::release(frames); itemlist::release(tables); idtypelist::release(cells);
return 0; }
int handleOversetTable(ItemList tableList, IDTypeList cellList) { ItemRef fr = item::alloc(); ItemRef nFrame = item::alloc(); IDType idType; char * layerName = "Overset"; char * colorName = "Overset"; int c, r; Table t = table::alloc(); float x, y, x2, y2; float fx, fy, fx2, fy2; int i, j;
color::define_cmyk(colorName, 0.0, 1.0, 1.0, 0.0); for (i = 0; i < itemlist::length(tableList); i++) { itemlist::get(tableList, t, i); Tabelle aus der Liste abfragen idType = idtypelist::get(cellList, i); if (table::is_valid(t)) { c = idtype::id(idType); r = idtype::id2(idType); if (c < table::columns(t) && r < table::rows(t)) { table::get_cellbox(t, c, r, kFrameRelative, &x, &y, &x2, &y2, fr); frame::bbox(fr, &fx, &fy, &fx2, &fy2); frame::create2(nFrame, kRectangle, fx + x, fy + y, fx + x2, fy + y2, page::get(fr), layerName); frame::color(nFrame, colorName); frame::set_blending(nFrame, kBlendingBasic, 20.0); } } }
table::release(t); item::release(fr); item::release(nFrame);
return 0; }

v4.0.4 R7740, 01 Apr 2015

priint:comet InDesign® Plug-Ins

static int document::write_frame_info(
  ItemRef document,
  int frameSearchFlags,
  int documentType,
  int conflictBehavior,
  int frameType = 0,
  int page = -2,
  LinkList placeholders = 0)

Schreibe alle Informationen der Rahmen im Dokument in die Datenquellen. Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Dokument
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 - Rahmentyp der geschrieben wird.
0: Alle
1: Textrahmen
2: Bildrahmen
page int -2 Von welcher Seite sollen die Rahmen geschrieben werden?
-2: Alle Seiten
placeholders LinkList 0 Nur Platzhalter in dieser Liste berücksichtigen
#include "internal/frameinfos.h"

Alle Rahmen des Dokumentes schreiben

int main ()
{
    return document::write_frame_info(gDocument);
}

Nur Grafikrahmen von Seite 4 schreiben

int main ()
{
    document::write_frame_info(gDocument, 2, 4);
    return 0;
}

v4.0.5 R8423

priint:comet InDesign® Plug-Ins, comet_pdf

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

static int document::apply_frame_info(
  ItemRef document,
  int propertyFlags,
  int searchType,
  int documentType,
  int page = -2,
  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 - Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
propertyFlags int - Welche Informationen sollen wiederhergestellt werden?
Siehe frame::apply_frame_info
frameSearchFlags int kUseDefault Wie wird entschieden, aus welchem Dokument die gespeicherten Informationen kommen?
Siehe frame::apply_frame_info
documentType int kLocalDoc 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
page int -2 Auf welcher Seite sollen die Rahmeninformationen wiederhergestellt werden?
-2: Alle Seiten
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"

Alle Eigenschaften aller Rahmen des aktuellen Dokumentes wiederherstellen

#include "internal/frameinfos.h"
int main () { int propertyFlags =   kApplyScriptTags   + kApplyXPosAbs   + kApplyYPosAbs   + kApplyWidth   + kApplyHeight   + kApplyFrameRotate   + kApplyFrameSkew   + kApplyImageXOffset   + kApplyImageYOffset   + kApplyImageXScale   + kApplyImageYScale   + kApplyImageRotate   + kApplyImageSkew;
document::apply_frame_info(gDocument, propertyFlags, kUseDefault, kLocalDoc, kThrowError); return 0; }

v4.0.5 R8423

priint:comet InDesign® Plug-Ins, comet_pdf

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

static int document::delete_frame_info(
  ItemRef docRef,
  int frameSearchFlags = kUseDefault,
  int documentType = kLocalDoc,
  int conflictBehavior = kThrowError,
  int page = -2,
  int frameType = 0,
  LinkList placeholders = 0)

Lösche gespeicherte Rahmeninformationen aus den Datenquellen.

Wichtig: Diese Funktion löscht nur Frame Infos der Rahmen des Dokumentes. Es handelt sich hier um eine Hilfsfunktion die das Sammeln der Rahmen im Dokument erleichtert. Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Dokument
frameSearchFlags int kUseDefault Wie wird entschieden, aus welchem Dokument die gespeicherten Informationen kommen?
Siehe frame::apply_frame_info
documentType int kLocalDoc 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
page int -2 Auf welcher Seite sollen die Rahmeninformationen wiederhergestellt werden?
-2: Alle Seiten
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"

Alle Eigenschaften aller Rahmen des aktuellen Dokumentes löschen

#include "internal/frameinfos.h"
int main ()
{
    document::delete_frame_info(gDocument);
    return 0;
}

v4.0.5 R8423

priint:comet InDesign® Plug-Ins, comet_pdf

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

static int document::delete_frame_info2(ItemRef docRef)

Lösche gespeicherte Rahmeninformationen aus den Datenquellen.

Wichtig: Diese Funktion löscht alle je gespeicherten Frame Infos des Dokumentes. Mehr Informationen unter Frame Infos

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Angabe des Dokumentes

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

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

Alle jemals gespeicherten Frame Infos des aktuellen Dokumentes löschen

int main ()
{
    document::delete_frame_info2(gDocument);
    return 0;
}

v4.0.5 R9930

priint:comet InDesign® Plug-Ins, comet_pdf

document::delete_frame_info

static int document::create_mission_ui(ItemRef docRef, ItemList frames = 0)

Ruft die Eingabemaske zur Erstellung von Missions auf.

Optional kann eine Rahmenliste als Parameter eingegeben werden, um Missions für diese Rahmen zu erstellen. Mehr Informationen unter Missions

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
duplicateBehavior int 0 Was soll passieren, wenn die Mission bereits existiert?
0 - Nicht anlegen
1 - Erste existierende Mission ans Ende der Liste verschieben, alle anderen löschen
2 - Neue Mission als Duplikat erstellen
frames ItemList 0 Rahmen für die Missions erzeugt werden sollen.

Zeigt die Eingabemaske mit unterschiedlichem verhalten bei Duplikaten ja nach Tastenkombination. Kann für die selektierten Rahmen Missions erstellen.

int main()
{
    ItemList 	selected;
selected = itemlist::selected();
if (gRun == 1) { if (system::shiftkey()) { document::create_mission_ui(gDocument, 1, selected); // Move } else if (system::cmdkey()) { document::create_mission_ui(gDocument, 2, selected); // Duplicate } else { document::create_mission_ui(gDocument, 0, selected); // Skip } }
itemlist::release(selected);
return 0; }

v4.0.5 R10150

priint:comet InDesign® Plug-Ins

document::execute_missions
document::delete_missions
document::count_missions
document::remove_duplicate_missions

static int document::execute_missions(
  ItemRef docRef,
  int deleteAfterDone = 1,
  int alsoDeleteFailed = 0)

Führt alle Missions des Dokumentes aus. Mehr Informationen unter Missions

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
deleteAfterDone int 1 Sollen die Missions nach Ausführung gelöscht werden?
0 - Nein
1 - Ja
alsoDeleteFailed int 0 Auch Missions löschen, die fehlgeschlagen sind? Hat keinen Effekt wenn deleteAfterDone 0 ist.
0 - Nein
1 - Ja

Führt alle Missions im Dokument aus. Erfolgreich ausgeführte werden gelöscht, fehlerhafte nicht.

int main ()
{
    document::execute_missions(gDocument, 1, 0);
return 0; }

v4.0.5 R10150

priint:comet InDesign® Plug-Ins

document::create_mission_ui
document::delete_missions
document::count_missions
document::remove_duplicate_missions

static int document::count_missions(ItemRef docRef, int* count)

Zählt die Anzahl der Missions des Dokumentes. Mehr Informationen unter Missions

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Angabe des Dokumentes

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

Sonst: Gültige Dokumentreferenz (z. B. von document::get_front)
count int* - Ergebnis der Anzahl der Missions

Zeigt eine Nachricht, die die Anzahl der Missions im Dokument enthält.

int main ()
{
    int 	count 	= 0;
    document::count_missions(gDocument, &count);
    showmessage("%d", count);
return 0; }

v4.0.5 R10150

priint:comet InDesign® Plug-Ins

document::create_mission_ui
document::execute_missions
document::delete_missions
document::remove_duplicate_missions

static int document::delete_missions(ItemRef docRef)

Löscht alle Missions des Dokumentes. Mehr Informationen unter Missions

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Angabe des Dokumentes

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

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

Löscht alle Missions des Dokumentes.

int main ()
{
    document::delete_missions(gDocument);
return 0; }

v4.0.5 R10102

priint:comet InDesign® Plug-Ins

document::create_mission_ui
document::execute_missions
document::count_missions
document::remove_duplicate_missions

static int document::remove_duplicate_missions(ItemRef docRef)

Entfernt alle Duplikate von allen Missions des Dokumentes, so dass jede Mission maximal einmal übrig bleibt.

Mehr Informationen unter Missions

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
document ItemRef - Angabe des Dokumentes

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

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

Löscht alle Missionsduplikate des Dokumentes.

int main ()
{
    document::remove_duplicate_missions(gDocument);
return 0; }

v4.0.5 R10102

priint:comet InDesign® Plug-Ins

document::create_mission_ui
document::execute_missions
document::count_missions
document::delete_missions

static int document::prepare_translations(
  ItemRef docRef,
  int placeholderID,
  int autoStore,
  int get_record_id_func,
  IDType recordID,
  int behavior = 0)

Vorbereiten des Dokumentes für eine automatische Übersetzung. Alle im Dokument bestehenden Textplatzhalter werden entfernt. Danach wird der angegebene Platzhalter über alle Texte des Dokumentes gelegt und nur durch Tabellen, Tabellenzellen und Inlines unterbrochen. Zur Berechnung der RecordIDs wird für jeden neu angelegten Platzhalter einmal die übergebene Funktion get_record_id_func ausgeführt.

Der übergebene Platzhalter placeholderID muss existieren und als Textplatzhalter definiert sein!
Die Funktion entfernt bestehende Textplatzhalter aus dem Dokument.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
placeholderID int - ID eines definierten Textplatzhalters
autoStore int - Sollen die Platzhalter nach dem Anlegen und Verlinken automatisch zurückgeschrieben werden?

0 : Nein
1 : Ja, für jeden neuen Platzhalter wird das Store-Skript ausgeführt
get_record_id_func func_ptr - Name der Funktion, die zum Ermitteln der Record-IDs verwendet werden soll. Hier geben Sie einfach und ohne Anführungszeichen den Funktionsnamen an. Die Funktion muss folgenden Typ haben:

int my_function (IDType myRecordID, int placeholderID)

Der IDType myRecordID muss außerhalb der Funktion allokiert worden sein und bekommt bei Aufrufen zur Berechnung einer neuen ID die Variable recordID des Aufrufes von prepare_translations.

Rückgabewerte der Funktion get_record_id_func

1 : Platzhalter erstellen und mit der berechneten ID verlinken
0 : Platzhalter nicht anlegen
recordID IDType - Allokierter IDType für die Berechnung der nächsten ID
behavior int 0 Wie soll mit bestehenden Platzhaltern des Textes verfahren werden?

0 : Alle Platzhalter ersetzen
1 : Platzhalter mit der Platzhalter-ID placeholderID erhalten, alle anderen ersetzen
2 : Platzhalter erhalten

Eigentlich ist das alles gar nicht so schwer. Im Beispiel werden der IDType recordID erzeugt und die Funktion get_record_id definiert, die damit eine neue RecordID berechnet. Der Verweis auf die Funktion ist einfach das Wort get_record_id im Aufruf von prepare_translations. Zusätzlich geben Sie diesem Aufruf noch den allokierten IDType mit. Egal , wieviel Text Ihr Dokument jetzt enthält, get_record_id wird für jeden neuen Platzhalter einmal ausgeführt (und zählt die ID hoch).

int main ()
{	
    IDType		recordID	= idtype::alloc ();
idtype::set_id (recordID, 100); document::prepare_translations (0, 360, 1, get_record_id, recordID);
return 0; }
int get_record_id (IDType rid, int placeholderID) { idtype::set_id (rid, idtype::id (rid)+1); idtype::set_id2 (rid, 0); idtype::set_id3 (rid, 0); idtype::set_stringid (rid, "");
return 1; }

Parameter behavior seit R20457, 13. Okt 2017 v4.0.4 R7740, 01 Apr 2015

priint:comet InDesign® Plug-Ins

static int document::link_with_unique_placeholder(
  ItemRef docRef,
  int placeholderID,
  int autoStore,
  int get_record_id_func,
  IDType recordID)

Synonym für prepare_translations.

document::prepare_translations

static int document::schwarzfilmtausch(ItemRef docRef)

Dokument vorbereiten für den Schwarzfilmtausch. Beim Schwarzfilmtausch ist es wichtig, dass bunte Teile des Dokumentes sich bei Sprachwechseln nicht ändern. Damit Benutzer das nicht versehentlich machen, sperrt der Befehl alle Dokumentrahmen und setzt alle Tabellenzeilen auf feste Höhen. Zusätzlich werden alle Gestaltungsregeln und alle Nägel und Magnete aus den Dokumentrahmen entfernt.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)

v4.0.5 R9660, 19 Nov 2015

priint:comet InDesign® Plug-Ins, comet_pdf

static int document::get_blendingspace(ItemRef docRef)

Erfrage den Transparenzfüllraum eines Dokumentes.

Name Typ Default Beschreibung
Return int   -1 : Fehler
1 : RGB
2 : CMYK
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)

v4.0.5 R9813, 8 Jan 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static int document::set_blendingspace(ItemRef docRef, int blendSpace)

Setze den Transparenzfüllraum eines Dokumentes.

Soll das Dokument später gedruckt werden, sollten Sie unbedingt darauf achten, hier die richtige Einstellung zu haben. In der Regel ist das CMYK. Falsche Transparenzfüllräume führen zu falschen Druckergebnissen und können hohe Kosten verursachen.

Hier sehen Sie die gleichen Rahmen einmal mit CMYK und einmal mit RGB als Transparenzfüllraum:

        

    

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
blendSpace int - neuer Transparenzfüllraum

0 : Default
1 : RGB
2 : CMYK

Transparenzfüllraum hin- und herschalten.

int main ()
{
    int		blendingspace	= document::get_blendingspace (0);
if (blendingspace == 1) document::set_blendingspace (0, 2); else if (blendingspace == 2) document::set_blendingspace (0, 1);
return 0; }

v4.0.5 R9813, 8 Jan 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static int document::preflight(
  ItemRef docRef,
  char* profile,
  char* output,
  int maxlen = 0)

Preflight eines Dokumentes. Prüfung des Dokumentes gemäß den den im Preflight-Profil angegebenen Tests. Das Preflight-Profil kann dabei auch über einen Pfad festgelegt werden. In diesem Fall wird das Profil automatisch angelegt (und kann in späteren Aufrufen auch ohne Pfadangabe verwendet werden.) Das Anlegen des Profiles können Sie aber natürlich auch selbst machen: In InDesign® (Desktop) geht das über die Palette Preflight. In InDesign® Server mit der Javascript-Zeile

app.loadPreflightProfile(File(profilepath));

Unter comet_pdf hat der Befehl keine Wirkung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

1289 (preflightNotEmptyErr) : Die Prüfung des Dokumentes wurde erfolgreich durchgeführt und hat Fehler ergeben.
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)
profile String oder char* - Name oder Pfad des Preflight-Profiles. Bei der Angabe eines Pfades (Endung idpp) wird das Profil automatisch in InDesign® angelegt.

ACHTUNG : Wenn Sie einen Pfad verwenden, muß der Dateiname (ohne Endung natürlich) auch der Profilname sein, sonst wird bei jedem Aufruf ein weiteres Profil in InDesign® angelegt, jeweils mit einer neuen Nummer hinter dem Namen.
output String oder char* - Allokierter String für das Ergebnis

"" : Die Ergebnisse des Preflights werden in diesen String geschrieben. Achten Sie darauf, bei Verwendung von char* hier genügend Platz zu allokieren.

Vollständiger Pfad mit den Endungen 'pdf' oder 'txt' : Das Ergebnis wird in die angegebene Datei geschrieben. Existiert die Datei, wird sie überschrieben. ACHTUNG : Unter InDesign® Server wird der Export in PDF nicht unterstützt!
maxlen int 0 Länge des Ergebnisses in Bytes inkl. abschließender 0. Der Parameter wird nur ausgewertet, wenn output leer ("") und vom Typ char* ist. Ist das Ergebnis länger, wird es bei maxlen-1 abgeschnitten.
int main ()
{
    char		txt [100000];
    int			result;
if (system::shiftkey ()) strcpy (txt, "$DESKTOP/aaa.pdf"); result = document::preflight (0, "$DESKTOP/aaa.idpp", txt); wlog ("", "%d\n-------------------\n%s\n", result, txt);
return 0; }

Etwas schwieriger wird das mit Javascript. Hier nur der Vollständigkeit halber. Achtung: Das verwendete Preflight-Profil (hier profile_comet) muß in diesem Beispiel ins Dokument eingebettet sein!

var myPath 		= "/Users/paul/Desktop/preflight.indd"
var preflightName	= "profile_comet";
var reportPath	= "/Users/paul/Desktop/report.pdf";
var reportPathTxt	= "/Users/paul/Desktop/report.txt";
var gOptions    	= app.comet.ping () + ";-1;";
function checkPreflight() { var myDoc = app.documents[0]; var turnOff = false;
if (myDoc.preflightOptions.preflightOff) { myDoc.preflightOptions.preflightOff = false; turnOff = true; }
var myProfile = undefined; for (var tk = 0;tk < myDoc.preflightProfiles.length; tk++) { var prefLightname = myDoc.preflightProfiles[tk].name; if( prefLightname == preflightName) { myProfile = myDoc.preflightProfiles[tk]; break; } }
if (myProfile == undefined) { alert ("Preflight profile " + preflightName + " not found!"); if (turnOff) myDoc.preflightOptions.preflightOff = true; return; }
var allProcess = app.preflightProcesses; var myPreflight = app.preflightProcesses.add(myDoc, myProfile); // Set the preflight var
myPreflight.waitForProcess(); // Don't process the results until it has finished running
if (app.name.indexOf ('Server') > 0) { var results = myPreflight.aggregatedResults[2]; // Store the results in a variable var errorLog = File(reportPathTxt); errorLog.open("w"); for (var x = 0; x < results.length; x++) { errorLog.write(results[x]); errorLog.write("\n"); } errorLog.close(); } else { myPreflight.saveReport (File (reportPath)); }
if (turnOff) myDoc.preflightOptions.preflightOff = true; }
app.comet.use ("##type:xmlfolder;folder:$DESKTOP/fifo/priint 5.5/xmldata", "", "", false, ""); app.comet.documentOpen (myPath, true, gOptions); checkPreflight(); app.comet.documentClose (myPath, gOptions);

Parameter maxlen seit v4.0.5 R14201, 13. Dez 2016
v4.0.5 R10224, 1. März 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static int document::export_color_profiles(
  ItemRef docRef,
  char* destfolder,
  char* destXML = 0)

Exportieren der Farbprofile eines Dokumentes. Die Funktion exportiert das RGB- und das CMYK-Farbprofil, die ein gegebenes Dokument verwendet (InDesign® -Menü Bearbeiten -> Profile zuweisen...). Verwendet das Dokument einen aktuellen Farbraum (InDesign® -Menü Bearbeiten -> Farbeinstellungen...), wird das Profil des Arbeitsfarbraumes exportiert.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
destfolder String oder char* - Exportziel für die icc-Datei. Der Export kopiert die Profil-Datei in die Unterordner rgb bzw. cmyk des angegebenen Ordners. Fehlende Ordner werden automatisch angelegt. Bestehende Zieldateien werden überschrieben.
destXML String oder char* 0 Vollständiger Pfad einer colorprofiles.xml. Die Profil-Daten der exportierten Farbprofile werden in die angegebene XML eingetragen oder dort aktualisiert. Existiert die XML nicht, wird sie angelegt.

0 : ignorieren
int main ()
{
    document::export_color_profiles (0, "$DESKTOP/aaabbb", "$DESKTOP/aaabbb.xml");
return 0; }

v4.0.5 R13799, 6. Okt 2016

priint:comet InDesign® Plug-Ins, comet_pdf

static int document::get_color_profiles(
  ItemRef docRef,
  char* rgbProfile = 0,
  char* cmykProfile = 0,
  char* priority = 0)

Ermittle die Namen der Farbprofile, die iim Dokument eingestellt sind.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
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)
rgbProfile String oder char* 0 Name des RGB-Profiles

0 : Rückgabe ignorieren
cmykProfile String oder char* 0 Name des CMYK-Profiles

0 : Rückgabe ignorieren
priority String oder char* 0 Rendering Intention. Es wird einer der folgenden Werte zurückgegeben:

perceptual
saturation
relative
absolute
unknown

0 : Rückgabe ignorieren

v4.1.8 R30410, 18. Mar 2022

priint:comet InDesign® Plug-Ins, comet_pdf

static int document::clean_storyscrap(ItemRef docRef = 0)

Löschen unbenutzter Textstories im Dokument. Alle Dokumente, die mit priint:comet Plugins vor v4.0.5 R16180 eingefügte %!TT-Texte enthalten, enthalten fälschlicherweise auch einige unbenutzte Objekte die unter sehr seltenen Umständen zu Problemen mit dem InDesign® -Dokument führen. können. Mit Hilfe der Funktion document::clean_storyscrap können diese Objekte entfernt werden.

Bemerkungen:

Seit
Plugin Version 1.0.14
Letzte Änderung
30.06.2025, 17:48 Uhr
Autor
Paul Seidel

Alphabetic index HTML hierarchy of classes or Java