Dateioperationen.

Letzte Änderung :
30.07.2025, 07:35 Uhr

Dateioperationen. Dateien werden immer über ihren Pfad beschrieben. Wenn nicht anders angegeben, sind damit immer vollständige System-Pfade oder URLs gemeint. Unter Windows sind auch die sogenannten UNC-Pfade (\\paul\paul\develop) erlaubt.
Folgende Ersetzungen werden automatisch durchgeführt :

Um systemunabhängige Pfade definieren zu können, sollten unter Windows immer UNC-Pfade verwendet werden. Die Pfadtrenner in diesen Pfaden sind beliebig. Wenn Sie in cScripten den Backslash \ verwenden, sollten Sie aber daran denken, dass dieser in Strings als Escape-Zeichen verwendet wird (z.B. \n oder \t)und deshalb selbst auch mit \ "escaped" werden muss (also "\\").

\ als Pfadtrenner müssen in Strings verdoppelt werden.

strcpy (path, "\\\\paul\\paul\\develop\\");

Einschränkungen Mac:

Namen von Ordnern und Dateien dürfen aus historischen Gründen keinen Doppelpunkt (:) enthalten.

Unicode-Zeichen größer 0xFFFF in Pfaden (z.B. der Notenschlüssel 𝄞 mit dem Unicode 0x1D11E) werden nicht unterstützt.

static int file::size(char* path, int fork = 1)

Größe einer Datei oder eines Ordners.

Name Typ Default Beschreibung
Return int   Größe der Datei oder des Ordner in Bytes

0 : Datei/Ordner nicht gefunden oder Fehler
path String oder char* - Vollständiger Pfad
fork int 1 Welcher Teil der Datei soll verwendet werden. Die Angabe hat nur unter Mac OS eine Bedeutung.

0 : alle
1 : nur Data fork
2 : nur Resource fork

Bei Ordnern wird automatisch die Angabe 0 (all forks) verwendet.


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

static int file::open(
  char* path,
  char* permission,
  char* type = "TEXT",
  char* creator = "CWIE")

Öffne eine Datei zum Lesen oder Schreiben. Geöffnete Dateien müssen in jedem Fall wieder geschlossen werden.

Name Typ Default Beschreibung
Return int   Referenz auf die geöffnete Datei. Diese Referenz muss in den anderen file-Aufrufen verwendet werden.
-1 Fehler beim Öffnen
path String oder char* - Vollständiger Dateipfad der zu öffnenden Datei
permission String oder char* - Modus, in der die Datei geöffnet werden soll. Der String kann folgende Angaben (in beliebiger Reihenfolge) enthalten

r Lesen
w Schreiben
a Anfügen. Der Schreibmodus "w" wird automatisch gesetzt.
type String oder char* "TEXT" Wenn die Datei für Schreiben neu angelegt werden muss, kann hier der Dateityp angegeben werden. Die Angabe muss genau 4 Zeichen lang sein, z.B "TEXT".
creator String oder char* "CWIE" Wenn die Datei für Schreiben neu angelegt werden muss, kann hier die Kennung der Defaultapplikation angegeben werden, mit der die Datei geöffnet werden soll. Die Angabe muss genau 4 Zeichen lang sein, z.B "CWIE".

Öffne eine Datei, lies ihren gesamten Inhalt und füge den Inhalt in das Dokument ein.

int main ()
{
    int    	fi 		= file::open ("/Users/paul/Desktop/CLOB Kopie.txt", "r");
    char*	str 	= alloc (1000000);
    char    buf		[512];
    int		len;
*str = 0; while ((len = file::read (fi, buf, 511)) > 0) { buf[len] = 0; strcat (str, buf); } file::close (fi);
textmodel::insert (str, 0, -1); release (str); }

Version 3.2.2 R2370, 31.03.2011

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

static int file::create(
  char* path,
  int createPath = 0,
  int isFolder = 0)

Anlegen einer Datei oder eines Ordners im Filesystem.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
createPath int - Ordnerpfad ebenfalls anlegen?

0 : Nein, keine Ordner anlegen. Existiert ein Teil des Ordnerpfades nicht, erzeugt die Funktion in diesem Fall einen Fehler.

1 : Fehlende Ordner im Pfad automatisch anlegen.
isFolder int - Ist der gegebene Pfad ein Ordnerpfad?

0 : Nein, der letzte Teil des Pfades ist eine Datei

1 : Der gegebene Pfad ist ein Ordnerpfad. Erzeuge die vollständige Ordnerstruktur (unabhängig vom Wert von createPath).

Version 4.1.6 R25346, 25. Juni 2019

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

static int file::write(
  int refNum,
  char* buffer,
  int buflen = 0)

Schreibe in eine Datei.

Tipp: Ein netter Trick zum Schreiben von Textdateien ist auch die Verwendung von wlog mit einem nicht-leeren Pfadparamter.

Name Typ Default Beschreibung
Return int   0 Schreibfehler
>0 Anzahl der geschriebenen Zeichen
refNum int - Dateireferenz. Die Referenz wird als Ergebnis von open geliefert.
buffer String oder char* - Füge diesen Text an die Datei an
buflen int 0 Anzahl der zu schreibenden Zeichen
<=0 Stringlänge von buffer verwenden. Wenn buffer vom Typ char* ist, muss der übergebene Puffer ein gültiger C-String, also 0-terminiert sein!

Schreibe mehrere Textstücke in eine Datei. Die Datei wird zu Anschauungszwecken jedesmal neu geöffnet. Das Beispiel verzichtet zum Zwecke der besseren Lesbarkeit auf das Abfangen von Fehlern. in einer richtigen Anwendung sollte geprüft werden, ob die Datei geöffnet werden konnte und ob das Schreiben jeweils erfolgreich war.

int main ()
{
    int    		fi;
    int			len;
fi = file::open ("$DESKTOP/ttt.txt", "wa", "TEXT", "CWIE"); len = file::write (fi, "aaa\n"); file::close (fi);
fi = file::open ("$DESKTOP/ttt.txt", "wa", "TEXT", "CWIE"); len = file::write (fi, "bbb\n"); file::close (fi);
fi = file::open ("$DESKTOP/ttt.txt", "wa", "TEXT", "CWIE"); len = file::write( fi, "ccc\n"); file::close (fi);
return 0; }

Der Text des aktuellen Textmodelles wird base64-codiert in eine Datei geschrieben. Danach wird diese Datei wieder eingelesen. Original- und eingelesener Text sollten gleich sein. Achten Sie darauf, den Lesepuffer genügend groß zu machen oder in einer Schleife zu lesen und zu decodieren.

int main ()
{
    String			str			= string::alloc ();
    char		*	enc			= 0;
    char		*	dec			= 0;
    char			buf			[3001];
    int				fi			= 0;
    int				bytesRead	= 0;
textmodel::gettext (str);
// Encode to file enc = encode_base64 (string::get (str));
fi = file::open ("$DESKTOP/txt.txt", "w"); file::write (fi, enc); file::close (fi);
// Decode from file fi = file::open ("$DESKTOP/txt.txt", "r"); bytesRead = file::read (fi, buf, 3000); file::close (fi); strch (buf, bytesRead, 0, 1); dec = decode_base64 (buf);
showmessage ("%s\n\n%s\n\n%d", enc, dec, strcmp (string::get (str), dec));
release (enc); release (dec);
return 0; }

Lies eine Binärdatei und schreibe das Ergebnis in eine andere Datei. (Bitte beachten Sie: Das Sktipt dient lediglich zur Demonstration, im Produktivfall würden Sie hier besser die Funktion file::duplicate verwenden!)

int main ()
{
    String		str		= string::alloc ();
    int 		fileRef;
    int			fileSize;
// Read file fileRef = file::open("$DESKTOP/b1.jpg", "r"); fileSize = file::read_str (fileRef, str, 4); file::close (fileRef);
// Write read data to another file fileRef = file::open("$DESKTOP/b2.jpg", "w"); file::write (fileRef, string::data (str), fileSize); file::close (fileRef);
return 0; }

Version 3.2.2 R2370, 31.03.2011

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

static int file::read(
  int refNum,
  char* buffer,
  int maxlen)

Lesen aus einer Datei. Lese den Inhalt einer Datei. Das Ergebnis wird in einen char*-Puffer geschrieben.

Soll der Ergebniss-Puffer als String verwendet werden, muss der Puffer unbedingt 0-terminiert werden. Verwenden Sie dazu die Funktion strch.

Name Typ Default Beschreibung
Return int   0 Lesefehler oder Dateiende
>0 Anzahl der gelesenen Zeichen
refNum int - Dateireferenz. Die Referenz wird als Ergebnis von open geliefert.
buffer char* - Reservierter Speicher für den gelesenen Dateiinhalt
maxlen int - Länge des Puffers. Damit auch Binärdaten gelesen werden können, wird in den Puffer keine abschließende 0 geschrieben.

Der Text des aktuellen Textmodelles wird in eine base64-codiert in eine Datei geschrieben. Danach wird diese Datei wieder eingelesen. Original- und eingelesener Text sollten gleich sein. Achten Sie darauf, den Lesepuffer genügend groß zu machen oder in einer Schleife zu lesen und zu decodieren.

