Illustrator (Desktop) SDK/Scripting Issues
121 results found
-
52 votes
-
Please add feature for to make object as key object via script to perform align operations.
Hi, I am a plugin developer, and there is a lot of features we are missing in Illustrator scripting that can be done manually in Illustrator. This is the one feature. Please add this feature so that we have some method or property to make the object as a key object to perform "Align to Key Object" operation via script.
43 votes -
Unable to use file for "do javascript" in Illustrator 2020
Bug report:
Passing a JavaScript file (alias) to "do javascript" in Illustrator 2020, fails with the error "JavaScript code was missing".Also, if using a JavaScript string for "do javascript" and passing a file to "with arguments", it will be a missing File object in JavaScript.
Expected behavior:
As with Illustrator 2019, it is executed when a JavaScript file is passed. If a file is passed "with arguments", it becomes an existing File object.Japanese:
Illustrator 2020でdo javascriptにファイルを指定できないバグ内容:
Illustrator 2020でAppleScriptのdo javascriptにJavaScriptファイル(エイリアス)を渡すと「JavaScript code was missing」とエラーが起きて終了する。また,do javascriptにJavaScript文字列を使い,with argumentsにファイルを渡すと,JavaScriptでは行方不明のFileオブジェクトになる。
期待される動作:
Illustrator 2019までと同じように,JavaScriptファイルを渡すと正常に実行される。with argumentsにファイルを渡したときは存在するFileオブジェクトになる。27 votes -
Allow scripts (AppleScript, Javascript) to retrieve a full list of all selected layers
Currently, you can ask Illustrator what layer is selected, but if a user has more than one layer selected, it won't give a list or array of all selected layers. It will still just give you one layer. So many scripts I write have to do with changing properties of multiple layers like batch renaming or batch recolouring. The workaround is to ask the end user to lock all layers they don't want to be affected. It would be much more natural for them to just select the layers they want to be affected.
27 votes -
Edit Appearances with Scripting
Currently it appears only 1 appearance fill is available via scripting, and Illustrator spits out the value of whichever one is selected. What I'd like to be able to do, is loop through the appearances of layers for example, record those attributes(including layer opacity and blending modes) and apply those to fills within a single shape. As there are many more stacked attributes within appearances, it may not be this simple, but it'd be much appreciated.
24 votes -
Accessing Opacity Mask is impossible with scripting
There is no way to work with the transparency mask in the Script SDK. This is the least of the problems. But when creating scripts to modify objects with masks, developers expect masks to be modified along with the parent object. After all, we see the "Linked to Art" icon in the Transparency panel.
But what we have all these years as script developers: resize(), position, translate() modify the object, and its mask remains as it was.
I've counted about 10 of my own scripts that use similar commands. I also have a large collection of other developers' scripts, where…
17 votes -
Constrain Proportions button toggle
app.preferences.setBooleanPreference('linkTransform',1);
makes the Constrain Width and Height Proportions button to toggle... but only internally, the button does not change.16 votes -
ExportOptionsJPEG both resolution and quality
We can export a JPEG using ExportOptionsJPEG() — but it allows to set only quality, not a resolution.
We can use ImageCaptureOptions() instead to set a resolution — but it won’t allow to set a quality, because seems to be designed for PNG (and substituting a format to JPG gives questionable results).
We need to be able to export JPEG images, controlling both quality and resolution, without using app.doScript() trick — it fails on Cyrillic folder names.
16 votes -
CEP: Waaaay more events from AI to CEP Panels (e.g. selection changed)
In a panel I would like to receive events from the host app - in this case AI.
Please provide events for
- selection changed
- layers added/changed
- items added (items of any kind)
- items deleted
- etcCurrent workarounds: polling (setTimer) for changes...thats far from ideal.
The current situation is more than sad (not regarding the lack of documentation).
16 votes -
Create and edit Graphic Styles with scripts
Hello,
I develop a plugin where I need to create/update/modify graphic style and/or Aspect for graphic item.
I try many solutions, search on the web but for the moment it's not possible.Could you please add support for creating/editing/deleting graphic style and aspect ?
It's very important for me ! And I think many developpers can be interesting with this features.Thanks a lot !
Loïc16 votes -
Document.save() for eps/svg/pdf documents changes them to ai files
en_US
Document.save() is a method to save over a document. In keyboard shortcut, it is equivalent to command+S.
However, when ExtendScript's save() is executed on a document that preserves Illustrator editing capabilities such as eps/svg/pdf, it will be saved as an ai document instead of being overwritten as its original format.
For example, when save() is executed for the document
1.eps
, the file1.ai
will be created in the folder where the eps is placed. If the file1.ai
already exists, it will be overwritten with the contents of1.eps
and the original1.ai
will be lost.Environment
- macOS…
15 votes -
Unexpected reset of selected swatches
app.activeDocument.swatches.getSelected() gets selected swatches in the document. If you select one path in a document and apply any selected color to it, the swatches will remain selected. But if many paths are selected, applying a swatch to any path resets the selected swatches.
The user has to manually select the swatches again each time he runs the scripts.
15 votes -
Access to underlying Illustrator object handles via scripting
The biggested pain point when implementing scripting support for plugins is that if you want to add objects that interact with built-in Illustrator script objects (LiveObjects) like Layers, Documents or PageItems. While it's possible to correctly parse whether you're being passed the correct scripting object (e.g. a Layer and not something else) you can't actually determine the handle for the specified object; that lives inside the ScriptingSupport.aip and has no public API.
Perhaps a small suite could be added that provides methods like this:
AIAPI AIErr (GetDocumenttHandle) (long hObject, AIDocumentHandle& outHandle);
AIAPI AIErr (GetLayerHandle) (long hObject, AILayerHandle& outHandle);…15 votes -
Iterating through large collections is very slow (non linear).
Whenever I have a need to iterate through a large collection (such as pageItems) the iteration is very very slow, and the larger the collection is the more slower it gets. I would expect this to be a linear behavior, but it's not. If a collection's size doubles, it takes more than double the time to iterate through it.
14 votes -
Access all variables necessary for each item's appearance
Lots of obvious variables are missing from each type of item. I've not tested exhaustively so I've no doubt there'll be other examples, but here are a few I've recently run up against;
— fillColor and strokeColor are entirely missing from both text and group items.
— where a path has multiple fills or strokes, you can't select which one is referenced, and the rest are inaccessible.
— arrow heads
— effects (eg. I'd like to be able to access properties of a 3D effect)
— graphic styles (reference, rename, create, remove, edit)14 votes -
Unicode support for annotation text
AIAnnotationDrawerSuite::DrawText() takes an ai::UnicodeString, but when you pass it non-Latin1 characters, you just get the box character. I suspect that if I passed Japanese to the Japanese version of Illustrator, the characters would display correctly, but it'd useful if you could do it regardless of Illustrator version.
We are just starting to add translations of our plugin and currently AI tool tooltips & annotation text have to be kept as Latin1 or we run into trouble.
13 votes -
Illustrator 2022 (26.5.0) listStyle scripting issues
Starting with Illustrator 2022 (26.4.1), the ability to create bulleted and numbered lists has been implemented. Text to which lists are applied can be obtained in ExtendScript or AppleScript by using the listStyle property.
However, normal text that is not bulleted and numbered lists (hereinafter called "normal text") has no listStyle assigned to it, and referencing it causes an error. The following problem occurs.
Issue 1: ExtendScript and AppleScript cannot directly change lists to normal text
Expected state
For example, the following script (ExtendScript) can change a paragraph to normal text.
…var doc = app.documents[0] ; var targetParagraph = doc.selection[0].paragraphs[0]
11 votes -
[Typo] ExportOptionsTIFF.IZWCompression of Illustrator JavaScript Reference.pdf
There is a typo in ExportOptionsTIFF in Illustrator JavaScript Scripting Reference.pdf, which fails to specify whether or not LZW compression is used. Please correct it.
I have checked and it was wrong from the CS6 version.
Expected Name: lZWCompression (begins with a lowercase L)
Actual Name: IZWCompression (begins with an uppercase i)The function name in the example is also wrong. exportFileToTIFF should be correct.
…Exporting to TIFF format // Exports current document to dest as a TIFF file with specified // options, dest contains the full path including the file name function exportFileToPSD (dest) { // <-- exportFileToTIFF if
11 votes -
selection geometricBounds and true geometricBounds for clipped objects
Allow for access to the selection geometricBounds as a whole. Also bounds for the clipped area only (ignore hidden areas).
In Illustrator, the Transform window displays the position, width and height for all objects selected and it does not display clipped areas. when you size an object by entering a dimension, you don't have to worry about clipped areas. in scripting you do.
The geometricBounds, visibleBounds, controlBounds, height and width properties give you the size of clipped objects. for a couple of items you can check if each is clipped and if it is, you can then retrieve the first…
11 votes -
Bring back the old scripting forums
Bring back the old scripting forums, the new "Community" forums are a joke. It's totally unintuitive and impossible to find anything scripting related as its all thrown in with general user stuff. Looks like all the money has been spent on "Badges" when all we want is easy to find help. Looks like all the historical data has mostly been removed as well so that's bad if you are looking for something someone may have answered in the past. Big step backwards...
11 votes
- Don't see your idea?