All plug-ins and renderers can be started without Python. The Python installation is checked only when Python is really needed (i.e. when a script starts with #!py). If the installation is missing, Python scripts return the error 1. For the first Python script, a corresponding warning message is also shown. The following Python versions are expected:

By the way, you can have any other, even newer Python version(s) installed. These versions are ignored by the priint:comet plug-ins and by comet_pdf.

Please note: In contrast to v4.x, v5.0 requires the Python version 3.12.

For the installation of the plug-ins we strongly recommend the installers provided by WERK II:

If a manual installation is necessary for any reason, it is important to replace all (but not more) plug-ins. Replacing individual plug-ins of different releases will crash InDesign®. Here you can find complete zip sets of the plug-ins:

For information about the System Requirements for InDesign see here.

All plug-ins are supplied in the so-called Universal Architecture and run on both Intel and Silicon machines. At least macOS Version 12 (Monterey) is required for all priint:comet plug-ins.

All plug-ins are checked against malware by Apple. However, since you did not get the plug-ins from the App Store, it is necessary to change the security settings of your System Settings:

  1. Choose Privacy & Security in the sidebar
  2. Click General on the top.
  3. Under the point Allow apps downloaded from select Choose App Store and identified developers.

Because this file contains entries from our bug tracking system, the content of this file is partly in German.

The table describes the features and bug fixes of the priint:comet ID 5.0 plug-ins.

Revision    Case Description

v4.3 R37037

04.08.2025

Python Improvements

New functions:

<th> Tags HTML Support

The HTML import using html::to_tagged or %!TT_html_... now also supports the <th> tag in HTML. See here for more information.

<a> Tags HTML Support

The HTML import using html::to_tagged or %!TT_html_... now also supports the <a> tag in HTML. See here for more information.

please note that for creating the InDesign® hyperlinks the destination document is needed!

Layout Rule at Continuation

TW 3541776

Is it possible to react to the situation when a continuation frame is appended to the text chain of the previous subtemplates? I have tried the Layout Rules ‘OnUpdate’, but it is not called at all for continuation frames.

Yes, it exists: The situation kAfterCreateContinue in the Build Support Script. The Layout Rules ‘OnUpdate’ are not executed at this point since the frame content has not been reloaded here - only the already loaded text now ‘simply’ continues to flow in this frame.

In addition, we implemented a so-called Layout Rule derivative on Link Continuation.

Netweight HTML Entities

TW 3534500

I need to determine the plain text from an HTML text and have used the string::get_netweight function to do this. That works great. But unfortunately the text also contains HTML entities like ä. Could these also be replaced?

We have implemented and added a corresponding parameter to the according functions:

Hyperlink Dest Defns

TW 3534525

How can I find the hyperlink destination definitions of a document? For example, if I create a new hyperlink to an URL in a document, InDesign® saves this URL in the document in a so-called HyperlinkDestinationDef. Is there any way to query these definitions via cScript?

We improved the function hyperlink::find so that it also can collect given HyperlinkDestDefs. See the prefix defn: of parameter crossRefName.

TW 3534766 - How to get a hyperlinks (crossrefs) key

Is there a way to get the unique key of a hyperlink destination definition?

I've implemented the new function link::crossref::key for that now.

TW 3536290 - Notes about the use of DataRecording

Is there anything to consider when making a data recording?

Oh yes, of course. After logging in with Data Racording activated, an information is therefore now shown that briefly describes the data recording.

TW 3542136 - Better handling of capslock when saving templates

[Mac Only] Yesterday I had to help a customer who could not save a template because their capslock key was on. It took them a number of tries to even realize that their template was not being saved, and they were not able to determine on their own what the cause was.

I have had a similar experience where It has a very long time to realize that my template was not being saved, and then much longer to realize that the capslock key was the source. In this particular case, the caps lock key was active on my laptop, but off on my external keyboard. Typing was normal, but saving was not.

Can these save options be reworked in a way that does not use capslock as an option?

If this is not possible, is there some way that the user can be alerted that their caps lock key is active?

maybe A UI change? or an alert dialog?

We're not sure if we're being taken for a ride here. But anyway, we've changed that from Caps Lock to Space Bar.

TW 3492352 - Media Preview Panel Overriding Layout Rules

I am having an issue with the media preview panel and swapping images within InDesign.

We have fixed everything we found. See below for more information:

TW 3541720 - Creating inlines in hyperlinks removes the hyperlink

I insert an inline into a document text (w2inline). This works perfectly. But if there is a hyperlink at the insertion point, this hyperlink is removed.

This problem is solved now. The hyperlink is no longer removed.

TW - Get comet group member of main template

I use the function frame::get_cometgroup_member to find a frame of the Comet Group of gFrame with a certain ID:

frame::get_cometgroup_member (gFrame, label, "C");

That works great. But in my case the frame is part of a continuation and I would like to have the frame ‘C’ from the main group. Is that possible?

We have therefore added a new parameter to the frame::get_cometgroup_member function. This allows you to search the frames of the main group too (or only) :-)

TW 3531775 - HTML entities of form &#xD7; not correctly replaced

If I try to replace the HTML entities of an HTML text, the hex entities of form &#x... are replaced by the according TaggedText letters like <0x00D7> and not by its letter. If I use the non-hex form of the same Unicode, I get the correct letter.