int main ()
{
    String			str	= string::alloc ();
    char		*	enc	= 0;
    char		*	dec	= 0;
    char			buf	[3001];
    int				fi	= 0;
    int				bytesRead = 0;
textmodel::gettext (str);
// Encode to file enc = encode_base64 (string::get (str));
fi = file::open ("$DESKTOP/txt.txt", "w"); file::write (fi, enc); file::close (fi);
// Decode from file fi = file::open ("$DESKTOP/txt.txt", "r"); bytesRead = file::read (fi, buf, 3000); file::close (fi); strch (buf, bytesRead, 0, 1); dec = decode_base64 (buf);
showmessage ("%s\n\n%s\n\n%d", enc, dec, strcmp (string::get (str), dec));
release (enc); release (dec);
return 0; }

Lies den Inhalt einer Textdatei und füge ihn in das aktuelle Textmodell ein.

int main ()
{
    char	*	path		= "$DESKTOP/Tabelle_Platzhalter.txt";
    int			fsize;
    int			fi			= 0;
    char	*	txt			= 0;
    char	*	buf			= 0;
    int			bytes		= 0;
fsize = file::size (path); if (fsize > 0) { txt = alloc (fsize+1); buf = txt; fi = file::open (path, "r"); while (1) { bytes = file::read (fi, buf, 3000); if (!bytes) { strch (buf, 0, 0); // set the end of the string break; } buf += bytes; } file::close (fi); } else { txt = alloc (4096); sprintf (txt, "File not found '%s'", path); }
wlog ("", "### %d ###\n", strlen (txt, 1)); textmodel::replace (txt); release (txt);
return 0; }

Version 3.2.2 R2370, 31.03.2011

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

strch

static int file::read_str(
  int refNum,
  String result,
  int encoding = 0)

Lese den Inhalt einer Datei als String. Das Ergebnis wird in eine allokierte String Variable geschrieben.

read_str ließt Dateiinhalte immer als Strings. Beim Versuch eine Binärdatei einzulesen, wird das Resultat ab der ersten 0 abgeschnitten.

Name Typ Default Beschreibung
Return int   0 Lesefehler oder Dateiende
>0 Anzahl der gelesenen Zeichen

Abhängig vom verwendeten Encoding und von 0-Bytes im Ergebnis kann diese Angabe anders als die Länge von buffer sein. Zur Verwendung von Ergebnissen mit 0-Bytes aus Binärdateien kann die Funktion string::data verwendet werden.
refNum int - Dateireferenz. Die Referenz wird als Ergebnis von open geliefert.
buffer String - Reservierter Speicher für den gelesenen Dateiinhalt
encoding int 0 In welcher Codierung liegt die Quelldatei vor?
0: Utf8
1: Systemzeichensatz
2: CP1252
3: Mac Roman
4: Binärdaten Das Ergebnis wird in diesem Fall nicht 0-terminiert!

Lesen einer JavaScript-Datei als String und anschließendes Ausführen des Scriptes

int main()
{
    String 		script 		= string::alloc();
    String 		pathStr 	= string::alloc("C:/Temp/HelloWorld.jsx");
    int 		exists 		= 0;
    int 		fileRef 	= 0;
exists = file::exists(pathStr);
if (exists != 0) { fileRef = file::open(pathStr, "r"); file::read_str(fileRef, script); file::close(fileRef); run_javascript(script); }
string::release(script); string::release(pathStr);
return 0; }

Lies eine Binärdatei und schreibe das Ergebnis in eine andere Datei. (Bitte beachten Sie: Das Sktipt dient lediglich zur Demonstration, im Produktivfall würden Sie hier besser die Funktion file::duplicate verwenden!)

int main ()
{
    String		str		= string::alloc ();
    int 		fileRef;
    int			fileSize;
// Read file fileRef = file::open("$DESKTOP/b1.jpg", "r"); fileSize = file::read_str (fileRef, str, 4); file::close (fileRef);
// Write read data to another file fileRef = file::open("$DESKTOP/b2.jpg", "w"); file::write (fileRef, string::data (str), fileSize); file::close (fileRef);
return 0; }

Version 4.1 R17030

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

Parameter encoding seit v4.1 R22123, 28. März 2018
file::read

static int file::close(int refNum)

Schließe eine Datei

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
refNum int - Dateireferenz. Die Referenz wird als Ergebnis von open geliefert.

Version 3.2.2 R2370, 31.03.2011

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

static int file::download(
  char* url,
  char* path,
  int replace_existing = 0,
  ...)

Lade eine Datei über einen URL. Die neu angelegte Datei oder der Ordner bekommen den Namen, der im Zielpfad angegeben ist. Während des Downloads wird kein Progress-Balken gezeigt. Für den Download werden Funkionen des jeweiligen Betriebssystemes verwendet.

Ab dem vierten Funktionsparameter kann eine beliebig lange Schlüssel-Werte-Liste mit Parametern für einen den Download angegeben werden. Ist die Liste nicht leer, wird der Download mit Hilfe von curl gemacht. Die folgende Tabelle enthält alle unterstützen curl-Optionen und den jeweils erwarteten Datentyp. Die Angabe der Schlüssel ist case insensitive. Falsche Datentypen können zum Absturz des Programmes führen. Der Datentyp Path ist ebenfalls ein String oder char* mit der Erweiterung, dass $ALIASSE am Pfadanfang automatisch ersetzt werden. Globale und Datenbank-Tags wie <folder> oder <sessionId> in den String- und Path-Werten werden automatisch durch ihre aktuellen Werte ersetzt. Die in der Spalte Listenwert mit ✗ markierten Einträge werden addiert, alle anderen Mehrfach-Definitionen überschreiben die vorherigen Definitionen. Eine Beschreibung der curl-Parameter finden Sie hier.

Mit shttps kann der sichere Download unabhängig von den Download-Optionen des Aufrufes erzwungen werden.

shttps://www.hi13.de/aaa.png
Bezeichner Typ Default Listenwert
Verwendete Standardeinstellungen
"POSTREDIR"int7 (CURL_REDIR_POST_ALL)
"FOLLOWLOCATION"int1
"FAILONERROR"int1
"USERAGENT"Path" " (blank)
"REDIR_PROTOCOLS"int-1 (CURLPROTO_ALL)
"AUTOREFERER"int1
"CONNECTTIMEOUT"int3
"SSL_VERIFYHOST"int0
"SSL_VERIFYPEER"int0
"SSL_SSLCERTTYPE"String oder char*"PEM"
"SSL_CAINFO"String oder char*NULL
Abkürzungen
"-" oder "INSECURE" int

Dieser Parameter ist nützlich, um den curl-Download mit den Standardeinstellungen (siehe oben) zu aktivieren.

Die Option muß die erste der Liste sein. Die Wertangabe wird ignoriert und sollte mit 0 angegeben werden (..., "-", 0, ...). Weitere Optionen dürfen folgen.

"+" oder "SECURE" int

Download mit aktivierter Zertifikatsprüfung:

"SSL_VERIFYPEER", 1

Die Option muß die erste der Liste sein. Die Wertangabe wird ignoriert und sollte mit 0 angegeben werden (..., "+", 0, ...). Weitere Optionen dürfen folgen.

Beachten Sie bitte, dass die aktuellen Benutzerzertifikate aus Performance-Gründen nur einmal bei der ersten Verwendung geladen werden! Spätere Änderungen an den Zertifikaten werden erst bei Neustart des Programmes regisrtiert.

"NOP" intSetzen Sie diesen Wert, wenn Sie keine einzige CURL-Option benötigen, aber für den Download die Verwendung von CURL erzwingen wollen.
Zusatzeinstellungen
"POSTREDIR" int
"ABSTRACT_UNIX_SOCKET" String oder char*
"ACCEPTTIMEOUT_MS" int
"ACCEPT_ENCODING" String oder char*
"ADDRESS_SCOPE" int
"APPEND" int
"AUTOREFERER" int
"CAINFO"Path

Pfad einer gültigen PEM-Datei. Das in der Datei enthaltene Zertifikat wird an die aktuelle Zertifikatsliste des Benutzers angefügt und die Option "SSL_VERIFYPEER" wird automatisch aktiviert.

Existiert die Datei nicht, wird die Option ignoriert.

Beachten Sie bitte, dass die aktuellen Benutzerzertifikate aus Performance-Gründen nur einmal bei der ersten Verwendung geladen werden! Spätere Änderungen an den Zertifikaten werden erst bei Neustart des Programmes regisrtiert.

"CERTINFO" int
"CONNECTTIMEOUT" int
"CONNECTTIMEOUT_MS" int
"COOKIE" String oder char*
"COOKIEFILE" Path
"COPYPOSTFIELDS" String oder char*
"CRLF" int
"CRLFILE" Path
"CUSTOMREQUEST" String oder char*
"DEFAULT_PROTOCOL" String oder char*
"DIRLISTONLY" int
"DNS_CACHE_TIMEOUT" int
"DNS_INTERFACE" String oder char*
"DNS_LOCAL_IP4" String oder char*
"DNS_LOCAL_IP6" String oder char*
"DNS_SERVERS" String oder char*
"DNS_USE_GLOBAL_CACHE" int
"EGDSOCKET" String oder char*
"FILETIME" int
"FTPPORT" String oder char*
"FTPSSLAUTH" int
"FTP_ACCOUNT" String oder char*
"FTP_ALTERNATIVE_TO_USER" String oder char*
"FTP_CREATE_MISSING_DIRS" int
"FTP_FILEMETHOD" int
"FTP_RESPONSE_TIMEOUT" int
"FTP_SKIP_PASV_IP" int
"FTP_SSL_CCC" int
"FTP_USE_EPRT" int
"FTP_USE_EPSV" int
"FTP_USE_PRET" int
"GSSAPI_DELEGATION" int
"HEADER"Path
"HEADEROPT" int
"HTTP200ALIASES" String oder char*
"HTTPAUTH" int
"HTTPGET" int
"HTTPHEADER" String oder char*
"HTTPPROXYTUNNEL" int
"HTTP_CONTENT_DECODING" int
"HTTP_TRANSFER_DECODING" int
"HTTP_VERSION" int
"IGNORE_CONTENT_LENGTH" int
"INTERFACE" String oder char*
"IPRESOLVE" int
"ISSUERCERT" Path
"KEEP_SENDING_ON_ERROR" int
"KEYPASSWD" String oder char*
"KRBLEVEL" String oder char*
"LOCALPORT" int
"LOCALPORTRANGE" int
"LOGIN_OPTIONS" String oder char*
"LOW_SPEED_LIMIT" int
"LOW_SPEED_TIME" int
"MAIL_AUTH" String oder char*
"MAIL_FROM" String oder char*
"MAIL_RCPT" String oder char*
"MAXCONNECTS" int
"MAXFILESIZE" int
"MAXFILESIZE_LARGE" int
"MAXREDIRS" int
"MAX_RECV_SPEED_LARGE" int
"MAX_SEND_SPEED_LARGE" int
"NEW_DIRECTORY_PERMS" int
"NEW_FILE_PERMS" int
"NOBODY" int
"NOPROXY" String oder char*
"PASSWORD" String oder char*
"PATH_AS_IS" int
"PINNEDPUBLICKEY" String oder char*
"PIPEWAIT" int
"PORT" int
"PREQUOTE" String oder char*
"PRE_PROXY" String oder char*
"PROTOCOLS" int
"PROXY" String oder char*
"PROXYAUTH" int
"PROXYHEADER" String oder char*
"PROXYPASSWORD" String oder char*
"PROXYPORT" int
"PROXYTYPE" int
"PROXYUSERNAME" String oder char*
"PROXYUSERPWD" String oder char*
"PROXY_CAINFO" Path
"PROXY_CAPATH" Path
"PROXY_CRLFILE" Path
"PROXY_KEYPASSWD" String oder char*
"PROXY_SERVICE_NAME" String oder char*
"PROXY_SSLCERT" String oder char*
"PROXY_SSLCERTTYPE" String oder char*
"PROXY_SSLKEY" Path
"PROXY_SSLKEYTYPE" String oder char*
"PROXY_SSLVERSION" int
"PROXY_SSL_CIPHER_LIST" String oder char*
"PROXY_SSL_OPTIONS" int
"PROXY_TLSAUTH_PASSWORD" String oder char*
"PROXY_TLSAUTH_TYPE" String oder char*
"PROXY_TLSAUTH_USERNAME" String oder char*
"PROXY_TRANSFER_MODE" int
"PUT" int
"QUOTE" String oder char*
"RANDOM_FILE" Path
"REDIR_PROTOCOLS" int
"REFERER" String oder char*
"RESOLVE" String oder char*
"RESUME_FROM" int
"RESUME_FROM_LARGE" int
"RTSP_CLIENT_CSEQ" int
"RTSP_REQUEST" int
"RTSP_SERVER_CSEQ" int
"RTSP_SESSION_ID" String oder char*
"RTSP_STREAM_URI" String oder char*
"RTSP_TRANSPORT" String oder char*
"SERVICE_NAME" String oder char*
"SSH_AUTH_TYPES" int
"SSH_HOST_PUBLIC_KEY_MD5" String oder char*
"SSH_KNOWNHOSTS" Path
"SSH_PRIVATE_KEYFILE" Path
"SSH_PUBLIC_KEYFILE" Path
"SSLCERT" String oder char*
"SSLCERTTYPE" String oder char*
"SSLENGINE" String oder char*
"SSLENGINE_DEFAULT" int
"SSLKEY" Path
"SSLKEYTYPE" String oder char*
"SSLVERSION" int
"SSL_CIPHER_LIST" String oder char*
"SSL_ENABLE_ALPN" int
"SSL_ENABLE_NPN" int
"SSL_FALSESTART" int
"SSL_OPTIONS" int
"SSL_SESSIONID_CACHE" int
"SSL_VERIFYHOST" int
"SSL_VERIFYSTATUS" int
"SSL_VERIFYPEER" int
"SUPPRESS_CONNECT_HEADERS" INT
"TCP_FASTOPEN" int
"TCP_KEEPALIVE" int
"TCP_KEEPIDLE" int
"TCP_KEEPINTVL" int
"TCP_NODELAY" int
"TELNETOPTIONS" String oder char*
"TFTP_BLKSIZE" int
"TFTP_NO_OPTIONS" int
"TIMECONDITION" int
"TIMEOUT" int
"TIMEOUT_MS" int
"TIMEVALUE" int
"TLSAUTH_PASSWORD" String oder char*
"TLSAUTH_TYPE" String oder char*
"TLSAUTH_USERNAME" String oder char*
"TRANSFERTEXT" int
"TRANSFER_ENCODING" int
"UNIX_SOCKET_PATH" String oder char*
"UNRESTRICTED_AUTH" int
"USERNAME" String oder char*
"USERPWD" String oder char*
"USE_SSL" int
"WILDCARDMATCH" int
"XOAUTH2_BEARER" String oder char*

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
url String oder char* - URL oder vollständiger Pfad zum Original
path String oder char* - Zielpfad inklusive Name
replace_existing int 0 Soll das Original überschrieben werden?

1 : Ja
0 : Nein
... siehe oben leer Schlüssel-Wert-Paare mit curl-Optionen

Download der Datei index.html der Webseite www.hi13.de.

err_code = file::download ("http://www.hi13.de/index.htm",
 	"your_path",
 	1);

Download der Datei index.html der Webseite www.hi13.de mit Hilfe von curl.

err_code = file::download ("http://www.hi13.de/index.htm",
 	"your_path",
 	1,
 	"-");

Download der Datei index.html der Webseite www.hi13.de mit Hilfe von curl und selbstsigniertem Zertifikat.

err_code = file::download ("http://www.hi13.de/index.htm",
 	"your_path",
 	1,
 	"SSL_VERIFYPEER", 1,
 	"CAINFO", "$DESKTOP/my_certificat.pem",
 	"COOKIE", "PubServSessID=<Unquoted_sessionId>");

Mit system::cmd können Sie den Aufruf von curl auch selbst machen. Beachten Sie aber bitte, dass das Programm curl in diesem Fall auf dem Zielrechner installiert sein muß. Hier finden Sie einen Download von curl.

int main ()
{
    char    url [1024];
    char    fi  [1024];
    char    cmd [2048];
strcpy (url, "https://enterprise.celum.net/cora/download?ticket=7d328316-1515-4595-8ff1-47311b6ca24b"); strcpy (fi, "\\Users\\paul\\Desktop\\aaa.txt");
strcpy (cmd, "C:\\Users\\paul\\AppData\\Local\\Apps\\cURL\\bin\\curl.exe --url "); strcat (cmd, url); strcat (cmd, " --output "); strcat (cmd, fi);
system::cmd (cmd , 1); return 0; }

Version 3.2.2 R2370, 31.03.2011

curl-Optionen seit v4.1.8 R27723, 16. Nov 2020

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

comet.file.download

static int file::download_webimages(
  ItemRef docRef,
  char* destpath,
  StringList urls,
  int flags = 0,
  IDTypeList results = 0)

Paralleler Download einer Liste von Web-Bildern. Durch die parallele Bearbeitung wird der Download um ein Vielfaches schneller als das einzelne Laden der Bilder. Im Test wurden 60 Bilder statt in 30 Sekunden in nur 0,6 Sekunden geladen. Wenn Sie also z.B. vor einem Produktaufbau ermittlen können, welche Bilder dafür benötigt werden, können Sie den Aufbau ihrer Produkte mglw. deutlich beschleunigen.

Die Bilder werden in der gleichen Datei abgelegt, die auch für die Web-Bilder eines Dokumentes verwendet wird. Die in Web-Bildern unterstützten ////-Zusatzangaben zur Dateiablage werden dabei unterstützt.

Alternativ können die Bilder auch in eimem festgelegten Ordner abgelegt werden. Enthält die ////-Definition einen vollständigen Pfad, wird der gemeinsame Ordner ignoriert und das Bild an der in der URL definiereten Stelle abgelegt.

Wenn die URLs Passwörter enthalten, sollte die Option 'kNoHash' verwendet werden, da die Verschlüsselung der Passwörter bei jedem Aufruf unterschiedliche Ergebnisse liefert und dementsprechend der Hash-Code, der aus der verschlüsselten URL generiert wird, bei jedem Aufruf unterschiedliche Dateinamen erzeugt, auch wenn die URL sich nicht ändert.

Wenn diese Funktion verwendet wird, ist es sinnvoll, nachfolgende Aufrufe von frame::image mit dem Wert 16 (suppress checking header) im Parameter updateFlags zu machen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode

-1199 : Download abgebrochen
1294 : Neues ungesichertes Dokument ohne Dateipfad
-43 : Mind. eine Datei konnte nicht geladen werden
3013 : Verbindungsfehler bei mindestens einer Datei
sonst : HTTP-Fehlercode
docRef ItemRef - Dokument-Referenz

0 : Aktuelles Dokument
destPath String oder char* - Download-Ordner

0 oder "" : docRef verwenden
sonst : Vollständiger Pfad des Download-Ordners. Existiert der Ordner nicht, wird er angelegt. Der Pfad darf mit einem definierten $-Alias beginnen.
urls StringList - Liste der Bild-URLs. Die URLs dürfen die üblichen ////-Angaben für Web-Bilder haben.
flags int 0 Zusatzangaben zum Download

0 : keine
1 : Progressbalken zeigen (nur InDesign®)
results IDTypeList 0 Ergebnisse der einzelnen Downloads

0 : Ergebnisse ignorieren

sonst : Allokierte Liste für die Einzelergebnisse. Die Liste hat nach dem Ausführen der Funktion die gleiche Länge wie die Eingabeliste urls. idtype::id der Einträge enthält den Fehlercode des Downloads, idtype::stringid der Einträge enthält den vollständigen Pfad der Downloaddatei. Bei den Fehlern -1199 (Abbruch) und 1294 (kein Dokumentpfad) bleibt die Liste leer.
int main ()
{
    StringList 		urls	= stringlist::alloc ();
    IDTypeList 		results	= idtypelist::alloc ();
    IDType 			res;
    int				result;
stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w0MDAzfGltYWdlL2pwZWd8YUdFNEwyZzJaUzh4TXprNU56VTBOVFl4T1RRNE5nfDk1NWMyNDA4YTc1YmQxZTA5YmRiOGU1ZjNjMjMzNDhiZTJlYzFmODYwNDVlN2VlNGYwNTkwMTJmN2YzNDczMGY////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w0NzMxMHxpbWFnZS9qcGVnfGFERmxMMmhrTkM4eE1qSTJOVE13TkRNNU1UY3hNQXwyOGFjYmM2MGZlOTJhZDIyMDBmMzkxZDg5Nzc0OWQ0OWUxYmQ1ZmM5MTUzNDdkYjIzY2QwNzIwZTJjZDQ1MWY5////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w1MDA0NHxpbWFnZS9qcGVnfGFEbGpMMmhqWkM4eE16STJOakUzTVRrMU16RTRNZ3xlOWZiYzM1NDAyYWQ0ZDVlOTMzMDMwZjY3ZDRmNDA2YTBlZmRlNjFkYWY5NWZlOGIyNzZmZjA1NTA1OWI3YTll////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w1MDA0NHxpbWFnZS9qcGVnfGFHVTBMMmhsWmk4eE16STJOak14TXpnek9EWXlNZ3w3ZjJmY2QwN2JlMmRiNzkyYTU0YmY0MDdhNGI4ZjRiYjM3OWYzZjg1ZDY0YTdmYmQxZThmZmYyNWVlZWFhYjA0////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w1MDk5OXxpbWFnZS9qcGVnfGFHSmxMMmcxWkM4eE16azVOemc0T0RRd05UVXpOQXw3MmQ0ZDY5YWJiMzBkNjQ0NWVhNmYzODVkZTllYzI4OTcyYTNhNjg2YWZhYTBhNjA2MTM5MDAyZTYxNDc1NTUx////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w1MjUxMnxpbWFnZS9qcGVnfGFHUXpMMmhsWXk4eE16STJOak14TXprd05ERTFPQXwyNzMyZmMyNTBiMzQ1ZjI3MDM3M2E5NDU1MWYzOTkxODY3ZTc5YTliMGQ1ZTZiNjZmMjNlNmRjNmRkNDFjNGJj////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w1NjEyfGltYWdlL2pwZWd8YUdWbUwyZzBNQzh4TXprNU9EQTJORFV6TXpVek5BfDgxYjcwYjBiZmZhMGM5YjRiNmYzMTY2NTE1NjdjMWVjZWNjOTg5MTgxNjUwN2VlNGRiNmFkOTNkZmRhYWZmNzA////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2NDcwN3xpbWFnZS9qcGVnfGFEQTFMMmhoWmk4eE16STJOakUzTVRBMk9EUTBOZ3xkYjk2NjdiMzhmZDIyMDlhZTVmZmMwYzE3YTRhZTVmODU4MjI5NzI0YzM5MGMzMjhjMDk2ZWVkMmZkNTk1MmU0////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2NDcwN3xpbWFnZS9qcGVnfGFEZGpMMmhsWXk4eE16STJOak14TXprek5qa3lOZ3w1MzBiNDZmYzQwMzZhZDlkZjBkNTUzMmI3YTIzMjBiZjhmMTU1OTA5ZDg1NmMxMTg0N2QxYjQxODdkMzMwNmY5////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2ODg0fGltYWdlL2pwZWd8YVcxaFoyVnpMMmhtT0M5b016a3ZPVGczTkRReE1qRXdPVGcxTkM1cWNHY3w1ZmQxYTQwNGI5YzJiZjYzZDVjMzk1MDFhYWVjODU4OWQ2YWUwN2I0MzEwNjgxYjAxNmI0NDBmYmY5YWRlMzM1////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2OTE5OXxpbWFnZS9qcGVnfGFEWXdMMmhqTkM4eE16STJOakUyT1RRNU5UVTRNZ3xlOTQ4NTZhOGY4NzQwNjk1MmVkOGYzMTMxYWEzYjgzYjZjMGQ2NmM4MTZiYzZiMjFmYzllOWI0MmY1ZWRkYzY2////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2OTI3NHxpbWFnZS9qcGVnfGFHRmtMMmhqWmk4eE16Z3dNVGc0TlRjMk1UVTJOZ3xhMTkxMzVhZDI4YmMwN2ExNjM0NGIzOGFiNmUxZmYyMzNhNjhjNDNlMDFlYjBjYzZiYjdkNjgwMjI4YWU2Zjk4////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w2OTYyfGltYWdlL2pwZWd8YURJNUwyZ3lZeTh4TXpnd01qYzBNelE1Tmpjek5BfDRjNTA4NDJkMmRhY2QxMTk0NTAwZjQ5NzdmMTI1ZGFiODMxYTNhM2NiM2ZmNmM1NTYxMjgyZmEzMTFkNWIyOTY////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w3MjM1fGltYWdlL2pwZWd8YURreUwyaGhOQzh4TXpjNU56azJOek0yTkRFeU5nfDU1MzJiYzRjYjg5Yzg0ZjljMjI5ODcyMDI4ZjdlMjQyMWRkMzZjZDJmOTVhM2Q5MzMyYTM3NGY1NTliZWM3ZTk////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3w4OTg4fGltYWdlL2pwZWd8YURrekwyZ3daQzh4TXprNU9EUXlNVGt6TkRFeE1BfGNmOWE1NjQ0ZWU5MjIzNzQ3OGQ3ZWI4MTZkNGRmOTQ4MTE3MTZmYjFkMGZlZTI1MGJkYWYwZDI3ZmJiZTVlNDQ////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3wxMDUyMnxpbWFnZS9qcGVnfGFEbG1MMmhrTnk4eE16azVPVEEzTlRJNU5USTJNZ3wzNWVjMGNlZTZkN2I3N2E4YTc1OGM4ZTZkNjk1NjU3NmNhYWQyMTM2NzM3MGUyY2VlZmY3MzUzMmZkNmZjOTE3////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3wxMDY2NHxpbWFnZS9qcGVnfGFHUTJMMmd3TUM4eE16azVOemczT1RZMU5qUTNPQXxjZDY3ZTc4NmUxYmE4ZDdlMWZiY2IwMDkzNjI3MmUyYTQyNWYyZWNkYWJjZDAzMjY0YmY4NDQxZTljOGFiYjQ4////kOnlyHash"); stringlist::append (urls, "https://www.your_company.com/medias/?context=bWFzdGVyfGltYWdlc3wxMjA3NHxpbWFnZS9qcGVnfGFEY3hMMmczWXk4eE16azVPRGN6T1RjMU1EazBNZ3wzMzk1MWEzODA5NzAxZjY4ODIyMmQ5NjFiYjIwODcyOWI4OWFkMmNhZjdjM2RhYjE4NjE0YzU4OTI4MDNkNzAx////kOnlyHash");
result = file::download_webimages (0, 0, urls, 1, results);
wlog ("", "download_webimages result %d %d\n", result, idtypelist::length (results)); for (res = idtypelist::first (results); res; res = idtypelist::next (results)) { wlog ("", "%d : '%s'\n", idtype::id (res), idtype::stringid (res)); } return 0; }

v4.3 R33910, 23. Nov 2024

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

comet.file.downloadWebImages

static int file::upload(
  char* path,
  char* url,
  int replace_existing = 0)

[ab Version 3.2.2 R2370] Verschicke eine lokale Datei zu einer angegebenen URL. Wenn der Server eine Benutzkennung fordert, müssen Benutzername und Passwort in der URL angegeben werden. Name und Passwort werden in der Form benutzer:passwort@ direkt hinter ftp:// angegeben.

Hinweise

Beachten Sie bitte die folgenden Hinweise:

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
path String oder char* - vollständiger Pfad der Datei, die versendet werden soll.
url String oder char* - URL oder vollständiger Pfad zum Original inklusive Namen. Beachten Sie bitte die oben angegebenen Hinweise!
replace_existing int 0 Wird nicht ausgewertet. Existierende Dateien im Zielsystem werden immer ersetzt.

Lade die Datei index.html auf die Webseite www.hi13.de.

err_code = file::upload ("$DESKTOP/index.html",
 	"ftp://benutzer:passwort@www.hi13.de/index.html");

Version 3.2.2 R2370, 31.03.2011

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

file::download

static int file::launch(char* path)

Öffne eine Datei in ihrem Standardprogramm. Der Befehl wirkt wie Doppelklick der Datei im Finder/Explorer. Mit der Anweisung können auch URLs geöffnet werden (nur Mac). Bei der Angabe von URLs wird der URL im Standardbrowser angezeigt. URLs dürfen keine Kürzel wie $DESKTOP enthalten.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
path String oder char* - Vollständiger Pfad der zu öffnenden Datei oder Ordner oder URL (nur Mac)

öffne einen Verweis in die aktuelle Online-Doku.

int main ()
{
    char		url[512];
strcpy (url, "file://"); strcat (url, file::uncurtain ("$COMET")); strcat (url, "/Doku_"); strcat (url, translate (0, "$LOCALE", 0)); strcat (url, "/InDesign/Plugins/w2plugins.html#Aktivierung");
file::launch (url);
return 0; }

URLs unterstützt ab Version 2.1 R1830, 31.03.2010

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

static int file::exists(char* path)

Existiert die Datei/der Ordner?

Mit der Anweisung kann auch geprüft werden, ob ein Bild einer CC Library noch existiert oder gelöscht wurde. Bitte beachten Sie, dass die heruntergeladenen Bilddateien gelöschter CC Libraries-Bilder weiter physikalisch auf ihrem Rechner liegen können, auch wenn der entsprechende Eintrag bereits aus der Bibliothek gelöscht wurde. Die Funktion prüft deshalb den Status des CC Libraries Bildes, nicht die Existenz der geladenen Bilddatei!

Die CC Libraries werden von Adobe ständig weiterententwicklt. Leider gibt es keinerlei Schnittstelle für Javascript oder C++ dafür. Unsere Implementierung ist das Ergebnis eines deep diving in die XMLs und JSONs von CCLib und kann auf Annahmen beruhen, die sich seit der Einführung der Funktion im November 2020 geändert haben. Bitte haben Sie Verständnis dafür, dass wir die Funktion bis zur Einführung einer CCLib-Schnittstelle durch Adobe nicht weiterentwickeln.

Name Typ Default Beschreibung
Return int   0 Nein
1 Ja
path String oder char* - Vollständiger Pfad auf eine Datei oder einen Ordner. Der Pfad darf mit einem der definierten Aliase beginnen.

"CC Libraries: lib_name/image_name" : Prüfe, of das gegebene CC Libraries Bild (noch) gültig ist

Version 1.1.6

Unterstützung der CC Libraries seit v4.1.8 R27691, 2. Nov 2020

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

isfile
isfolder
frame::image_getpath
frame::image

static int file::isfile(char* path)

Zeigt der angegebene Pfad auf eine Datei?

Name Typ Default Beschreibung
Return int   0 Nein
1 Ja
path String oder char* - Vollständiger Pfad auf eine Datei oder einen Ordner

Version 1.1.6

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

exists
isfolder

static int file::isfolder(char* path)

Zeigt der angegebene Pfad auf einen Ordner?

Name Typ Default Beschreibung
Return int   0 Nein
1 Ja
path String oder char* - Vollständiger Pfad auf eine Datei oder einen Ordner

Version 1.1.6

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

exists
isfile

static int file::select_file(
  char* outpath,
  char* title = 0,
  int askForNew = 0,
  char* suggestion = 0)

Dateiauswahl über einen Dateidialog.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
outpath String oder char* - Vollständiger Pfad auf die ausgewählte Datei
title String oder char* 0 Beschriftung des Dateiauswahldialoges
askForNew int 0 1 : Erfrage eine existierende Datei
0 : Pfad einer neuen Datei oder eines Ordners erfragen
suggestion String oder char* 0 Namensvorschlag oder leer. Der Parameter wird nur ausgewertet, wenn askForNew == 1 ist.

Version 1.2 (21. Juni 2005)
v4.1.7 R27311, 20. Jul 2020

priint:comet InDesign® Plug-Ins, Illustrator

select_file
comet.dialog.selectFile

static int file::select_folder(char* outpath, char* title = 0)

Ordnerauswahl über einen Dateidialog.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
outpath String oder char* - Vollständiger Pfad des ausgewählten Ordners
title String oder char* 0 Titel des Ordnerauswahl-Dialoges

Version 1.2 (21. Juni 2005)

priint:comet InDesign® Plug-Ins, Illustrator

select_file
comet.dialog.selectFolder

static char* file::name(char* result, char* path)

Die Funktion ermittelt den systemabhängigen letzten Teil des übergebenen Pfades. Unter Mac OS X ist der Pfadtrenner ein "/", unter Windows "\"

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter result)   Der Parameter result wird als Ergebnis zurückgegeben.
result String oder char* - Name der Datei. Wenn der Typ der Variable char* ist, muss für das Ergebnis genügend Speicher allokiert sein.
path String oder char* - Dateipfad. Die Datei muss nicht existieren.
char		name[256];
char		path[4096];
if (file::select_folder (path, "Test") != 0) return 0; showmessage (file::name (name, path));

Version 1.2 (21. Juni 2005)

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

static char* file::shortname(char* result, char* path)

Ermittle den Namen einer Datei ohne Dateiendung. Die Funktion ermittelt den systemabhängigen letzten Teil des übergebenen Pfades und entfernt vom Ergebnis die Dateiendung. Unter Mac OS X ist der Pfadtrenner ein "/", unter Windows "\"

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter result)   Der Parameter result wird als Ergebnis zurückgegeben.
result String oder char* - Basisname der Datei. Wenn der Typ der Variable char* ist, muss für das Ergebnis genügend Speicher allokiert sein.
path String oder char* - Dateipfad. Die Datei muss nicht existieren.
char		name[256];
char		path[4096];
if (file::select_folder (path, "Test") != 0) return 0; showmessage (file::shortname (name, path));

Version 1.2 (21. Juni 2005)

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

static char* file::extender(char* result, char* path)

Die Funktion ermittelt den systemabhängigen letzten Teil des übergebenen Pfades und von diesem die Dateiendung. Unter Mac OS X ist der Pfadtrenner ein "/", unter Windows "\"

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter result)   Der Parameter result wird als Ergebnis zurückgegeben.
result String oder char* - Endung der Datei. Wenn der Typ der Variable char* ist, muss für das Ergebnis genügend Speicher allokiert sein.
path String oder char* - Dateipfad. Die Datei muss nicht existieren.
char		name[256];
char		path[4096];
if (file::select_folder (path, "Test") != 0) return 0; showmessage (file::extender (name, path));

