Illustrator Scripting :: Clean Up Unpainted Objects And Empty Text Frames?
Feb 27, 2012
Does this script also cleans up unpainted objects and empty text frames? Personally, I don't think so because the check of the script in extendscript and illustrator results negative.
var idoc = app.activeDocument;var straypoints = []; for (i=0; i<idoc.pathItems.length; i++) {
var ipath = idoc.pathItems[i]; if (ipath.pathPoints.length==1)
straypoints.push(ipath);} for (j=0; j<idoc.textFrames.length; j++) {
var itext = idoc.textFrames[j]; if (itext.textRange.length==0)
straypoints.push(itext);} for (k=0; k<straypoints.length; k++)
straypoints[k].remove();
I also want to automatically remove all objects who have a white fill (white background) and no stroke.
Problem is a created pdf-file of an html-file of a table that must be cleaned up. There are a lot of stray points, empty text frames, unpainted objects, white "cells" that are also be painted in the pdf.
Trying to remove any text frames with empty content but it doesn't seem to be removing correct textFrame layers?
var numberOfEmptyTextBoxes = 0; var layersWithNoText = new Array(); if ( app.documents.length > 0 ) { for ( i = 0; i < app.activeDocument.textFrames.length; i++ ) {
some of my outlined fonts are showing up as "unpainted objects" in the cleanup function, yet when i click on them individually they show that they have a fill color. There have been other occasions where i had an outlined font which "looked" like it had a fill color, yet when i clicked on one of the letters it showed both the fill and stroke as having none.
I want to evaluate text frames for their x axis and if they are the same shift them slightly because of adobes irritating habit of combining the text frames when it makes a PDF. I have been able to evaluate, but not exactly like I want to but I know it can be done...
var mydoc = app.activeDocument;var mytext = mydoc.textFrames;var allX_Vaues = new Array();for (i =0; i < mytext.length; i++) {var mytextFrames = mydoc.textFrames[i];var theMatrix = mytextFrames.matrix;allX_Vaues.push(theMatrix.mValueTX)var firstEval = allX_Vaues//$.writeln(theMatrix.mValueA+" "+theMatrix.mValueB+" "+theMatrix.mV alueC+" "+theMatrix.mValueD+" "+theMatrix.mValueTX+" "+theMatrix.mV alueTY);//alert(allX_Vaues);}//alert(allX_Vaues[1]);for (i =0; i < allX_Vaues.length; i++) {if (allX_Vaues[i] == allX_Vaues[i + 1] ) {alert(allX_Vaues[i] + " and " + allX_Vaues[i +1] + " are the same");}else{alert(allX_Vaues[i] + " and " + allX_Vaues[i +1] + " are different");} } [code]....
my problem is when I try to move text frames. It flies way of the page. I just want to move the text a slight amount and concatenate is the only way I have been successful. my question is: Is there a better way and why is my text flying so far of the page?
I am working on a project which needs..Text frames to be converted as flash text >property changed to dynamic text > writing instance name “_txt”.so how can i write scripting on above process.
I want to select all text frames on all visible layers. The script below will select all text frames even in groups but when a layer with text on it is invisible the script will error.(target layer cannot be modified)
if (app.documents.length > 0 ) { var doc = app.activeDocument; var numTextFrames = 0; for ( i = 0; i < doc.textFrames.length; i++ ) { textArtRange = doc.textFrames[i]; textArtRange.selected = true; } }
So I made this script to select text frames on only the visible layers but it now misses text that is in a group.
var layerCount = activeDocument.layers.length; var docSelected = activeDocument.selection; for (i = 0; i < layerCount; i++)
[Code] .....
Why it does not selected textframes in a group when done this way and is there a way to get all textframes selected on all visible layers?
How to go about making it only change the color of text frames on the active layer? In the final script I will hide all other layers so if it could be done by a visible attribute more easily that would work just as well.
I've written a snippet that will unlock sub of sub layers up to 10 layers deep. It works fine; however I'm wondering if there is a better way to do this? I don't know that 10 is the maximum of sub layers I'll need to unlock but it's a fairly safe guess. I'd like to be more efficient and know that no matter what the layer structure of the file my script has unlocked any and all sublayers.
Is there a different approach or way to think about this problem where you can script for a potentially endless number of sublayers, and subs of subs, etc.?
var doc = app.activeDocument; var layerCount = doc.layers.length; for (i=0; i<layerCount; i++) { var currentLayerI = doc.layers[i]; var layerCountII = currentLayerI.layers.length; for (ii=0; ii<layerCountII; ii++) { [Code] .....
I am looking for a script that will look through all the layers in my file and if there are no objects on the layer I would like it to delete them.how to remove a layer with a script, just not how to identify a layer or many layers that may no have objects on them.
I had to reinstall Acrobat Pro X today because combining pdfs was sticking at "checking security".
After the re-install everything went fine with that, but now ExtendScript shows only itself in the application target menu. (Previously had all of CS6 and CS5 apps in there)
I tried to reinstall CS6 illustrator to see if that added it, got a few install errors, but mainly about not being able to delete files. No luck in restoring the app menu.
If I set
#target illustrator
I get a "illustrator undefined" error, and no script execution. in the middle of a major project which includes scripts in illustrator and combining pdfs in acrobat.
I need the frame of the image below as a stroke style (or at least I prefer that above having to copy-paste the elements of the sides 100 times along a frame in my design )
The thing is: it contains gradients. How do I get the frame to a stroke style so I can easily use it in Illustrator?
how to get the counting of RGB objects, CMYK Objects and Grayscale Objects information for illustrator vector(editable) file via script for windows.
In illustrator raster image file i need to know how to get the Embedded image information(CMYK or RGB or Grayscale) via script for windows. I collect these infomation manually from "Windows->Document info". I saved the "Document Info" details in illustrator manually using "Document Info Pannel".
When i call the method selectObjectsOnActiveArtboard on an artboard, is there a way to easily group all items in the selection? Like in the menu found under "right click > group"
I'll start off by saying I'm new to scripting. I've tinkered with a script I found for measuring the length and width of a selected object and placing those values in a specs portion of the file. It works great, I'm very excited about how much better my life could be if I conquered scripting, and now I'm struggiling to get another one working but I'm a little stuck.
What I need to do now is measure and print the distance from the right edge of a selected object to the left edge of another object named "repeat" in a designated "specs" area of the page. The idea is to show the distance between a print impression and when it will print again (repeat), because it is printed using a print cylinder that rotates to print over and over on a continuous film.
I'm a little fuzzy on how I call the value of the left side x value of an object, but basically what I want is to use that value and then subtract from it the width of the selected object. The difference is the distance between impressions.
I want to select the objects outside artboard using javascript. Their are many objects outside activeartboard i want to select all those object using script.
so I came up with this script, and it worked fine until I tried it on a different file. I have moved the artboard around all over the "main" canvas (if that is what it is called) and on the one that it works on, seems to only work when artboard(top, left) is positive values. however on the new file it doesn't seem to matter where it is on the artboard, it wont work anywhere. it should find the textpath relative to the shapes position.
I thought it was the coordinateSystem, but that doesn't seem to fix it. How the canvas works (maybe the math.abs();
threw it up on gist because it was pretty big: [URL]
I am trying to find out if there is a way to select only the objects within a selection marquee? In AutoCAD you can make a selection window from left to right and only those objects entirely within the window are selected. If you window from right to left all objects that are "crossed" or touched by the window are selected. Is there a similar technique in Illustrator?
Currently I have to select the objects, then go back and hold the shift key to deselect the object I don't want, or put objects on different layers then lock layers to prevent extra objects getting selected.
In AutoCAD, my primary program, you simply draw a selection window, left or right, depending on what your next step would be. No special tools or toggles or thinking ahead, it's just the primary selection process and very intuitive.
I am trying to iterate through objects in a layer and if the object satisfy a condition, I want to remove it.
Problem is that from what I suspect, if I use a "for loop" then when I remove an element, the initial length of the loop becomes invalid by removing the element. So what I would need is to iterate through objects in another matter and I am clueless.
I found this script that makes the selected objects the same width AND height. I am very new to creating scripts. is it possible to modify this to make an object the same width leaving their heights the same?
mySelection = activeDocument.selection; if (mySelection.length>0){ if (mySelection instanceof Array) { goal=mySelection[mySelection.length-1]; for (i=0; i<(mySelection.length-1); i++){
Simple solution to aligning selected items to the artboard. I was going to create an action but then realized it would be more convenient for me to include it in my script file....I have a script to align objects with each other but they dont align to the artboard.
I'm working with imported graphics, and the objects appear in the AI layer hierarchy grouped and named according to their object types in the native program (see the attached image). The problem lies with the annotation objects: they are made of different parts for which different graphic styles are needed; however, they all come in one layer and are difficult to access for global operations. I need to do different things with the different object types (delete the POINT's, move the LINE's and LWPOLYLINE's to different layers, etc...). The option of selecting objects individually is ok for small data sets, but you can imagine this becomes untenable in a hurry.
Two possible solutions I've considered:
(1) change the output parameters in the source program such that the objects come into illustrator with different graphics allowing them to be accessed through the "Select same ..." tools; it would work, but is problematic for the source program
(2) print the annotation graphics with their desired graphic appearance to pdf rather than importing the source file directly in AI, then open in AI to render the remaining graphics; again, this works but introduces inefficiency in the process. Also, the print process tends to explode closed paths requiring more inefficient path tinkering in AI.
I would like to tell AI to select all objects named "POINT" or "LINE" etc... but have found nothing in the documentation or forums on whether this is possible.
How to write a script which can duplicate objects and apply colours. I have a full break down of the project together with a Illustrator Action that demonstrates the functionality of the required script.
I'd like to select an object and have a script select all objects behind that object, within that objects bounds. I believe this is possible with z-order? But I've never worked with Z-orders before
Is there a way to simply select all object directly below an objects?
I found this script here but it doesn't seem to work.
//DESCRIPTION:Select Below // A Jongware Script if (app.documents.length && app.selection.length) { ypos = app.selection[0].visibleBounds[3];
[Code] .....
Here's an example file. I'm trying to select eveything below the yellow polygon.
This would be very useful in another project with many small objects bunch together below many larger objects. I want to group the small objects that are bellow the larger object together without having to manually select each objects (there are thousands of objects so a script would be ideal).
I have a grid of objects—say, tiny squares. I'd like to make arbitrarily-shaped selections of those objects—for instance, select a star-shaped group of the squares. Or a circle-shaped group of the squares. Or use text paths to select letter-shaped groups of the squares.
I could imagine a utility that lets me choose an arbitrary shape/path, and then turn that into a selection of objects on the canvas. Is this possible?
Right now I'm stuck using the lasso tool to hand-draw shape selections but it's not accurate enough for what I need to do.
I have multiple icons placed in a document, from several different sources (all are vector objects) -- see the included image. They vary in size and what I would like to do is find a less onerous method of resizing all the heights to a specific size, while scaling the width proportionately. I have found several scripts that come close to a solution (see links below), but none that allow me to input a height (or width) in inches and have all the objects resize to that height proportionately.
Change Width to the Width of the narrowest object --> Script01 Change Height to the Height of the shortest object --> Script02 Change Multiple Attributes (JohnWundes) --> Script03
icon image (couldn't place via Adobe Forum) --> click