FXD

TW 3525413 - CFrame.getCometGroup not working

The Python function CFrame.getCometGroup always generates an error message. The problem only occurs on the Mac.

FXD

TW 3525747 - What is the Template dropdown of the Previews panel for?

What is the Template dropdown of the Previews panel for?

The dropdown is no longer needed and we removed it now. The corresponding functionalities have long since been integrated into the Templates and Product Pool panels.

TW 3525743 - Drag and Drop in Previews panel not working as expected

I have a frame with a number of alternative images in the Previews panel. When I drag and drop such an image into another frame, the target frame is (somehow) reloaded or something. I would have thought that the dragged image would then be inserted into the frame.

We have now implemented this in this way now.

TW 3521579 - Previews in panel Previews re-created after every login

Apparently the previews of the Previews panel are recalculated after each login. This can take quite a long time for URLs. (And the help text for the Reload Previews button actually states that this is only done if you click this button - and otherwise not).

Yes, that's right. Previews of the Previews are no longer recalculated each time.

Please remember to delete the previews using the button from time to time!

TW 3519483 - Previews not reloaded if only the clipping path or alpha channel is changed

Images are normally only reloaded if the file path of the image changes. However, there may be entries in the Previews panel that differ only in their placement information (position, clip path, alpha channel).

Now you can.

TW 3519437 - Previews in Preview panel sometimes wrong

Sometimes image previews in the Previews panel are a little bit incorrect:

Hint: In this case, we have an image that contains no alpha channel but four color channels.

Hint: InDesign can at least use such images with InDesign Desktop and a little effort

What a stress. But we were successful. The previews can now be generated correctly:

TW 3518982 - Web Image : Alpha channel not applied

If I call frame::image with a Web Images URL and an Alpha channel, the channel is applied. BUT: If the Web Image needs to be updated, it will be re-inserted without applying the Alpha channel.

Yes, this information was not previously saved in the Web Image. This is now done and the Alpha channel details are now update-resistant.

TW 3518865 - Web Image : Clip path not applied

If I call frame::image with a Web Images URL and a clipping path, the path is applied. BUT: If the Web Image needs to be updated, it will be re-inserted without applying the clipping path.

Yes, this information was not previously saved in the Web Image. This is now done and the path details are now update-resistant.

TW 3518716 - Previews Panel : Customized placement not working

The image entries in the Previews panel can be provided with their own placement information. See here for more information.

Unfortunately, this does not seem to work - at least not for images with a URL (Web Images).

We've implemented that feature now.

TW 3476240 - Previews panel 'Prefer Existing Image Settings' does not work

Unfortunately, the ‘Prefer Existing Image Settings’ setting of the Previews panel does not work correctly for Web Images.

This should work now.

TW 3514263 - Layout Rule "Fit Table Width" not working

The Layout Rule Fit Table Width does not do anything when the table is right aligned. This is true for properly Right aligned text, and also when text is aligned Away from spine + on the right page.

FXD

FYI: It was an IEEE 754 rounding gap while comparing the cell co-ordinates with the frame co-ordinates.

TW 3513084 - string::get_netweight ignores the parameter replaceTypos