Version 1.2 (21. Juni 2005)

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

static char* file::path(char* result, char* path)

Ermittle den Pfad einer Datei. Die Funktion ermittelt den systemabhängigen vorderen Teil des übergebenen Pfades. Unter Mac OS X ist der Pfadtrenner ein "/", unter Windows "\"

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter result)   Der Parameter result wird als Ergebnis zurückgegeben.
result String oder char* - Pfad der Datei. Wenn der Typ der Variable char* ist, muss für das Ergebnis genügend Speicher allokiert sein.
path String oder char* - Eingabe Dateipfad. Die Datei muss nicht existieren.
char		name[256];
char		path[4096];
if (file::select_folder (path, "Test") != 0) return 0; showmessage (file::path (name, path));

Version 1.2 (21. Juni 2005)

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

static char* file::volume(char* result, char* path)

Ermittle den Laufwerksteil eines Dateipfades.

Name Typ Default Beschreibung
Return String oder char* (Abhängig von Parameter result)   Der Parameter result wird als Ergebnis zurückgegeben.
result String oder char* - Endung der Datei. Wenn der Typ der Variable char* ist, muss für das Ergebnis genügend Speicher allokiert sein.
path String oder char* - Dateipfad. Die Datei muss nicht existieren.
char		name[256];
char		path[4096];
if (file::select_folder (path, "Test") != 0) return 0; showmessage (file::volume (name, path));

