RobOctopus
Participant
RobOctopus
Participant
Activity
‎Apr 02, 2024
04:09 AM
1 Upvote
Looks to me like your code isnt working as intended because you have your onresult and onreceived wrapped in an IF statement. then in the function calling this, you are setting the value of that IF to be false so the Bridgetalk object that you are sending to PS does not contain the onResult or the onReceived parts of the message. any particular reason they are wrapped in the IF statement? does changing that value to true when passed in cause AI to wait?
... View more
‎Mar 29, 2024
10:12 AM
line 20. if (ScriptUI.environment.keyboardState.altKey) NUM_POINTS = parseInt(prompt("enter point density. recommended range is 100..10000", 100)) remove the if statment
... View more
‎Mar 27, 2024
06:58 AM
1 Upvote
I have been met with inconsistent results of success when trying to debug bridgetalk functions. while testing some things out I wrote a small script to create a QR code in Illustrator by Bridgetalking to Indesign to use the built in QR functions there, and then copy paste it into Illustrator. Overall here are my findings. you will need a timeout value in the send statement. this number is the number of seconds it will wait before resuming functions in the host application. as long as the script in the target can be handled in this time frame... everything works fine. you will need onResult and possibly OnReceived I found using the OnReceived to activate the application has been helpful. Some of the apps dont like to operate while not in the activate state Someone smarter than me may be able to offer more insight, but i would try a recevied message that PS will do and also an onresult message that will be pushed back to illustrator, which can be a nothing statement and maybe push the timeout to be a little longer. Happy hunting, bridgetalk is a pain. helpful resource https://extendscript.docsforadobe.dev/interapplication-communication/bridgetalk-message-object.html var PromptRes = prompt("Website:","www.Google.com")
var BT = new BridgeTalk();
var appspecifier = "indesign";
if(!BridgeTalk.isRunning(appspecifier)){
BridgeTalk.launch(appspecifier);
}
//var ScriptFileMessage = 'var myDocument = app.documents.add();\rvar QRTangle = myDocument.rectangles.add({geometricBounds:[0.5,0.5,2,2]});\rQRTangle.createHyperlinkQRCode("' + PromptRes + '");\rQRTangle.select();\rapp.copy();\rmyDocument.close(SaveOptions.NO)'
var ScriptFileMessage = 'var myDocument = app.documents.add();'
ScriptFileMessage += 'var QRTangle = myDocument.rectangles.add({geometricBounds:[0.5,0.5,2,2]});'
ScriptFileMessage += 'QRTangle.createHyperlinkQRCode("' + PromptRes + '");'
ScriptFileMessage += 'QRTangle.select();'
ScriptFileMessage += 'app.copy();'
//ScriptFileMessage += '$.sleep(6000);'
/* testing that it will wait. as long as the function handles before the timeout on the send it should be fine */
ScriptFileMessage += 'app.activeDocument.close(SaveOptions.NO);'
BT.target = appspecifier;
BT.body = ScriptFileMessage;
/*alert(BT.body)*/
BT.onResult = function(){
app.paste();
}
BT.onReceived = function(){
/*forcing the trget application to become frontmost and active. this is the most troublesome part and sometimes likes to work, sometimes it doesnt*/
var IDActivate = File(BridgeTalk.getAppPath(appspecifier))
IDActivate.execute();
}
BT.send(10);
... View more
‎Mar 20, 2024
09:34 AM
1 Upvote
the text range and the characters are conflicting. text range doesnt havent characters in this instance. the characters are a part of the text frame and the text range is part of the text frame. both of the below examples gave me correct answers for the tracking /*using Characters from a textFrame */
var TF = app.activeDocument.selection[0];
var textCharactersAll = TF.characters;
for (var i = 0; i < textCharactersAll.length; i++) {
var character = textCharactersAll[i];
var tracking = character.characterAttributes.tracking;
// Log or do whatever you want with the tracking value
alert("Character " + (i+1) + " tracking: " + tracking);
}
/*using a textRange and the indexes of it */
var TF = app.activeDocument.selection[0];
var TR = TF.textRanges;
for (var i = 0; i < TR.length; i++) {
var character = TR[i];
var tracking = character.characterAttributes.tracking;
// Log or do whatever you want with the tracking value
alert("Character " + (i+1) + " tracking: " + tracking);
} side note: good idea to not create variables that are the same name as the value you are getting. it can get confusing later on. A lot of example code will just throw "my" in front of whatever to help signify that the variable is something you created. I replaced textFRame and textRange with TF and TR respectively
... View more
‎Mar 08, 2024
12:22 PM
1 Upvote
I am not sure if what you are trying to do is possible, but to add my two cents. in order to add color you will need to change your code where you set the background color to this. colorBox.graphics.backgroundColor = dialog.graphics.newBrush (dialog.graphics.BrushType.SOLID_COLOR,[red, blue, green, 1]); ScriptUI (as far as I know) does not read normal values. it reads a 0-1 value for color. some of what you are doing is not necessary for this as youre converting 255 down to 0-1 then back to 255 range. Other notes of the code. it looks like youre looping through your swatches and not just the swatches in a group and you have no method of handling errors. so when you encounter the first swatch in your list, which is a NoColor swatch. it will most likely error out and not go any further. the same will happen for a CMYK and non-RGB swatches as the script tries to gather data that it doesnt have. So you will probably need a method of converting non-RGB Swatches to RGB for reading or to skip them entirely. The dialog has the default spacing on it, so i would change the spacing on the group and have it be something small like 0 or 1. I was not able to get the swatches to update after changing the dropdown. maybe do-able by using visibility and hiding stuff, but didn't spend a lot of time looking into it. due to the length of swatches and the size of the dialog. if you have more than a handful of swatches the swatch boxes become impossibly small since you are dividing the total area to generate the width of the boxes. might want to figure a method that will do X number then create a new row of them
... View more
‎Feb 28, 2024
10:06 AM
2 Upvotes
using the above method I've outlined. here's a script to randomise the text thats currently in the frame. if(app.activeDocument.selection.length==1 && app.activeDocument.selection[0].typename=="TextFrame"){
var StartContents = app.activeDocument.selection[0].contents
var ShuffledContents = shuffleArray(StartContents)
app.activeDocument.selection[0].contents = ShuffledContents
} else {
alert("Whoops!\nPlease select a text frame and try again.")
}
function shuffleArray(Arr) {
if(typeof Arr=="string")Arr = Arr.split("")
for (var i = Arr.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = Arr[i];
Arr[i] = Arr[j];
Arr[j] = temp;
}
return Arr.join("")
} it will only work on a single text frame it will take the contents of the text frame, in this case a string of numbers or letters, and randomise them amongst themselves and then set that text frame's contents to the new randomised string.
... View more
‎Feb 28, 2024
09:04 AM
1 Upvote
While I am certain something could be created via scripting, if I'm understanding your ask correctly a similar effect can be achieved using native tools like area type options and text margins. Create your underlying grid Create a large Area Type Frame to cover the grid Edit the Area type options so that the Rows/Columns match the grid then get the Margins to push in and left to align Here is a 50mm x 50mm grid that is ultimately a single text frame with a string of letters/numbers that flow from 1 box to the next. you could simply retype whatever you wish or copy/paste a string into the text frame and each character would flow into the next box in line
... View more
‎Feb 22, 2024
06:33 AM
Femkeblanko wrote something that determines the coordinates of the start and end of an area frame. It takes a text frame and creates a duplicate to outline which you can then get precise top/bottom coords for the text. This could be 1 approach, would just have to be reconfigured for your needs. https://community.adobe.com/t5/illustrator-discussions/how-to-get-textrange-each-line-start-and-end-character-cooridnates-using-extendscript/td-p/14422468 alternatively, you could try making an algorithm of sorts to determine the text height based on typeface pt size. I've tried such before, but it's usually not perfect.
... View more
‎Feb 16, 2024
11:00 AM
Like others have said, this would probably be easiest to achieve via Indesign Data Merge via a multi record merge. unless there is some reason illustrator has to be used that is not being shared. set up the file dimensions to hold your 40 cards. do the multi-record merge option to flood the file and generate all 300 some at once. should take minimal time to set up.
... View more
‎Feb 14, 2024
06:03 AM
Ive never used the indesign dialog class, and frankly the look of the code is more confusing than scriptUI's. I use scriptUI since it has been more universal across Ai/Indd/Ps. Something I have started to use in some of my scripts is the UnitValue conversion function that's built in. UnitValue(100,"mm").as("pt") This allows you to convert any number into other values. https://extendscript.docsforadobe.dev/extendscript-tools-features/specifying-measurement-values.html So a handful of my windows have been set up like so. any value can be entered and any unit can be used and on the return it'll just grab the value and the dropdown selection to convert them to whatever needs to be used. This was mostly an illustrator thing since you're forced to used pts.
... View more
‎Feb 13, 2024
10:59 AM
1 Upvote
quick troubleshooting help. try using a try/catch alert to help identify where some problems might be happening. here's what I did. i took the mp.columnGutter=4 line and changed it to button2.onClick = function () {
// Set gutter
alert(mp.columnGutter)
try{
//mp.columnGutter = 2;
} catch (e){alert(e.message)}
alert(mp.columnGutter)
// Set column count
//mp.columnCount = 12;
dialog.close();
} This alerts back that the column gutter cant be interacted with because "a modal dialog is still active" so I moved the dialog.close to be at the top of the onclick function. despite the dialog being "closed" it still wasnt functioning and so i rewrote how the buttons are working and wrapped it into a function to close the dialog before interacting with indesign. in this instance the buttons are only returning whether you hit ok or cancel. you can rewrite the entire onclick functions to be instead. var button1 = group2.add("button", undefined, undefined, {name: "Cancel"});
button1.text = "Cancel";
var button2 = group2.add("button", undefined, undefined, {name: "Ok"});
button2.text = "OK";
if(dialog.show()==1){
dialog.close()
return true
} else {
dialog.close()
return false
} by default scriptUI will return 1 on a button assigned to the OK name. this allows you to have the dialog.show() code return back as 1 which == 1 and then return true out of the function. So the entire script looked like this at the end var doc = app.activeDocument;
var selectedPage = doc.pages.item(0);
var mp = selectedPage.marginPreferences;
var temp = getColumnGutterDialog()
if(temp){
mp.columnGutter = 4;
mp.columnCount = 12;
}
function getColumnGutterDialog(){
var dialog = new Window("dialog");
dialog.text = "Columns and Gutter";
dialog.preferredSize.width = 400;
dialog.orientation = "column";
dialog.alignChildren = ["left","top"];
dialog.spacing = 10;
dialog.margins = 16;
// GROUP1
// ======
var group1 = dialog.add("group", undefined, {name: "group1"});
group1.orientation = "row";
group1.alignChildren = ["left","top"];
group1.spacing = 30;
group1.margins = 0;
var statictext1 = group1.add("statictext", undefined, undefined, {name: "statictext1"});
statictext1.text = "Adjust to 12 Columns, Gutter 4?";
// GROUP2
// ======
var group2 = dialog.add("group", undefined, {name: "group2"});
group2.orientation = "row";
group2.alignChildren = ["left","center"];
group2.spacing = 10;
group2.margins = [0,20,0,0];
group2.alignment = ["right","top"];
var button1 = group2.add("button", undefined, undefined, {name: "Cancel"});
button1.text = "Cancel";
var button2 = group2.add("button", undefined, undefined, {name: "Ok"});
button2.text = "OK";
if(dialog.show()==1){
dialog.close()
return true
} else {
dialog.close()
return false
}
} /* end of dialog function */ Alternative approach, you can probably change the dialog window type to a palette and interact with indesign and not notice this interaction at all. Hope this helps!
... View more
‎Feb 12, 2024
05:38 AM
looks like you are looking at the path points for the circle text frame. if you just copied the code i wrote it is referencing the 0 text frame, based on the file you need the last textframe in your stack. changing the code to use selection[0] instead of textFrames would allow you to just select one and examine it. This is what I got for your odd shape text frame PathPoint: 0 x:407.370,y:-456.248 PathPoint: 1 x:58.020,y:-456.248 PathPoint: 2 x:50.227,y:-375.728 PathPoint: 3 x:50.227,y:-290.014 PathPoint: 4 x:60.617,y:-210.793 PathPoint: 5 x:76.201,y:-139.365 PathPoint: 6 x:156.721,y:-139.365 PathPoint: 7 x:526.851,y:-139.365 PathPoint: 8 x:548.929,y:-169.235 PathPoint: 9 x:567.110,y:-196.508 PathPoint: 10 x:404.773,y:-199.105 PathPoint: 11 x:406.071,y:-338.066
... View more
‎Feb 12, 2024
05:09 AM
Area text frames have a textPath associated with them. this textpath is what holds the information for where the anchor points are. To get to it via extendscript you can do as follows var thisFrame = app.activeDocument.textFrames[0]
alert(thisFrame.textPath.pathPoints.length)
/* just checking how many path points come up */
for(var p=0;p<thisFrame.textPath.pathPoints.length;p++){
var thisPoint = thisFrame.textPath.pathPoints[p]
/* here we get the reference to the pathpoint and can do what we want. simple alert for what the anchor value is */
alert(thisPoint.anchor)
}
... View more
‎Feb 06, 2024
11:19 AM
you can do this. when you do the object offset path. it will generate the new path below the current object. there is a command to select the object above/below. you can find this command via select then "next object above" and below, so you can create an action like this
... View more
‎Feb 06, 2024
10:30 AM
instead of using effect - path - offset. go to object - path - offset and see if that still does what you want also from your screenshot. the square box next to the "offset outside path" down arrow and checkbox. click that to remove the dialog interactions
... View more
‎Feb 06, 2024
09:43 AM
just did a quick test. double check whether the dialog option is turned on or not there will either be an empty box (its off) or the square next to the check mark is filled with a little icon
... View more
‎Feb 05, 2024
08:06 AM
2 Upvotes
to add to this, here is the function I have been using. allows input for changing to whichever type of alignment. so you can do AlignAreaText(app.activeDocument.textFrames[0], 1) for center AlignAreaText(app.activeDocument.textFrames[0], 2) for bottom etc /*
Align Area Text Function
aligns an area frame based on an input value, 0=Top, 1=Center, 2=Bottom, 3=Justify
other action string information
The first name is the set name, in a hex based code, first number is number of characters to decode and the second string is the name converted to hex
the second name below actioncount and action, is the action name, same numbers apply, first is character length and second is name converted to hex
*/
function AlignAreaText(TextFrameToAlign, AlignNumber) {
var ActionString = [
'/version 3',
'/name [ 12',
'416c69676e54657874536574',
']',
'/isOpen 1',
'/actionCount 1',
'/action-1 {',
'/name [ 9',
'416c69676e54657874',
']',
'/keyIndex 0',
'/colorIndex 0',
'/isOpen 1',
'/eventCount 1',
'/event-1 {',
'/useRulersIn1stQuadrant 0',
'/internalName (adobe_frameAlignment)',
'/localizedName [ 24',
'417265612054657874204672616d65416c69676e6d656e74',
']',
'/isOpen 0',
'/isOn 1',
'/hasDialog 0',
'/parameterCount 1',
'/parameter-1 {',
'/key 1717660782',
'/showInPalette 4294967295',
'/type (integer)',
'/value ' + AlignNumber,
'}',
'}',
'}'].join("\n")
var f = File(Folder.desktop+"/VerticalTextAlign.aia");
f.open('w');
try {
f.write(ActionString);
} catch (e) {/*alert(e.message)*/}
f.close();
app.executeMenuCommand("deselectall")
TextFrameToAlign.selected = true;
app.loadAction(f);
app.doScript('AlignText', 'AlignTextSet');
try {
app.unloadAction('AlignTextSet', '');
} catch (e) {/*alert(e.message)*/}
f.remove();
}
... View more
‎Feb 02, 2024
11:49 AM
1 Upvote
page 45 - 57 is all treeview related information. never worked with treeviews before but without any other information of your script treeview.selection.index
... View more
‎Feb 02, 2024
11:19 AM
It's not particular great, but very simple. i haved coded in indesign in a while so was a nice exercise. im sure there are better ways to do this. the items have to be grouped up. should do all pages and all base level groups of that, shouldnt go further. /**
* simple radio button renamer, based on groups
* all radio buttons within a group will be renamed via prompt and a number counter.
* @author RobOctopus
* @discussion https://community.adobe.com/t5/indesign-discussions/indesign-radio-buttons-append-when-copy-paste/td-p/14395488
*/
var NewButtonName = prompt("Rename each button grouping to X #","Button")
var myDoc = app.activeDocument
for(var p=0;p<myDoc.pages.length;p++){
var thisPage = myDoc.pages[p]
for(var g=0;g<thisPage.groups.length;g++){
var thisGroup = thisPage.groups[g]
for(var r=0;r<thisGroup.radioButtons.length;r++){
var thisRadioButton = thisGroup.radioButtons[r]
thisRadioButton.name = NewButtonName + " " + (g+1)
} /* end radio loop */
}/* end groups loop */
} /* end pages loop */
... View more
‎Feb 02, 2024
10:56 AM
without a script of some form, you have to do this manually. but if you press a (or v if the buttons are not in a group) and select the items you want to edit, you can edit the names of all the buttons at once, so it should go faster. to original point, maybe they worked differently in the past, but they currently do not automatically number upwards like checkboxes or other forms do.
... View more
‎Feb 02, 2024
10:01 AM
Copy/paste will maintain the radio button names which will keep them linked together in this photo, the top yes/no buttons are name "radio button 1". since they share the same name they will interact with each other and turn the other off when a new one is clicked. the button yes/no were copied from them, they were also named radio button 1 after copying. upon export, all 4 will interact as a group. you will have to change the name manually. the good thing is you can highlight all the buttons together and change the names of all of a set at once. so you should only have to do this 25 times
... View more
‎Jan 30, 2024
12:34 PM
1 Upvote
as far as I know, there are no ways to dynamically change font size via native illustrator tools. this can be done via a script though. looking at the link provided, it should have what you would need, just need to loop through all the text and check if they are overset, then decrease the font size until they are no longer overset. function shrinkFont(textBox) {
var totalCharCount = textBox.characters.length;
var lineCount = textBox.lines.length;
if (textBox.lines.length > 0) {
var firstLineCharCount = textBox.lines[0].characters.length;
if (isOverset(textBox, lineCount)) {
var inc = defaultIncrement;
while (isOverset(textBox, lineCount)) {
textBox.textRange.characterAttributes.size -= inc;
}
}
} else if (textBox.characters.length > 0) {
var inc = defaultIncrement;
while (isOverset(textBox, lineCount)) {
textBox.textRange.characterAttributes.size -= inc;
}
}
}; unsure of what you are trying to do via illustrator, but you can dynamically change font size using InDesign and some GREP styled paragraph styles. if you're looking for a code free or code-lite (you'll need to semi understand GREP) method for this, inDesign might be an avenue
... View more
‎Jan 30, 2024
10:03 AM
Right, I'm not quite sure when the graphic is being placed and it's size is being established. based on your code I would assume somewhere in this bit, it's creating the placedItem object and assigning the variable graphicRef to it, but I've never used contentVariable and am unsure if that is actually assigning an image to it. I've always used the placedItem.File = File(myPath) method of assigning an image. ...
else if(type == VariableKind.IMAGE){
//create graphic object and associate with this variable
var graphicRef = doc.placedItems.add();
graphicRef.position = artBoardPosition;
var graphicPath = vars[i];
graphicRef.contentVariable = graphicPath;
//need to flip vertical - Illustrator Bug?
graphicRef.transform(flipMatrix);
}
... until the image has been assigned to the placedItem, it doesnt have any size. the PlacedItem simply becomes a container thats incredibly tiny waiting to be loaded with more information. After the graphic is actually assigned to the placedItem, then it has a size that you would want. so my guess is you would want to add all the rectangle creation after the graphicRef.transform line (so to answer your question, it can be apart of the function, not a separate one). ...
graphicRef.transform(flipMatrix);
var myGeoBounds = graphicRef.geometricBounds
/* hopefully get the geo bounds you're looking for */
var BackgroundRect = doc.pathItems.rectangle(myGeoBounds[1], myGeoBounds[0], Math.abs(myGeoBounds[2]-myGeoBounds[0],Math.abs(myGeoBounds[3]-myGeoBounds[1])
/* OR using top/left/width/height */
var BackgroundRect = doc.pathItems.rectangle(graphicRef.top,graphicRef.left,graphicRef.width,graphicRef.height)
/* make that rectangle based on those geoBounds. you can add it wherever you like, here it will add to the same layer the placed image has been added to */
/* rest of the rectangle code for color/stroke/stack */ hope this helps
... View more
‎Jan 29, 2024
01:48 PM
Not as familiar with illustrator variables/datasets but hopefully this will help. /*
rectangles are drawn off 4 digits
a pair of YX coordinates followed by the Width and the Height from that coordinate
The below example makes a rectangle at [x,y] [3,-5] that is 20 pts wide and 50 pts tall
using -5 for the Y as Y=0 is the top left of the artboard, using positive Y will go above the artboard
*/
var BackgroundRect = app.activeDocument.layers[0].pathItems.rectangle(-5, 3, 20, 50)
/*
in your instance you want the size to be the same as the linked placed item.
whenever you place your image, get that reference and pull the geometricBounds (or top/left/width/height)
var MyImage = app.activeDocument.layers[0].placedItems.add()
MyImage.file = File(ImagePath)
var BackgroundRect = app.activeDocument.layers[0].pathItems.rectangle(MyImage.top, MyImage.left, MyImage.width, MyImage.height)
OR GeoBounds
GeometricBounds are an array of 4 numbers, 2 pairs of x/y coords, the top left and the bottom right
var myGeoBounds = MyImage.geometricBounds //this will return [3,-5,23,-55]
var BackgroundRect = app.activeDocument.layers[0].pathItems.rectangle(myGeoBounds[1], myGeoBounds[0], Math.abs(myGeoBounds[2]-myGeoBounds[0],Math.abs(myGeoBounds[3]-myGeoBounds[1])
we do absolute math to remove the negatives and have to do the X2 coord to the X1 coord to get proper width and same for Height
*/
BackgroundRect.stroked = false;
/* make sure the rectangle does not have a stroke */
BackgroundRect.fillColor = app.activeDocument.swatches.getByName("White").color;
/* apply whatever color fill you want. All AI files should have the basic Registration,[None],White,Black.
If concerned of not having that color you can create it in the script to call
var CMYKWhite = new CMYKColor();
CMYKWhite.cyan = 0;
CMYKWhite.magenta = 0;
CMYKWhite.yellow = 0;
CMYKWhite.black = 0;
BackgroundRect.fillColor = CMYKWhite
*/
BackgroundRect.move(app.activeDocument.layers[0],ElementPlacement.PLACEATEND)
/*
move the rectangle to whever you need it.
WhatImMoving.move(WhereItsGoing,HowItsbeingMoved)
ElementPlacement.INSIDE
ElementPlacement.PLACEAFTER
ElementPlacement.PLACEATBEGINNING
ElementPlacement.PLACEATEND
ElementPlacement.PLACEBEFORE
*/
... View more
‎Jan 29, 2024
06:18 AM
1 Upvote
change the last number to be negative. My brain isn't remembering the reasons why, and I dont want to give you wrong information, but if you change the 200 in your rectangle coordinates to be -200 it should work. app.activeDocument.artboards[0].artboardRect = [0, 0, 300, -200];
... View more
‎Jan 22, 2024
07:59 AM
4 Upvotes
Old topic, but maybe this will help someone else I found that putting an app.redraw() into my embed loop solved my problem. I was randomly having images change size/positions when embeding via scripting. Doing the same thing manually would embed as expected, but something about the script was messing with some of them. The redraw seemed to fix the few that I tested this with. for (var e = app.activeDocument.placedItems.length - 1; e >= 0; e--) {
var PlacedLink = app.activeDocument.placedItems[e]
if (!PlacedLink.hidden) {
try {
PlacedLink.embed();
} catch (e) {
/*nothing*/
}
app.redraw()
}
}
... View more
‎Dec 13, 2023
07:54 AM
1 Upvote
Is anyone else experiencing bad memory leak problems with recent versions of Illustrator? I have a script that automates our packaging production, for all of 2022 and most of 2023, the script would run at relatively the same speed throughout each run of a package. 200 packages later, it's still running at the same speed. In recent months, after about 20 or so packages, it is noticeably slower and progressively slows down. I have been able to determine it's a memory problem with the script where it is storing all of the textframes it is interacting with, as well as a few other variables. I have been unsuccessful in figuring out how to stop these from being stored into memory. The only way to clear them is to shut down Illustrator and start up a new instance. Is anyone else noticing something similar? Did Adobe change something with how AI and extendscript are interacting?
... View more
‎Feb 15, 2023
12:21 PM
I have a very large script that I use to automate packaging design for my company. The script will create the artwork in illustrator and then creates packaged files. one part of the script triggers a bridgetalk to indesign to create a documentation file using the newly created AI file. my issue is that occasionally the script takes a monsterously long time to process the bridgetalk. more details about the indesign script the script being sent to indesign essentially opens a template file, places the AI file and then does some (about 5) textual find/changes, then outputs a PDF. It exists on its own and when used separete of the AI bridgetalk has only taken long times when the file being placed is exceedingly large, but usually it processes faster than you can even make out what is happenning. however, occasionally when being bridegtalked from AI to ID, it'll change from 3 second process time to 200+ seconds. I added some incremental time checks to verify where its being hung up and when it has issues, it ends up being one of the find/change commands. the file will place in normal time frame, the text starts changing and has stats like 0.003 milliseconds each and then one of the find changes will take some absurd number like 200+ seconds. ex: START Time1: 0 Time2: 0.25 (template has opened) Time3: 0.779 (AI graphic placed and resized as needed) Time4: 0.077 (got modifed file time data) Time5: 0.008 (turned on and off layers) Time6: 0.005 (find change 1) Time7: 0.03 (find change 2) Time8: 106.268 (find change 3) Time9: 0.023 (find change 4) Time10: 0.024 (find change 5) Time11: 0.37 (pdf output has happened) END another example: START Time1: 0 Time2: 0.216 Time3: 0.652 Time4: 0.064 Time5: 0.057 Time6: 60.152 Time7: 60.124 Time8: 60.125 Time9: 0.003 Time10: 60.163 Time11: 0.307 END Basically, are there any known issues with bridgetalking from AI to ID for speed? or have an idea of what might be causing this. mind you if I took the problematic AI files and triggered the ID script not through the AI bridgetalk, it processes in mere seconds. this specifically happens via AI to ID and not always. It usually works as intended, but occasionally hits this snag
... View more
‎Oct 05, 2020
08:28 PM
Thanks for the reply Mike, I am currently on 15.0.1 and due to company IT policies can not control my updating schedule. I'll do some more testing tomorrow and check the CSV file. I've tried a few save outs of it but may try building one from scratch to see if that is an issue. I appreciate the tag remover snippet, I was hoping to not need something like that
... View more
‎Oct 05, 2020
12:47 PM
1 Upvote
So I am encountering an issue I have never seen, after using Data Merge for the past 3 years. I am trying to automate some of our design outputs by creating a script that allows a non-designer from our company to fill out information and then we can run the scripts and remove a lot of the tedious work and get us to a finished publication faster. My issue is when it merges. the pre-merge document does not have any XML tags associated with it, but after merging everything is automatically tagged. it is throwing the script off and I am unsure how it is getting auto-tagged. This is a new issue for me. Does anyone know why data merge might be doing this. I have tried googling and across different forums come up with nothing. Thanks
... View more
- « Previous
-
- 1
- 2
- Next »