Whatever I do, the string::get_netweight function does not replace my different typographic quotation marks with simple double quotation marks (").

This problem is solved now.

TW 3513092 - get_netweight_str with String (not char*) variables crashes InDesign

The parameter description of get_netweight_str says that the parameters are strings - but if I do it this way, InDesign® crashes.

No, the docu says that the parameters must be char*. The word String is only used in the description of the parameters and only to avoid the silly German word "Zeichenkette". And in the English version of the docu - hey, do you know another word for it?

Anyway, we now support both the String and the char* data types in the function.

TW 3512736 - Warn against incorrect and unsupported tags when importing HTML

Would it be possible to warn about unsupported tags when importing HTML with html::to_tagged or %!TT_html_... ? I think that would be quite helpful.

Yes, of course we can. The log now contains messages like this:

# Unknown html tag '<ttt>' ignored
# Unknown html tag '</ttt>' ignored
TW 3505756 - W2ML import : Hyperlink color missing during W2ML import

I'm using the following lines to create a hyperlink to a text anchor and set an orange frame around the created hyperlink:

hyperlink::add_nameddest (anchorRef, 0, fr_dest, 10, 3);
hyperlink::create_textdest (hyRef, 0,  fr_src, 7, 23, anchorRef);
color::define_rgb ("", 255, 128, 0, 0, colid);	// Orange
hyperlink::appearance (hyRef, 1, -1, colid, 1, 0);

This is because the colors for the hyperlink are usually Stock colors of the UI. When importing an W2ML, we try to find the UI stock color from the color values of the hyperlink. But the given orange with (1, 0.5, 0) does not exist as an UI color. We therefore now automatically create a corresponding user-defined color. This solves the problem.

TW 3503925 - W2ML import : Text anchors in tables not working

Text anchors that point to a hyperlink target within a table unfortunately do not work when importing W2MLs.

This is due to the fact that the table references in the InDesign text have different lengths. This shifts the hyperlink targets to a text position that is difficult to calculate.

The problem has been solved.

TW 3504090 - Text chains incomplete after W2ML import

I have a W2ML with text concatenated over several frames in a so-called text chain. The import is correct - but the text chain is not completely re-created.

This is fixed.

v4.3 R36902

30.06.2025

Timestamp for Templates

TW 3453929

A Timestamp for Templates can now be used to prevent changes to a template from being overwritten if another user is editing the same template at the same time.

Hyperlinks in W2ML's

When opening a W2ML file in InDesign®, all hyperlinks contained in it are now also restored:

  • URL
  • File
  • EMail
  • Page, Page in external file
  • Text anchor, External text anchor

The W2ML file must have been created with at least v5.0 R36887 of the priint:comet plug-ins or of comet_pdf.

Python improvements

General improvements

  • Python is now available for Panelstatement 118 (Can delete template?)
  • gProductsDirect, gNewFrames and gPage are now available in build support scripts
  • [Fixed] cScript function run_python does not propagate frame and table parameters

New modules:

New situations:

New functions:

TW 3497564 - Cannot use emergency version of on-existing action

I have placed an action in the $DESKTOP/emergency folder for testing purposes. This is great and makes testing much easier. Unfortunately, it only works for actions that also exist on the server. But ff I use an action that the server has not defined at server side at all, it unfortunately does not work.

We have extended the behavior accordingly. It now also works with actions that the server has not defined at all.

TW 3491879 - W2ML Import ignores text insets on on frames with rounded corners

The W2MLImport ignores text frame insets for frames with rounded corners.

FXD

TW 3481925 - Publication Jobs Queue not working in third party SOAP connections

Unfortunately, the Publications Jobs Queue does not work in my SOAP connection. We use a data connection developed by a third-party provider.

Yes, unfortunately that is correct. The selection of documents in the Publication panel is based on the IDs assigned in the priint:suite PubServer:

  • 1 : Publikation
  • 2 : Dokument
  • 3 : Spread

This can be completely different in customer-implemented systems. We can neither influence nor determine this in any way. In SOAP (Internet) connections, the jobs queue can therefore only be explicitly supported in priint:suite PubServer connections. See here for more information.

TW 3467167 - hyperlink::find cannot find links to text anchors in other documents

I have a document with hyperlinks to named text anchors in other documents. Unfortunately, the hyperlink::find function does not find these hyperlinks. Here is my function:

int main ()
{
    LinkList   lks = linklist::alloc ();
    int        res = hyperlink::find (lks, 0, "", 0, -1, 0, 0, "", 1, 1, 1, 0, 0);
    Link       lk;

    wlog ("", "\nCrossrefs in document\n");
    for (lk = linklist::first (lks); lk; lk = linklist::next (lks))
    {
        wlog ("", "'%s' --> '%s'\n",
             link::crossref::name (lk),
             link::crossref::destination (lk));
    }
   
    linklist::release (lks);
    return 0;
}
Wow, that was really hard to fix. To search for the external links, InDesign® opens the target document in the background and then returns a reference to the anchor. Unfortunately, the target document is then immediately closed again - and the reference is worthless (or rather: as soon as you try to get e.g. the page number from this reference, InDesign® crashes.

The problem is solved.

v5.0 R36800

02.06.2025

Python Improvements

General improvements

  • All logging functions, aswell as showMessage and showError now accept all data types for the 'message' parameter, implicitly converting the parameter to str
  • [Fixed] CHyperLink.getType always returns 0

New functions:

TW 3457103 - Smoother handling of watermark

As long as you have not used any priint:comet functionality, no watermark will appear. But once you use a priint:comet functionality, all already opened and all new documents will be marked with a watermark until you restart InDesign. With a valid license, the watermarks are automatically removed. To register the license, InDesign must be restarted. See here for more information.

TW 3452926 - When calling panelstatement 125 (publication_after_checkout), the checked-out document is not yet the front document

The panelstatemt 125 (after checkout publication) is apparently executed when the document is not yet visible. It is therefore not possible to customize the document (e.g. set layer names or something).

FXD

TW 3457817 - Short %!TT texts cause InDesign to crash

I have a placeholder that should only insert an empty paragraph:

%!TT<ParaStyle:><ParaStyle:>

My InDesign crashes repeatedly with this placeholder. If I extend the text a little, e.g. by specifying a paragraph style, it works:

%!TT<ParaStyle:My ParaStyle><ParaStyle:My ParaStyle>

The solution was very difficult to find. It actually has to do with the length of the text (and not its content). The background to this is an implementation detail of the string implementation used (std::string of the C++ STL):

Shorter strings are saved directly as char*, only longer character strings use a managed memory. The limit cannot be recognized from the outside and varies from system to system.

Unfortunately, we fell into this trap at one point when evaluating the new placeholder.s text The error has been fixed now.

TW 3457444 - Read Checkout scripts from '$DESKTOP/emergency'

For testing purposes I can read actions of PubServer connections from the desktop folder 'emergency'. Would it be possible to have the same thing for the Publication checkout scripts (panel statements 111, 125, ...)?

The solution was very difficult to find. It actually has to do with the length of the text (and not its content). The background to this is an implementation detail of the string implementation used (std::string of the C++ STL):

Yes, this is possible. You can now put these scripts into the $DESKTOP/emergency too:

  • ps_111.cpp
  • ps_125.cpp
  • ...

TW 3326595 - Python - Delimiter-Scripte (ClassId 50)

Apparently the Python constants kDelimiterPrefix etc. are defined incorrectly. According to the documentation, they should have the values 1, 2, 4, 8, but in v5.0 they are currently defined as 0, 1, 2, 3. In v4.3 they are not defined at all.

Both have been fixed.

Please also note the different use of constants in v4.3 and from v5.0.

TW 3431062 - Python constants not defined in v5.0

We keep getting requests because 'some' Python constants that were defined in v4.3 are no longer defined in 5.0.

That's not quite true:

To make the debugger output easier to read, we have collected the constants in v5.0 under comet.constants. Otherwise the list of defined identifiers would always start with dozens of kSomething until the user's own identifiers appear. Here you will find a solution for the use of Python comet constants from v.5.0 onwards.

TW 3423067 - Zusatzmodule heißt jetzt Plug-ins

Adobe hat das Menü Zusatzmodule im deutschen InDesign ®2025 umbenannt in Plug-ins (fast wie im Englischen, aber mit kleinem i). Leider verwenden alle Hilfetexte und die Doku weiterhin den Namen 'Zusatzmodule'.

Na endlich, aber warum mit kleinem i? Abgesehen davon, ist schon ein bisschen Arbeit, das so hinzubekommen, dass ID 2022 - 2024 weiter den Begriff 'Zusatzmodule' verwenden und nur bei ID 2025 'Plug-ins' verwendet wird.

Hilfetext und Doku sind angepasst. Die Hilfetext sind nur in v5.0. Das Delta zwischen 4.3 und 5.0 ist inzwischen zu groß, um die Änderungen kompatibel in beide Versionen einzubauen.

Die Hilfetexte sind nur in v5.0. Das Delta zwischen 4.3 und 5.0 ist inzwischen zu groß, um die Änderungen kompatibel in beide Versionen einzubauen.

TW 3423103 - Template name missing in document of PageTemplate

When I open a page template, the document sometimes gets the name of the template as the title (good), and sometimes only the ID (not so good). What could be the reason for this?

The reason is simple: If the name is shown, the original document of the page template is in the current InDesign version. If not, it is an older document.

Of course, the name should be shown in both cases. We have now also fixed this.

TW 3423049 - Page templates open multiple times

If I double-click an already opened page template in the palette again, another document with this page template is opened. Shouldn't the document that is already open be used?

This is fixed now.

TW 3421320 - Double clicking an already opened PageTemplate shows an error message

When I double-click on a page template that is already open, I always get an error message saying that the template document was not found.

This is fixed now. We are simply bringing the document (back) to the foreground now.

TW 3410319 - Cannot create QR code with version

Apparently the function image::barcode does not evaluate all additional information correctly. The following statement generates a postscript error:

image::barcode(
 	gFrame,  	url, "my qr code text",
 	100, 100, 	// PS page size
 	0, 0 		// offset
 	, "eclevel", "M"
 	, "version", "16"
 );

With the following call it works. The difference is that all additional options are summarized in the single attribute options.

image::barcode(
 	gFrame,  	url, "my qr code text",
 	100, 100, 	// PS page size
 	0, 0 		// offset
 	,   "options", "eclevel=M version=16"
 );

Nevertheless we have fixed the error when using single options. The original call will now work (again).

v5.0 R36601

24.04.2025

Just Tell Me

The new Just Tell Me panel translates your requests given in human language into machine-readable instructions for InDesign®. ChatGPT is used for the reply. See here for more information.

The Just tell Me panel is experimental!

UXP Script Support

TW 3390982

With the new function run_uxpscript we now support the execution of UXP scripts.

Attention: Many UXP functions and queries are executed asynchronously:

For example, the question about the path to the file of a document, document.fullName, is answered asynchronously and only returns the answer [object promise] without any further information. To really obtain the actual path, you must retrieve the information with await.

alert (doc.fullName); // shows '[object promise]'
alert (await doc.fullName); // shows the path of the document'

That's not too bad. But unfortunately InDesign® also aborts the current undo sequence after an await and the scripts can then no longer be undone in a single step (undo entire script) but only in the individual actions of the script. If this is acceptable to you ...

Please note: If you execute run_uxpscript with Predefined Objects, the document path is required to determine the target document of the script, that means, we need to ask await doc.fullName. UXP scripts can therefore only be undone in individual steps when used with predefined objects.

Jobs Queue

TW 3404153

Unfortunately, editing many documents in a single script repeatedly leads to memory overflow (and crashing) of InDesign®. The problem here is that although you can open and close documents properly, InDesign® holds the closed documents in memory until the next idle time (i.e. at least until the end of the script). And there is no way to enter this intermediate world between life and death or to somehow get InDesign® to rest.

Is there any way to somehow solve this situation?

We have implemented a completely new cScripts module jobs. The Jobs Queue supported by the module solves this problem by executing each job in its own timer-controlled independent sequence. Once a job has opened a document (and closed it again), the sequence waits until InDesign® has closed the document in the background too.

Javascripts with Arguments

TW 3390686

run_javascript now supports the transfer of script arguments to the script. This eliminates the annoying search and replacement of any fixed words with current values in the script text. See here for more information.

Upgrading Templates

TW 3363570

The fly-out menus Import... and Import Without Overwriting... of the Templates panel whether the template files should be upgraded to the current InDesign® version before importing (and then do so :-))

Python improvements

General improvements

  • CFrame.setImage now removes the image when None is used as the path parameter
  • __repr__ functions are now more consistend and have unified line breaks for the result.
  • [Fixed] CFrame.setImageScale parameter names do not match documentation
  • [Fixed] CFrame.setImageScale indicates wrong function name on parameter exception

New modules:

  • strutils - comet related string utilities

New functions:

Named Text Target

TW 3373196

Currently the hyperlink::add_nameddest function only works for comet_pdf. Can we also have it for the InDesign® plugins?

The function is now also available in InDesign®.

Named CrossRef

TW 3379347

When I call textmodel::insert_crossref, the name of the target is always formed from the ClassID and the product ID. For example:

<3 1 0 0 'myStringID'

Can I also enter an own name?

If you set the classID parameter of the function to -2, then only the StringID is now used as the name of the destination.

TW 3404141 - app.comet.documentSave does not work with documents opened by path

When I open a document with app.comet.documentOpen and its path, I cannot save this document with app.comet.documentSave later. If I use the document ID to open the document, it works.

The error only occurs in v5.0. In v4.3 it also works with the path.

Here's code snippet:

var myPath = "/Users/paul/Desktop/aaa.indd";

app.comet.documentOpen (myPath, true, gOptions);
app.comet.eval ("file:///Users/paul/Desktop/aaa.cpp", "", gOptions);
app.comet.documentSave (myPath, gOptions);

The error has been fixed now.

TW 3395117 - publication::checkout_by_id always shows 'Missing Images' warnings

I edit all the selected documents in the Publication panel in a loop. I could drink a coffee until this is finished. But I can't, because every document shows a warning that some images are missing. Is there any way to prevent this? When I check out manually, I can do this by holding down the Control button.

We have added a corresponding parameter to the publication::checkout_by_id function.

TW 3404147 - app.comet.documentSave does not work in InDesign Desktop

If I have made changes to a document in a Javascript, saving the document with app.comet.documentSave unfortunately fails. The error only occurs in InDesign Desktop. The same script works with InDesign Server.

The error has been fixed now.

TW 3358778 - Four issues related to log.xml logging

Please note that the problems described here also apply 1:1 to InDesign®.

Wir bauen gerade ein Docker Image für priint cloud basierend auf Ubuntu 24.04.

Da das Feature "support for log.xml" für priint cloud immer mal wieder nachgefragt wurde, habe ich mal wieder die Integration versucht. Ich bin auf vier Probleme gestossen (sowohl in comet5-R36258 als auch comet5-R36336).

Setzen der log.xml Konfiguration per --logger Option funktioniert nicht (comet_pdf v5.0 R36336 Linux)

In priint cloud haben wir viele unterschiedliche XML Projekte auf einem Container. Der Kunde soll für sein Projekt eine projektspezische log.xml verwenden können - oder auch nicht.

Was derzeit geht ist die Kombination von

  • keine log.xml im Verzeichnis des Binaries (also neben dem comet_pdf executable)
  • log.xml in comet_xml Verzeichnis legen (also neben actions.xml etc)
  • "--config_path" explizit auf das comet_xml Verzeichnis setzen
  • "--log" auf eine entsprechende Datei gesetzt
Leider beeinflusst --config_path aber nicht nur das Lesen des log.xml, sondern auch anderer Konfigs (nicht so klar beschrieben in der Doku).

Eigentlich was die Option "--logger" dafür vorgesehen, dass sehr einfach hinzubekommen, nur wird das anscheinend völlig ignoriert.

Logs werden doppelt geschrieben, wenn log.xml definiert ist (comet_pdf v5.0 R36336 Linux)

Ich habe log.xml so konfiguriert, wie unter #1 geschrieben.

  • "--log" ist gesetzt "/comet_xml/data/comet.log"
  • in log.xml ist der stdlog Appender gesetzt auf $LOGFILE
Ich erhalte ein Log in /comet_xml/data/comet.log, in dem (nahezu) alle Einträge doppelt sind. Einmal im Legacy Format einmal mit dem Pattern aus log.xml. Immerhin schön abwechselnd.

siehe Fall 3358778

Was ich nicht verstehe ist, dass die Optionen --log und --logger sich nicht ausschließen. Warum soll ich --log setzen müssen, wenn ich alles in log.xml definieren kann? Es erzeugt nur eine Unsicherheit darüber, was jetzt gültig ist, oder was passiert, wenn die Datei beidesmal identisch ist (blockiert sich ja/nein etc.).

Auswertung der Optionen ist abhängig von deren Reihenfolge (comet_pdf v5.0 R36336 Linux)

Eine Zufallsentdeckung:

    /opt/comet_pdf/comet_pdf  \
    --config_path /comet_xml \
    --conn /comet_xml/data/connection.xml \
    --out /comet_xml/data/test5c.pdf \
    --log /comet_xml/data/comet5c.log \
    --fontfolder /opt/comet_pdf/fonts \
    --fontfolder /comet_xml/fonts \
    --cache /comet_xml/data \
    --exec /comet_xml/scripts/build.py \
    --login test \
    --in /comet_xml/master-documents/default.w2ml \
    --metadata 0 \
    --psnames /comet_xml/fontnames.xml \
    --hyphens /opt/comet_pdf/hyphenations

ist nicht gleich

    /opt/comet_pdf/comet_pdf  \
    --config_path /comet_xml \
    --conn /comet_xml/data/connection.xml \
    --out /comet_xml/data/test5c.pdf \
    --fontfolder /opt/comet_pdf/fonts \
    --fontfolder /comet_xml/fonts \
    --cache /comet_xml/data \
    --exec /comet_xml/scripts/build.py \
    --login test \
    --in /comet_xml/master-documents/default.w2ml \
    --metadata 0 \
    --psnames /comet_xml/fontnames.xml \
    --hyphens /opt/comet_pdf/hyphenations \
    --log /comet_xml/data/comet5c.log

Das erklär mal jemandem!

Im ersten Fall wird log.xml im Pfad /comet_xml/log.xml gefunden und interpretiert (wenn auch falsch -> Bug #2). Im zweiten Fall wird log.xml nicht "gesehen".

Problem ist hier die eingeschränkte Nutzbarkeit des log. Kurzer Log Auschnitt mit log.xml Konfiguration

siehe Fall 3358778

Wir haben zwei sinnlose Leerzeilen hier. Sie erschweren das Lesen des logs. Grund: Einzelne Log Einträge enthalten Zeilenumbrüche am Anfang oder Ende. Es ist normalerweise nicht der Job einzelner Log Einträge, sich um die Formatierung des Logs zu kümmern. Dazu müssten sie wissen, was vorher oder nachher kommt. Das aktuelle Log zeigt implizite Abhängigkeiten zwischen den Einträgen. Ich würde das Trimmen aller Einträge, die aus C++ (nicht aus Skript) ins Log geraten, wenn log.xml aktiv ist (nicht für Legacy Logging).

As far as possible and sensible, these has been repaired or implemented.

TW 3379336 - hyperlink::create_textdest does not work with the results of hyperlink::find and "ANCHORS#"

If I let hyperlink::find search for anchors (e.g. with crossRefName = ANCHORS#destname: '^3 [0-9]+ [0-9]+' ) and insert the found anchors into hyperlink::create_textdest, I unfortunately get an error. I would have thought that these are exactly the right objects.

If you omit the ANCHORS#, you get hyperlink SOURCES and hyperlink::create_textdest queries its destination automatically from it. If you come directly with a hyperlink destination, this will of course not work at first. We have now fixed this - now hyperlink::create_textdest works with both source and destination references. Not quite sooo simple, hm?

TW 3379320 - Wrong position and length of textmodel::insert_crossref

When I run textmodel::insert_crossref, the text anchor is inserted one position too far to the right and reference is one character too short.

This problem has been solved.

TW 3371743 - Global Scripts missing on Front Row panel

For some time now, the global scripts of the current data pool have been missing in the Front Row panel. Only the scripts from $DESKTOP/cscripts are shown.

This is fixed now.

v5.0 R36336

13.03.2025

TW 3350761 - Placeholders are shortened by simple mouse clicks

Very amazing: I have a placeholder over the entire text of a table cell. Every time I click with the mouse in this placeholder, the placeholder at the front becomes one shorter.

The error only occurs with v5.0 of the plugins and only when the placeholder palette is open. It is also very confusing that the error disappears immediately if I set a different placeholder to the cell text. I can then set the original placeholder back again - everything remains fine.

Yes indeed, very surprising. We have fixed the bug now.

Unfortunately, the error also occurs in other contexts, e.g. when updating all text placeholders in a frame. You should therefore replace all plugins of versions v5.0 R36001 - 36312 by at least this version!

TW 3353404 - Saving templates crashes InDesign

When I try to save a template with the plugins v5.0, InDesign unfortunately crashes immediately. The error only occurs under Windows. With the plugins v4.3 it works.

The bug is fixed now.

v5.0 R36258

03.03.2025

Python improvements

General improvements

New functions:

Build trace JPG output

The build tracing function now defaults to JPG output instead of PNG, making writing twice as fast.

The output format can be set using the scripting functions

Python function product.setBuildTrace not accepting the default resolution

When not providing an explicit value for the resolution parameter of product.setBuildTrace, the function raises a ValueError

[Fixed]

TW 3326520 - Python function comet.gTextModel.collectLinks does not work

I just tried a Python function mentioned in the documentation (comet.gTextModel.collectLinks) and found that it doesn't seem to work.

This is fixed.

TW 3329958 - frame::set_alt should reset any user defined alt text

If my frame has a user-defined alt text, frame::get_alt always returns this user-defined alt text regardless of the selected source (e.g. XMP:Title).

Yes, that's right - and there's nothing we can do about it. This text is also used in Acrobat etc.. We have therefore added a parameter to frame::set_alt which can be used to control whether a user-defined alt text should be removed automatically. The default is 1 (=remove).

TW 3329891 - frame::get_alt does always return an empty string

Although I have set my object export options to use the image title of the XMP header as an alternative, the frame::get_alt function always returns an empty string.

This problem is solved now.

v5.0 R36169

15.02.2025

Python improvements

New functions:

TW 3316122 - Python Debugger does not work on Mac

Unfortunately, I can't get the Python debugger to start on my Mac. I always get the line

# Failed to initialize Python debugging server.

in my log instead.

This is fixed now and the Debugger (debugpy 1.8.12) will start properly. Please note : You also need Python 3.12.6 installed on Mac OS!

Don't forget the comet.debug.breakpoint (True) at the beginning of you script!

TW 3315689 - logger::debug unfortunately no longer works

Unfortunately, the logger::debug command has not been working for some time now.

The problem only occurs if the log.xml file is located directly in the priint:comet plugins folder. If the file is located one level higher in the InDesign Plug-Ins folder or in $PREFS, then it works.

The error has now been fixed and log.xml can now be located in the priint:comet plugins folder again.

TW 3313292 - wtlog does not work anymore

Since the last release, the function wtlog does not write into the log anymore. Here's a very simple script:

int main()
{
    wlog("","%s","xxx by wlog\n");
    wtlog("","%s","yyy by wtlog\n"); 
    return 0;
}

But I only get this one line as a result:

xxx by wlog

Uuh, sorry, this is fixed now.

v5.0 R36072

03.02.2025

Python improvements

New functions:

New Product Selection

After recurring problems with the product selection when build-up via the panel and in the functions productlist::get and datapool::get_products, we have reimplemented the entire product selection.

Please check carefully whether the selection of the installed products in your applications is also correct with the new implementation!

A detailed description including a test system for the possibilities of automatic selection of sub-products during product build-ups can be found here.

A complete description of the selection language for checking and loading products can be found here.

Internal note: Search for gp2.

Move Group to Layer

TW 3297260

Inlines and frames from InDesign® groups cannot be moved separately from their parent object (the text frame frame or the group). In the fourth parameter of the Layout Rule Move To Layer you can now specify whether the parent object should also be moved in these cases. For grouped frames, all frames in the group are then moved to the specified level. With inlines, the containing text frame is moved. If the text frame is part of an InDesign® group, all frames in this group are also moved.

Alt Text for Hyperlinks

TW 3298591 - Assign alternative text for hyperlinks via scripting

Is there a way to set the alternative text (Accessibility Text) of hyperlinks via cScript? Unfortunately, this is not possible via TaggedText or Javascript. The AltText is neither in the TaggedText nor is there a Javascript function.

We have implemented the following two cScript functions for this purpose:

TW 3299847 - Get the hyperlink of a given frame

With nth = -1, >hyperlink::get_nth retrieves the hyperlink of the frame itself. But only with comet_pdf. Is this also possible for InDesign®?

The index -1 now also fetches the hyperlink of the frame (if there is one) in InDesign®.

TW 3298291 - Hilite 'Default' Template in Product Pool

The entries of the Product Pool that do not have a template have 'Default' (German ''Standard') as their template name in the panel. Is there any way to highlight these entries, e.g. with a different color?

The default template is now shown in pink color.

TW 3281170 - InDesign crashes when calling a Java method from Python

InDesign® crashes when I call a Java method from Python like that:

#!py
#pragma plain 

import comet  pluginlib = 
    comet.pyImport('[pubserver]/.../PythonLib.py')  

def main():   
    message = pluginlib.helloWorldWithContext()  
    comet.showMessage(message)    
    return 0

The reason for the crashes was most likely that the cache folder $CACHE/PyImport still contained old imports from another data connection. We now delete the contents of this folder every time a data connection is established or disconnected. That solved the problem for us.

v5.0 R36001

23.01.2025

Withdrawn

Sudoku

This release contains the good old but improved Sudoku plugin again. Simply open the Sudoko panel, select a sufficiently large and empty text frame. Use the + button on the panel to create a Sudoku in one of 12 levels of difficulty. Und los gehts.

Nullify Variables on Releases

TW 3241101

If I release a char* string defined with alloc, the variable still points to the old, released memory.

Yes, that is correct. The behavior corresponds to that of standard C and C++.

Regardless of this, we have added a small extension: With the (new) cScript command

prefs::set_script_nullify_on_release (1);

you cause cScript to set the corresponding variable and all variables that point to the same memory address to the value 0 for releases (release, string::release, productlist::release, ...). To ensure that this also helps, these variables should also be checked for 0 before use :-) In any case, something like this still leads to a crash (or rather: precisely because of it):

char * s = alloc (128);

prefs::set_script_nullify_on_release (1);
release (s);
wlog ("", "0X%x\n", *s);
TW 3291507 - article::members::add does not work

Except for the current script frame, the function article::members::add always returns an error.

This is fixed. The same applies to all document::members functions.

TW 3286001 - Logger not working

I’m trying to log messages in some scripts. To configure that, I’ve added a log.xml. But unfortunately none of my attempts are working and the the requestesd logfile is not written.

To improve performance, we have revised the entire logging system in 5.0 R35824. Unfortunately, a few errors have crept in - including the fact that many messages are no longer written in the presence of a log.xml configuration. This is fixed now and the logging system should work as before (but significantly faster).

TW 3270654 - R35868 - InDesign 2025 crashes on Mac

The plug-ins of the Mac installer of v5.0 R35868 unfortunately cause InDesign® to crash immediately on startup.

We have (hopefully) fixed that.

TW 3248920 - Crash when logging into a Unicode SQL database

When I try to log into a database with a Unicode character set, InDesign crashes immediately. The error appears in the log the first time a text is to be retrieved. The last entry in the log is:

select 
    hasstringids, statement 
    from panelstatements where id = 92;

The error only occurs from v5.0 and only under Windows.

FXD

TW 3273829 - itemlist::chained always returns empty list

The itemlist::chained function unfortunately always returns an empty list with v5.0. In v4.3 the function works until the end.

FXD. The function now also works again in v.5.0.

comet.getVersionMajor and comet.getVersionMinor return str instead of int

The Python functions comet.getVersionMajor and comet.getVersionMinor return str instead of int.

[Fixed]

TW 3290207 - comet.file.downloadWebImages wrong result entries on failed downloads

The Python function comet.file.downloadWebImages returns a list of results containing error codes.
When an invalid URL has been provided, the resulting error code is still 0 (success).

[Fixed]

TW 3290251 - Python - wrong parameter in comet.CFrame.setBarcode

The Python function comet.CFrame.setBarcode has multiple problems:

  • The 'options' parameter expects a str but raises an error saying it expects list[str].
  • Even when the 'options' parameter is correctly passed, the function raises an error.
  • The default values for parameters width, height, offsetX and offsetY do not seem to work.

[Fixed]

v5.0 R35824

05.12.2024

Python improvements

General improvements:

  • Omitting a return value from the main function now no longer causes an error, but a warning is put into the logfile and a return value of 0 is assumed.
  • CProduct.getAttribute now supports the constants.kProductProductOriginals constants, returning a list of built page items.
  • CProduct can now be tested for equality against other products.
  • product.create now has an ID parameter to directly initialize the product ID.

New classes:

New functions:

Faster logfile writing

We managed to refactor logfile writing, resulting in greatly improved performance.

v5.0 R35572

16.10.2024

First Release of v5.0

We are pleased to present the First release of version 5 of the priint:comet ID plugins here.

cScript Tracer

With version 5.0, the priint:comet plugins offer a debugger-like tool to trace cScripts step by step. The tracer is running your Internet browser. More information can be found here.

Python improvements

General improvements:

  • All plug-ins now use Python 3.12. For more information see here.
  • Debugging is now available. For more information see here.
  • Performance improvements of up to several hundred percent when running many scripts.
  • Support for serial placeholders.
  • Improved documentation - Added dark mode, improved readability, added several examples, restructuring.
  • CPageItem.getType can now return whether a pageitem is a text on a path.
  • CFrame.setImage has new constants for image placement (backwards compatible).

Breaking changes:

See porting guide for more information.

  • Constants moved from comet module to comet.constants module.
  • prefs.setPanelEnabled has been deprecated.
  • CGroup.getGroup has been removed.

New modules:

New classes:

New functions:

Smaller 'Placeholder Options'

TW 3084138

The panel Placeholder Options can now be reduced to a smaller size using the 'Details' button. The selected size is retained when restarting.

Articles Structure to W2ML

TW 3053960

In the InDesign® Articles panel, the frames of a document can be grouped into articles. This article structure is then used for the export to Accessible PDFs (PDF/UA). Since comet_pdf supports the Accessibility Tags for PDF/UA since v5.0, we also add the articles structure into W2ML now.

Articles Script Support

TW 3052499

For the accessibility structure of the final PDFs we also need to have script support of the articles structure of the documents. The following functions are available now for this purpose:

Alternative Text for Frames

TW 3045637

In InDesign®, an 'Alt Text' can be defined for a frame via the Object Export Options ... -> Object Export Options dialog. This definition is inserted into the accessibility structure of the PDF in PDF export. We now also support this in cScript and in comet_pdf.

string::rfind

TW 3149045

Using string::rfind you can search backwards in strings.

Please note: Unlike string::find, this function does not support regular expressions!

TW 3149041 - textmodel::get_frame_containing returns wrong column number

Unfortunately, the function textmodel::get_frame_containing always returns the wrong number of columns. The results are always something like -4294967295 or -4294967296.

The problem is solved now.

TW 3060558 - The 'Reset' button of Placeholder Options crashes InDesign

When I click the Reset button at the bottom left of panel Placeholder Options, InDesign crashes immediately and reproducibly.

The error does not occur if a Python script was executed at least once before the reset. When the button is clicked, all cached Python information should also be reset (with a Python script). But without a previous call, Python is not yet initialized.

The error has been fixed.

TW 3090945 - What do the small arrows next to the panel names mean?

There are always two small arrows next to the names of the panels:

When I click on it, the size of the panel changes twice, the third time the panel is collapsed. Etc.

The arrows are for the so-called detail views of the panels, which are shown in rotation.In the priint:comet plugins, this is only supported by the Placeholder Options panel. We have now removed these details arrows from the other panels.

TW 3053984 - Username of frame missing in W2ML import of InDesign

The so called username of a frame is not set into the W2ML export of a document. The username is shown (and can be set there) in the 'Layers' panel. By cScript you can use the functions frame::get/set_name and interactive::set/get_pdf_option with type kPDFFieldName.

This is done now. To read/re-write this setting, you also have to use comet_pdf of v5.0.