Version 1.2 (21. Juni 2005)

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

static int file::duplicate(
  char* source,
  char* destPath,
  char* newName = 0,
  int createPath = 1,
  int overrideExisting = 0)

Dupliziere einen Ordner oder eine Datei. Wahlweise kann für das Ziel ein neuer Name angegeben werden. Zielpfade können generiert werden. Der Zielpfad darf nicht mit einem Pfadtrenner enden. Quell- und Ziellaufwerk müssen gemounted sein.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
source String oder char* - Vollständiger Pfad auf eine Datei oder einen Ordner.
destPath String oder char* - Zielordner. Der Pfad darf nicht mit einem Pfadtrenner enden.
newName String oder char* 0 Neuer Name für die Kopie. Ist der Name leer, bekommt die Kopie den Namen des Originales.
createPath int 1 Soll der Zielpfad automatisch generiert werden?
0 : Zielpfad nicht generieren
sonst : Zielpfad bei Bedarf anlegen
overrideExisting int 0 Existiert die Zieldatei, darf sie dann überschrieben werden?

0 : Nein, nicht überschreiben
1 : überschreiben. Ist das Ziel ein Ordner, hat der Parameter keine Wirkung. Ordner dürfen nicht implizit überschrieben werden.

Version 1.2 (30. Juni 2005)

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

static int file::move(
  char* source,
  char* destPath,
  int createPath = 1,
  int overrideExisting = 0)

Verschiebe einen Ordner oder eine Datei. Beim Verschieben auf ein anderes Laufwerk kopiert der Befehl das Original automatisch. Wahlweise kann für das Ziel ein neuer Name angegeben werden. Zielpfade können generiert werden. Der Zielpfad darf nicht mit einem Pfadtrenner enden. Quell- und Ziellaufwerk müssen gemounted sein.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
source String oder char* - Vollständiger Pfad auf eine Datei oder einen Ordner.
destPath String oder char* - Zielordner. Der Pfad darf nicht mit einem Pfadtrenner enden.
createPath int 1 Soll der Zielpfad automatisch generiert werden?
0 : Zielpfad nicht generieren
sonst : Zielpfad bei Bedarf anlegen
overrideExisting int 0 Existiert die Zieldatei, darf sie dann überschrieben werden?

0 : Nein, nicht überschreiben
1 : überschreiben. Ist das Ziel ein Ordner, hat der Parameter keine Wirkung. Ordner dürfen nicht implizit überschrieben werden.

Version 1.2 (30. Juni 2005)

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

static int file::remove(char* source)

Lösche eine Datei oder einen Ordner. Der Ordner muss nicht leer sein, passen Sie also auf. Das Löschen kann nicht rückgängig gemacht werden, die Objekte werden nicht in den Papierkorb verschoben, sondern wirklich gelöscht!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
source String oder char* - Vollständiger Pfad auf eine Datei oder einen Ordner.

Version 1.2 (30. Juni 2005)

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

static int file::rename(char* source, char* newName)

Umbenennen eines Ordner oder einer Datei.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
source String oder char* - Vollständiger Pfad auf eine Datei oder einen Ordner.
newName String oder char* - Neuer Name

Version 1.2 (30. Juni 2005)

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

static int file::setdatafile(
  char* newPath,
  int id,
  char* name = "",
  int stage = 0,
  int activeOnly = 0)

Ändere die Pfad-Definition einer Datendatei-Zuordnung. Wird der Eintrag in der Liste der Palette Einstellungen gezeigt, wird auch dieser Eintrag geändert. Dateipfade werden automatisch relativiert, wenn sich die Datei in den folgenden Ordern befindet:

Ist der Pfad leer, wird er über eine Dateiauswahl erfragt.

Der Befehl benötigt das Plugin Einstellungen.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
newPath String oder char* - Neuer Dateipfad/Dateiname, der dem Eintrag zugeordnet wird. Unvollständige Pfadangaben beziehen sich immer auf den aktuell gesetzten Datenordner.
id int - ID des Eintrages, der geändert werden soll
0 : Ignoriere die ID und verwende den Namen zur Identifikation des Eintrages. Die Aliasnamen der Zuordnungen müssen nicht eindeutig sein.
name String oder char* 0 Name des Eintrages
Hat id einen Wert >0 wird die Angabe ignoriert.
stage int 0 Auf welcher Ebene soll die Pfaddefinition geändert werden?

0 : Global. Die Definition wird für alle Benutzer im Datenpool geändert. Die Änderung ist sofort wirksam. In PubServer-Verbindungen wird diese Option nicht unterstützt!

1 : Lokal. Die Definition wird lokal geändert und in der Palette 'Einstellungen' rot angezeigt. Im Datenpool bleibt der Eintrag unverändert. In PubServer-Verbindungen hat diese Option keine Wirkung!

2 : Temporär : Nur in Batch-Jobs definiert! Anlegen oder Ändern einer temporären Definition des gegebenen Aliasnamens. Die Angabe einer ID wird hier nicht unterstützt! Die Einträge werden nicht in der Palette Einstellungen gezeigt! Im Unterschied zu lokalen Änderungen ist diese Definition auch in PubServer-Verbindungen wirksam.
Die Definition überdeckt Definitionen gleichen Namens des Datapools. Sie wird beim Trennen der Datenverbindung wieder entfernt. Die Definitionen $DESKTOP, ... dürfen mit der Funktion nicht geändert werden!
Wird bei Illustrator ignoriert

Reservierte Namen

Die folgenden Variablennamen dürfen nicht verwendet werden:
  • gBatchMachine : Die Targetmaschine des aktuellen Batch-Jobs (xmlget targetmachine node config.batch im Serverbetrieb bzw. der Inhalt des Feldes 'Maschine' der Palette Comet++).
activeOnly int 0 Eintrag nur ändern, wenn er aktiv ist? Die Angabe ist insbesondere dann wichtig, wenn es mehrere Einträge mit gleichem Alias-Namen gibt.

0 : Der gefundene Eintrag muss nicht aktiv sein. Bei Angabe eines Namens wird der erste passende Eintrag geändert.

1 : Der gefundene Eintrag muss aktiviert sein, damit er geändert werden kann.

Parameter stage seit v4.1.6 R25445, 8. Jul 2019
Parameter activeOnly seit v4.1.67 R27145, 8. Jul 2020
Version 1.2.2, 11. Oktober 2005

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

comet.file.setDataFile

static char* file::getdatafile(
  int id,
  char* name = "",
  int enabledOnly = 1,
  int autoResolve = 1)

Hole den (relativen) Pfad einer Datendatei-Zuordnung.

Name Typ Default Beschreibung
Return char*   (Relativer) Pfad des Datendatei-Aliasses.

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.

id int - ID des Eintrages
0 : Ignoriere die ID und verwende den Namen zur Identifikation des Eintrages. Die Aliasnamen der Zuordnungen müssen nicht eindeutig sein.
name String oder char* 0 Name des Eintrages
Hat id einen Wert >0 wird die Angabe ignoriert.
enabledOnly int 1 Suche nur nach aktivierten Eintgrägen

1 - Der gefundene Eintrag muss aktiviert sein. Wird kein aktivierter Eintrag gefunden, der die gesuchte Id oder den gesuchten Aliasnamen hat, ist das Ergebnis der Funktion der Leerstring.
0 - Der Pfad des ersten gefundenen Eintrages wird zurückgegeben. Es wird nicht getestet, ob dieser Eintrag aktiviert ist.
autoResolve int 1 Vollständigen Pfad für das Ergebnis bestimmen

0 - Der gefundene Pfad der ID des Aliasnamen wird unverändert zurückgegeben.
1 - Unvollständige Ergebnispfade werden relativ zum aktuellen XML-Datenordner berechnet.

Version 1.2.2, 11. Oktober 2005.
Der Parameter enabled ist seit Version 1.2.2, 7. November 2005 implementiert.

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

resolve_alias
comet.file.getDataFile

static int file::enable_datafile(
  int state,
  int id,
  char* name = "")

Hole den Pfad einer Datendatei-Zuordnung.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
state int - Neuer Status der Zuordnung. Wird eine Zuordnung aktiviert, werden alle Zuordnungen mit gleichem Aliasnamen automatisch deaktiviert.
0 deaktivieren
> 0 aktivieren
id int - ID des Eintrages
0 : Ignoriere die ID und verwende den Namen zur Identifikation des Eintrages. Die Aliasnamen der Zuordnungen müssen nicht eindeutig sein.
name String oder char* 0 Name des Eintrages
Hat id einen Wert >0 wird die Angabe ignoriert.

Version 1.3.4 (P/R 107)

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

static int file::count(char* path)

Anzahl der Unterobjekte eines Ordners.

Name Typ Default Beschreibung
Return int   Anzahl der Unterobjekte eines Ordners.
0 : Pfad nicht gefunden oder der Pfad zeigt nicht auf einen Ordner
path String oder char* - Vollständiger Ordnerpfad der auch mit $DESKTOP, ... beginnen darf.

Version 1.3.4 (P/R 107)

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

get_nth

static char* file::get_nth(char* path, int n)

Hole das n-te Ojekt eines Ordners

Name Typ Default Beschreibung
Return char*   Vollständiger Pfad auf den n-ten Objekt des Ordners

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.

path String oder char* - Vollständiger Ordnerpfad der auch mit $DESKTOP, ... beginnen darf.
n int - 0-basierter Objektindex

Schreibe alle Unterordner und -dateien eines Ordners ins Logfile.

int dofile (char * path)
{
    // Do anything with the file
    return 0;
}
int wpath (char * path, int depth, int isfile) { int i; char name[256];
strcpy (name, file::name (name, path));
for (i = 0; i< depth; i++) wlog ("", "\t", depth); if (!isfile) wlog ("", "> "); wlog ("", "%s\n", name);
return 0; }
int isvisible (char * path) { char name [256];
strcpy (name, file::name (name, path)); return (name[0] != '.'); }
int dofolder (char* path, int depth) { int c = file::count (path); int n;
for (n = 0; n < c; n++) { char sub[4069]; strcpy (sub, file::get_nth (path, n)); if (isvisible (sub)) { wpath (sub, depth, !file::isfolder (sub)); if (file::isfile (sub)) dofile (sub); else dofolder (sub, depth+1); } }
return 0; }
int main () { dofolder ("$DESKTOP/test/Bächli Platzierung/Costa Rica", 0); return 0; }

Version 1.3.4 (P/R 107)

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

count

static int file::wait(
  char* path,
  int time_ms,
  int intervall = 10)

Test, ob eine Datei existiert mit bis zu time_ms Verzögerung

Name Typ Default Beschreibung
Return bool   true, wenn die Datei existiert, false andernfalls
path String oder char* - Vollständiger Pfad der Datei der auch mit $DESKTOP, ... beginnen darf.
time_ms int - Zeit in Millisekunden, die gewartet werden soll.
intervall int 10 Polling Intervall in Millisekunden

Warte maximal 10 Minuten auf eine Datei.

int main ()
{
    int 	exists;
// Warte maximal 10 Minuten auf die Datei "Druckausgabe.pdf", teste jede Sekunde // exists = file::wait ("$DESKTOP/Druckausgabe.pdf", 600000, 1000); showmessage ("Druck %s", (exists ? "erfolgreich" : "fehlgeschlagen");
return 0; }

Version 1.4.2 / 2.0 (R603)

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

exists

static char* file::uncurtain(char* path)

Ersetze einen (eventuellen) $-Alias am Beginn des Pfades durch seinen aktuellen Wert. Unterstützt werden neben den Standardaliassen auch alle in der Palette Einstellungen definierten und aktiven Aliasnamen für Dateien und Ordner.

Name Typ Default Beschreibung
Return char*   Inhalt von path mit ersetztem $-Alias am Beginn des Pfades

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.

path String oder char* - Beliebiger Pfad. Der Eingabewert bleibt unverändert.

Version 2.0 R634, 21. März 2008

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

getdatafile
setdatafile
comet.uncurtain

static int file::zip(
  char* srcPath,
  char* zipPath = "",
  int keepRsrc = 1,
  int level = 9)

Verpacken einer Datei oder eines Ordners als ZIP-Archiv.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
srcPath String oder char* - Vollständiger Pfad und Name des Objektes, das verpackt werden soll
zipPath String oder char* "" Zielpfad des Archives. Existiert der Zielornder nicht, wird er angelegt. Existiert bereits ein Archiv, wird es überschrieben.

0 oder "" : Neben das Original mit der Endung .zip
endet mit / : Archiv in diesem Ordner anlegen, als Name den Originalnamen plus die Endung .zip verwenden
sonst : Archiv hier anlegen. Der Pfad sollte in diesem Fall mit .zip enden.
keepRsrc int 1 Resourcefork erhalten? Der Parameter wird unter Windows nicht berücksichtigt.

Ab v4.1.7 R27138 wird der Parameter nicht mehr ausgewertet und immer die Einstellung 0 (--norsrc) verwendet. Hintergrund ist, dass mit Resourcedaten verpackte Archive von anderen Systemen nur dann zuverlässig entpackt werden kännen, wenn die Original-Datei auf einer mit Mac OS Extended oder Mac OS Journaled formatierten Festplatten-Partition liegt. Bei allen anderen Formatierungen (z.B. Mac OS AFS+, Mac OS AFPS, Windows, Linux) kann --rsrc zu Problemen beim Entpacken fähren.

0 : Resourcefork nicht mit ins Archiv (--norsrc)
1 : Resourcefork mit ins Archiv (--rsrc)
level int 9 Wie aufwendig soll komprimiert werden? Der Parameter wird unter Windows ignoriert.

0 : keine Kompression
9 : Optimale (aber langsamste) Kompression

Verschiedene Archive erstellen.

int main ()
{
    // Datei-ZIP mit verschiedenen Angaben zum ZIP
    wlog ("", "zip 1 : %d\n", file::zip ("$DESKTOP/zipit/P 1.rtfd", 	"$DESKTOP/zipit/P 1.zip"));
    wlog ("", "zip 2 : %d\n", file::zip ("$DESKTOP/zipit/P 1.rtfd",	"$DESKTOP/zipit/P 1/aaa/bbb/P 1.zip"));
wlog ("", "zip 3 : %d\n", file::zip ("$DESKTOP/zipit/P 2.rtfd", "")); wlog ("", "zip 4 : %d\n", file::zip ("$DESKTOP/zipit/P 2.rtfd", "$DESKTOP/zipit/P 2/aaa/bbb/"));
// Mac resources wlog ("", "zip 3 : %d\n", file::zip ("$DESKTOP/zipit/Resfile.rsrc", ""));
// Ordner-ZIP wlog ("", "zip 5 : %d\n", file::zip ("$DESKTOP/zipit/aaaäö 2", ""));
return 0; }

Version 3.1 R1784, 3.3.2010

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

unzip

static int file::unzip(
  char* zipPath,
  char* destPath = "",
  int keepRsrc = 1,
  StringList resultList = 0,
  int action = 2)

Auspacken eines Archives.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
zipPath String oder char* - Vollständiger Pfad eines ZIP-Archives
destPath String oder char* "" Zielpfad, an dem entpackt werden soll. Existiert der Ordner nicht, wird er angelegt. Enthält das Archiv Objekte, die im Zielordner schon existieren, werden diese Objekte überschrieben.

0 oder "" : Packe im Ordner des Archivs aus
sonst : Zielpfad zum Entpacken
keepRsrc int 1 Resourcefork erhalten? Der Parameter wird unter Windows nicht berücksichtigt.

Ab v4.1.7 R27138 wird der Parameter nicht mehr ausgewertet und immer die Einstellung 0 (--norsrc) verwendet. Hintergrund ist, dass mit Resourcedaten verpackte Archive von anderen Systemen nur dann zuverlässig entpackt werden kännen, wenn die Original-Datei auf einer mit Mac OS Extended oder Mac OS Journaled formatierten Festplatten-Partition liegt. Bei allen anderen Formatierungen (z.B. Mac OS AFS+, Mac OS AFPS, Windows, Linux) kann --rsrc zu Problemen beim Entpacken fähren.
resultList StringList 0 Allokierte Liste für den Inhalt des Archivs
action int 2 Was soll getan werden?

0 : Das Archiv wird nicht entpackt, aber die Liste resultList wird mit den Pfaden der Objekte der ersten Ebene des Archives gefüllt. Das sind die Objekte, die beim wirklichen Auspacken im Zielordner als direkte Untereinträge neu entstehen. Dateien, die mit einem Punkt oder __MACOSX beginnen werden nicht in die Liste aufgommen.

1 : Das Archiv wird nicht entpackt, aber die Liste resultList wird mit den Pfaden aller Objekte, die im Archiv enthalten sind, gefüllt. Dateien, die mit einem Punkt oder __MACOSX beginnen werden nicht in die Liste aufgommen.

2 : Das Archiv wird entpackt. . Die Liste resultList enthält die TopLevel-Einträge des Archives.
int main ()
{
    StringList			archi	= stringlist::alloc ();
    char			*	str;
wlog ("", "Top level entries of Archive 2.zip\n"); file::unzip ("$DESKTOP/zipit/Archiv 2.zip", "", 1, archi, 0); for (str = stringlist::first (archi); str; str = stringlist::next (archi)) { wlog ("", "\t'%s'\n", str); }
wlog ("", "Entries of Archive 2.zip\n"); file::unzip ("$DESKTOP/zipit/Archiv 2.zip", "$DESKTOP/aaa", 1, archi, 1); for (str = stringlist::first (archi); str; str = stringlist::next (archi)) { wlog ("", "\t'%s'\n", str); }
file::unzip ("$DESKTOP/zipit/Archiv 2.zip", ""); file::unzip ("$DESKTOP/zipit/aaaäöääßäääß.zip", ""); file::unzip ("$DESKTOP/zipit/P 1.zip", "");
file::unzip ("$DESKTOP/zipit/Bild.jpg.zip", "", 1, archi); file::rename (stringlist::first (archi), "Bild 2 mit Resourcefork.jpg");
file::unzip ("$DESKTOP/zipit/Bild.jpg.zip", "", 0, archi); file::rename (stringlist::first (archi), "Bild 2 ohne Resourcefork.jpg");
return 0; }

Version 3.1 R1784, 3.3.2010

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

zip

static int file::get_date(
  char* fullpath,
  int whatDate,
  int dt_type,
  char* result = 0)

Dateidatum ermitteln.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
fullpath String oder char* - Vollständiger Pfad der Datei/des Ordners
whatDate int - Welche Information wollen Sie holen?

kDateCreated
kDateModified
kDateAttributes
kDateAccess
kDateBackup

Beachten Sie, dass nicht jede Plattform/jedes Betriebssystem über jede dieser Informationen verfügt.
dt_type int - kShortDateTime Formatangabe

systemabhängige Darstellung
kShortDate (= 0)
kLongDate (= 1)
kAbbrevDate (= 2)
kShortTime (= 20)
kLongTime (= 36)
kShortDateTime (= 16)
kLongDateTime (= 17)
kAbbrevDateTime (= 18)
kShortDateLongTime (= 32)
kLongDateLongTime (= 33)
kAbbrevDateLongTime (= 34)

Systemunabhängige Darstellung
ddmmyyyy (= 96)
ddmmyyyy_hhmm (= 97)
ddmmyyyy_hhmmss (= 98)
dmyy (= 99)
hhmm (= 100)
hhmmss (= 101)
hmm (= 102)
hmmss (= 103)
result String oder char* - Reservierter Speicher für das Ergebnis
#include "internal/types.h"
#include "internal/types.h"
int get_date (char * fi, char * mess) { char created [512]; char modified [512];
file::get_date (fi, kDateCreated, kShortDateTime, created); file::get_date (fi, kDateModified, kShortDateTime, modified);
wlog ("", "# %s\n", fi); wlog ("", "# %s\n", mess); wlog ("", "# created : %s\n", created); wlog ("", "# modified : %s\n", modified);
return 0; }
int main () { char fi [512];
strcpy (fi, "$DESKTOP/2076.indd");
get_date (fi, "Before");
file::set_date (fi, kDateCreated, "17.02.1975 16:08:56"); file::set_date (fi, kDateModified, 26, 11, 2008, 19, 10, 34);
get_date (fi, "After");
return 0; }

Version 3.1 R2114, 9.9.2010

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

set_date
system::now

static int file::set_date(
  char* fullpath,
  int whatDate,
  char* dt = 0)

ändere das Datum einer Datei.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
fullpath String oder char* - Vollständiger Pfad der Datei/des Ordners
whatDate int - Welche Information soll gesetzt werden?

kDateCreated
kDateModified
kDateAttributes
kDateAccess
kDateBackup

Beachten Sie, dass nicht jede Plattform/jedes Betriebssystem über jede dieser Informationen verfügt.
~ Systemabhängige Datum-Uhrzeit
dt String oder char* - gültige Datum-Zeit-Angabe
~ Systemunabhängige Angabe von Datum und Uhrzeit
day, month, year int, int, int - Datum
hour, minutes, seconds int, int, int - Zeit
#include "internal/types.h"

Version 3.1 R2114, 9.9.2010

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

get_date
system::now

static char* file::md5hash(char* fullpath, int doUpper = 0)

Berechne den md5hash einer Datei.

Name Typ Default Beschreibung
Return char*   32-stelliger md5hash der Datei.

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.

fullpath String oder char* - Vollständiger Pfad einer Datei
doUpper int 0 Groß- oder Kleinbuchstaben für die Hex-Zahlen verwenden?

0 : Kleinbuchstaben
1 : Großbuchstaben

Berechne den md5hash der Datei des aktuellen Skriptdokumentes.

int main ()
{
    char		path [2000];
document::path (path, 0); wlog ("", "MD5Hash '%s' : '%s'\n", path, file::md5hash (path));
return 0; }

Version 3.2.2 R2366, 28.03.2011
Parameter doUpper seit v4.0.4 R7230, 8. Jan 2015

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

static int file::pdf_count_pages(char* path, int usePDFlib = 0)

Seitenanzahl in einem PDF. Die Funktion ermittelt die Anzahl der Seiten eines PDF-Dokumentes.

Name Typ Default Beschreibung
Return int   >0 : Anzahl der Seiten im PDF
sonst : Fehler
path String oder char* - Vollständiger Pfad der PDF-Datei. Der Dateiname muss die Endung "pdf" (in beliebiger Schreibweise) haben.
usePDFlib int 0 PDFlib zur Abfrage verwenden?

0 : Nein

1 : PDFlib verwenden (nur InDesign® und comet_pdf). Die Verwendung der PDFlib ist lizenzpflichtig. Sie benötigen eine PDFlib+PDI Lizenz für PDFlib 10. Lizenzen können hier erworben werden. Die Lizenzdatei muß den Namen licensekeys.txt haben und sich im Ordner Plug-Ins Ihres InDesigns bzw. im Programmordner von comet_pdf befinden.

Aktuell (Jan. 2023) kostet die PDFlib+PDI-Lizenz für Serversysteme 2.390€, für Desktopanwendungen 920€. Es lohnt sich also auf alle Fälle, zuvor die direkte Abfrage mit usePDFlib = 0 zu testen.

In einem Rahmen steht der Text "Zahl Pfad/zu/einer/PDFDatei.pdf". Die Zahl gibt die Seitenzahl des PDFs an. Das Skript prüft, ob die Funktion file::pdf_count_pages ebenfalls diese Seitenzahl ermittelt. Das Ergebnis sehen Sie im Logfile.

int main ()
{
    String		str			= string::alloc ();
    int			pg;
    int			expected	= -12;
    char		chk			[256];
    char		path		[1024];
    char		name		[512];
frame::gettext (gFrame, str); expected = string::to_int (string::get_token (str, " ", 0)); strcpy (path, strsubstring (string::get (str), string::length (string::get_token (str, " ", 0)) + 1, -1));
pg = file::pdf_count_pages (path);
if (expected == pg) strcpy (chk, "okay"); else strcpy (chk, "ERROR"); wlog ("", "# Pages :\t%d\t%s\t'%s'\n", pg, chk, file::name (name, path));
return 0; }

Parameter usePDFlib v4.2 R32230, 31. Jan 2023 v3.4 R5322, 22. Mai 2014

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

comet.file.PDFCountPages

static int file::aem_put_asset(
  char* url,
  char* user,
  char* password,
  char* assetpath,
  char* sourcepath = 0,
  char* mimetype = 0)

EXPERIMENTELL! Anlegen und Aktualisieren von Assets und Ordnern eines AEM® (Adobe Experience Manager®). Ordnerpfade werden automatisch im AEM® angelegt, wenn sie noch nicht existieren. Bestehende Ordner bleiben dabei unverändert.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
url String oder char* - URL des AEMs®
user String oder char* - Benutzername für den Login im AEM®
password String oder char* - Passwort für den Login im AEM®
assetpath String oder char* - Vollständiger Pfad des Assets in der Asset-Komponente des AEMs®. Nicht existierende Ordner werden automatisch angelegt. Bestehende Ordner bleiben unverändert.

0 oder leer : Root-Verzeichnis ("/")
sourcepath String oder char* 0 Vollständiger Pfad der Datei für das Asset.

"" oder 0 : Nur den Ordner assetpath anlegen
mimetype String oder char* 0 Mimetype des Assets, z.B.image/jpeg

"" oder 0 : Es wird versucht, den Mimetype aus der Dateiendung zu bestimmen.
// Connection data
char	stHost []	= "http://192.168.0.208:4502";
char 	stUser []	= "admin";
char 	stPwd []	= "*****";
int main () { int result; int recbytes = -1;
result = file::aem_put_asset (   stHost, stUser, stPwd,   "/aaa/bbb/ccc 12/ddded-fgg", //Folder is created, if needed   "$DESKTOP/schnipp Kopie.jpg"); wlog ("", "Create/Update asset 1 : %d\n", result);
result = file::aem_put_asset (   stHost, stUser, stPwd,   "/aaa/bbb/ccc 12/ddded-fgg", //Folder is created, if needed   "$DESKTOP/rot.JPG"); wlog ("", "Create/Update asset 2 : %d\n", result);
result = file::aem_put_asset (   stHost, stUser, stPwd,   "/qwertzu/Paul Seidel",   ""); // Create folder only wlog ("", "Create folder : %d\n", result);
result = file::aem_get_asset (   stHost, stUser, stPwd,   "/aaa/bbb/ccc 12/ddded-fgg/schnipp Kopie.jpg",   "$DESKTOP/qwertzu_bild.jpg"   &recbytes); wlog ("", "Download asset : %d, %d bytes received\n", result, recbytes);
return 0; }

v4.1 R22145, 28. März 2018

priint:comet InDesign® Plug-Ins, comet_pdf

aem_get_asset
datapool::aem_get_list

static int file::aem_get_asset(
  char* url,
  char* user,
  char* password,
  char* assetpath,
  char* destpath,
  char* deststr = 0,
  int* maxlen = 0)

EXPERIMENTELL! Holen eines Assets eines AEM® (Adobe Experience Manager®). Das Asset kann wahlweise in eine Datei oder einen String geladen werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
url String oder char* - URL des AEMs®

@aem am Anfang : Der String enthält die komplette URL inkl. evtl. Benutzernamen und Passwort, und Asset-Pfad. Die Angaben für user, password und assetpath werden in diesem Fall ignoriert.
user String oder char* - Benutzername für den Login im AEM®
password String oder char* - Passwort für den Login im AEM®
assetpath String oder char* - Vollständiger Pfad des Assets in der Asset-Komponente des AEMs®.

0 oder leer : Root-Verzeichnis ("/")
destpath String oder char* - Vollständiger Pfad für die Zieldatei. Eine evtl. existierende Zieldatei wird überschrieben.

"" oder 0 : Schreibe das Ergebnis in den String deststr.
deststr String oder char* 0 Ergebnisstring. Der Parameter wird nur verwendet, wenn destpath 0 oder leer ist.

Bitte beachten Sie, dass der String beim Download binärer Daten 0-Bytes enthalten kann! In diesem Fall können die vollständigen Daten mit string::size und string::data abgeholt werden.
maxlen int* 0 Achtung : Die Variable ist ein Pointer!

In der Eingabe wird die Variable nur verwendet, wenn destpath 0 oder leer ist und wenn deststr vom Typ char* (und nicht String) ist. Dann wird der Inhalt der Variablen als maximal zulässige Länge des Ergebnisses verwendet. Überzählige Bytes werden entsprechend vom Ergebnisstring abgeschnitten. Achtung: Abgeschnittene Ergebnisse können bei Binärdaten und bei durch unvollständige UTF-8-Zeichen zu Problemen führen!

    0 oder Inhalt < 0 : beliebige Länge
    sonst : Maximallänge wie eben beschrieben

Nach erfolgreicher Ausführung der Funktion enthält die Variable die Anzahl der vom AEM® erhaltenen Bytes. Ist deststr vom Typ String, kann mit string::data auch auf Binärdaten im Ergebnis zugegriffen werden.

    0 : Rückgabe ignorieren
    sonst : Anzahl der erhaltenen Bytes
// Connection data
char	stHost []	= "http://192.168.0.208:4502";
char 	stUser []	= "admin";
char 	stPwd []	= "*****";
int main () { int result; int recbytes = -1;
result = file::aem_put_asset (   stHost, stUser, stPwd,   "/aaa/bbb/ccc 12/ddded-fgg", //Folder is created, if needed   "$DESKTOP/schnipp Kopie.jpg"); wlog ("", "Create/Update asset 1 : %d\n", result);
result = file::aem_put_asset (   stHost, stUser, stPwd,   "/aaa/bbb/ccc 12/ddded-fgg", //Folder is created, if needed   "$DESKTOP/rot.JPG"); wlog ("", "Create/Update asset 2 : %d\n", result);
result = file::aem_put_asset (   stHost, stUser, stPwd,   "/qwertzu/Paul Seidel",   ""); // Create folder only wlog ("", "Create folder : %d\n", result);
result = file::aem_get_asset (   stHost, stUser, stPwd,   "/aaa/bbb/ccc 12/ddded-fgg/schnipp Kopie.jpg",   "$DESKTOP/qwertzu_bild.jpg"   &recbytes); wlog ("", "Download asset : %d, %d bytes received\n", result, recbytes);
return 0; }

v4.1 R22123, 28. März 2018

priint:comet InDesign® Plug-Ins, comet_pdf

aem_put_asset
datapool::aem_get_list

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

Alphabetic index HTML hierarchy of classes or Java