[JS] Break Link to Symbol || Outline text contained within symbol

There are a set of symbols in my documents, these all contain editable text.
Prior to going to production I need to break the link to all the symbols so that I can outline the text. SymbolItem doesn't have a method that i have uncovered - suggestions?
Thanks

As i already said is not that difficult ... this script turns your symbol into a nice bunch of pathitems:
#target illustrator
var doc = app.activeDocument;
var doc2 = app.documents.add();
var SymbolHelper = {
        getSymbols: function() {
            var syms = new Array();
            for(i=0; i < doc.pageItems.length; i++) {
                if(doc.pageItems[i].typename=="SymbolItem") {
                    syms.push(doc.pageItems[i]);
            return syms;
        moveAndBreakSymbol: function(sym) {
            try { sym.duplicate(doc2, ElementPlacement.PLACEATBEGINNING); } catch(ex) {};
        clearSymbols: function() {
            try { doc2.symbols.removeAll(); } catch(ex){}
        makeMePlainAndSweet: function(group) {
            var sorted =group.pageItems;
            for(e = sorted.length - 1; e>= 0; e--) {
                sorted[e].move(group, ElementPlacement.PLACEBEFORE);
        makeMePlainAndSweetBatch: function() {
            var doAfter = new Array();
            for(x = doc2.groupItems.length - 1; x >= 0;x--) {
                //alert(doc2.groupItems[x].groupItems.length);
                if(doc2.groupItems[x].groupItems.length > 0) doAfter.push(doc2.groupItems[x]);
                else this.makeMePlainAndSweet(doc2.groupItems[x]);
           if(doAfter.length > 0) {
                for(i = doAfter.length - 1; i >= 0; i--) {
                    this.makeMePlainAndSweet(doAfter[i]);
var syms = SymbolHelper.getSymbols();
for(i = syms.length - 1; i >= 0; i--) {
    SymbolHelper.moveAndBreakSymbol(syms[i]);
SymbolHelper.clearSymbols();
SymbolHelper.makeMePlainAndSweetBatch();
The only downside of the javascript aproach(that's either because i`m too stupid/tired @ this hour) is that the elements inside the groups are taken out in their index order and not their zOrder(using zOrderPosition on elements inside the group gives me an internal error) because of some random reason.
The rest of the script is fairly easy and that's bringing back the elements.
hope it somehow helps;
cheers;

Similar Messages

  • How do you change the text contained within an iCal reminder ?

    Basically I want the iCal reminder to be converted to plain text so that when the reminder is sent to (the client's) email (which is in essence their mobile phone via an SMS gateway) so that the email gives them the appointment time (and date) rather than as an iCal attachment with the standard email
    Hope I am making sense
    Please help !!!!!

    Hi again,
    I am using Calendar (rather than iCal) which doesn't give me the above options when using Automator.
    I have never really used automator so I am in need of virtually a complete walk through.
    Thanks for the help so far

  • Use Regular Expressions to remove open/close anchor tags but leave the text contained within alone

    I have a large file with lots of anchor tags.  Many of the anchor tags have no HREF specified and do nothing.  They aren't hurting anything, either, but I'd like to get rid of them, leaving the anchor tags that do have HREF alone, and leaving the text between the tags alone.  Here's an example: <a>A resident or municipality may seek to vacate 25.01.01</a>.
    I've come up with this to identify those tags: <\a>(.)*</\a>  and it works, it finds them, but what should I put in the Replace area in order to remove the open/close tags but leave the text as it is?

    I'm a reg ex idiot. So I use the Search Specific Tag feature whenever I can.  See screenshot, hit Replace All.  But please do this on a backed-up document to be sure it does what you want.
    Nancy O.

  • Cut and paste bug within Symbols - anyone else?

    I've come across a bug in Illustrator CS6. When I cut and paste content from within a symbol into the same or another symbol it pastes all the content from that symbol into it again.
    Anyone else having this issue?
    I can provide screenshots to help explain.

    Same issue here, this is a major problem for me as i use symbols all the time. First time i've had the issue with CS6 - maybe it was always there....
    If i cut some text from selected text inside a symbol and paste that text back into another symbol, all the text contained within the first symbol gets pasted even though it was not seletced!
    ARGHHH!

  • Javascript: select all text, break link to style

    Hi
    I'd like to select all text in a Document (in different independent textboxes) and then break the link to it's style (in the program in the Flyout-menu of the paragraph styles)
    Is this function scriptable (javascript)?
    How do I select all the text?
    InDesign CS6, OS10.7.4
    Thanks

    In fact, I use the adobe findchangebylist to modified, I want to do a clear setting script, not only break link to style, but when i run the script that will get error, can u help me to fix it, my script is shown as below:
    main();
    function main(){
    var myObject;
    //var myCheckSelection = false;
    //Make certain that user interaction (display of dialogs, etc.) is turned on.
    app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
    if(app.documents.length > 0){
      if(app.selection.length > 0){
       switch(app.selection[0].constructor.name){
        case "InsertionPoint":
        case "Character":
        case "Word":
        case "TextStyleRange":
        case "Line":
        case "Paragraph":
        case "TextColumn":
        case "TextFrame":
        case "Text":
        case "Cell":
        case "Column":
        case "Row":
        case "Table":
         myDisplayDialog();
         break;
        default:
         //Something was selected, but it wasn't a text object, so search the document.
         //myFindChangeByList(app.documents.item(0));
                        //alert("Nothing Selected, Please Select Text Frame or Text.");
      else{
       //Nothing was selected, so simply search the document.
                //myFindChangeByList(app.documents.item(0));
                alert("Nothing Selected, Please Select Text Frame or Text.");
    else{
      alert("No documents are open. Please open a document and try again.");
    function myDisplayDialog(){
    var myObject;
    var myDialog = app.dialogs.add({name:"Joan New Clear Setting_v1.0"});
    with(myDialog.dialogColumns.add()){
       with(dialogRows.add()){
       with(dialogColumns.add()){
    staticTexts.add({staticLabel:"Search Range:"});
         var mySearchButtons = radiobuttonGroups.add();
         with(mySearchButtons){
         radiobuttonControls.add({staticLabel:"Current Document", checkedState:true});
                       if(app.selection[0].contents != ""){
        radiobuttonControls.add({staticLabel:"Selection", checkedState:true});
       with(dialogColumns.add()){
        with(borderPanels.add()){
         staticTexts.add({staticLabel:"Clear Setting:"});
         var myDateButtons = radiobuttonGroups.add();
         with(myDateButtons){
         radiobuttonControls.add({staticLabel:"English", checkedState:true});
         radiobuttonControls.add({staticLabel:"Chinese"});
    var myResult = myDialog.show();
    if(myResult == true){
      switch(mySearchButtons.selectedButton){
       case 0:
                     BreakLinktoStyleDocument();
                     TurnOffHyphenationDocument();
                     myObject = app.documents.item(0);
                     myCheckSelection = false;
        break;
                  case 1:
                     BreakLinktoStyleSelection();
                     TurnOffHyphenationSelection();
                     myObject = app.selection[0];
                     myCheckSelection = true;
        break;
      switch(myDateButtons.selectedButton){
      case 0:
      myFindChangeByList1(myObject, myCheckSelection);
      break;
      case 1:
      myFindChangeByList2(myObject, myCheckSelection);
      break;
      myDialog.destroy();
      //myFindChangeByList1(myObject);
    else{
      myDialog.destroy();
    function TurnOffHyphenationDocument() {
    app.activeDocument.stories.everyItem().texts.everyItem().hyphenation=false;
    myTables = app.activeDocument.stories.everyItem().tables.everyItem();
    myTables.cells.everyItem().paragraphs.everyItem().hyphenation=false;
    function TurnOffHyphenationSelection() {
    app.selection[0].texts[0].hyphenation=false;
    app.selection[0].cells.everyItem().texts[0].hyphenation=false;
    function BreakLinktoStyleDocument() {
    app.activeDocument.stories.everyItem().texts.everyItem().applyParagraphStyle(app.activeDoc ument.paragraphStyles.item(0), false);
    app.activeDocument.stories.everyItem().texts.everyItem().applyCharacterStyle(app.activeDoc ument.characterStyles.item(0), false);
    myTables = app.activeDocument.stories.everyItem().tables.everyItem();
    myTables.cells.everyItem().paragraphs.everyItem().applyParagraphStyle( app.activeDocument.paragraphStyles.item(0), false);
    myTables.cells.everyItem().paragraphs.everyItem().applyCharacterStyle( app.activeDocument.characterStyles.item(0), false);
    function BreakLinktoStyleSelection() {
    app.selection[0].texts.everyItem().applyParagraphStyle(app.activeDocument.paragraphStyles. item(0), false);
    app.selection[0].texts.everyItem().applyCharacterStyle(app.activeDocument.characterStyles. item(0), false);
    app.selection[0].cells.everyItem().texts[0].applyParagraphStyle(app.activeDocument.paragra phStyles.item(0), false);
    app.selection[0].cells.everyItem().texts[0].applyCharacterStyle(app.activeDocument.charact erStyles.item(0), false);
    function myFindChangeByList1(myObject, myCheckSelection){
    var myScriptFileName, myFindChangeFile, myFindChangeFileName, myScriptFile, myResult;
    var myFindChangeArray, myFindPreferences, myChangePreferences, myFindLimit;
    var myStartCharacter, myEndCharacter;
    var myFindChangeFile = myFindFile("/ScriptSupport/te.txt")
    if(myFindChangeFile != null){
            // Because the selection will change as we add/remove characters,
            // we'll need to reset the selection after each pass if we are
            // checking the selection. We'll get the index of the first character
            // in the selection (relative to the start of its parent story) and
            // the index of the last character in the selection (relative to the
            // *end* of the story, and we'll use them later in the script to
            // keep the ends of the selection in place.
      if(myCheckSelection == true){
       var myStart = myObject.characters.item(0).index;
       var myEnd = myObject.characters.item(-1).index;
       var myStory = myObject.parentStory;
       var myStoryEnd = myStory.characters.item(-1).index;
       myEnd = (myStoryEnd - myEnd)+1;
      myFindChangeFile = File(myFindChangeFile);
      var myResult = myFindChangeFile.open("r", undefined, undefined);
      if(myResult == true){
       //Loop through the find/change operations.
       do{
        myLine = myFindChangeFile.readln();
        //Ignore comment lines and blank lines.
        if((myLine.substring(0,4)!="text")||(myLine.substring(0,4)!="grep")||(myLine.substring(0, 5)!="glyph")){
         myFindChangeArray = myLine.split("\t");
         //The first field in the line is the findType string.
         myFindType = myFindChangeArray[0];
         //The second field in the line is the FindPreferences string.
         myFindPreferences = myFindChangeArray[1];
         //The second field in the line is the ChangePreferences string.
         myChangePreferences = myFindChangeArray[2];
         //The fourth field is the range--used only by text find/change.
         myFindChangeOptions = myFindChangeArray[3];
         switch(myFindType){
          case "text":
           myFindText(myObject, myFindPreferences, myChangePreferences, myFindChangeOptions);
           break;
          case "grep":
           myFindGrep(myObject, myFindPreferences, myChangePreferences, myFindChangeOptions);
           break;
          case "glyph":
           myFindGlyph(myObject, myFindPreferences, myChangePreferences, myFindChangeOptions);
           break;
         if(myCheckSelection == true){
          myStartCharacter = myStory.characters.item(myStart);
          myEndCharacter = myStory.characters.item(-myEnd);
          myObject = myStory.texts.itemByRange(myStartCharacter, myEndCharacter);
          app.select (myObject);
       } while(myFindChangeFile.eof == false);
       myFindChangeFile.close();
    alert("Done");
    function myFindText(myObject, myFindPreferences, myChangePreferences, myFindChangeOptions){
    //Reset the find/change preferences before each search.
    app.changeTextPreferences = NothingEnum.nothing;
    app.findTextPreferences = NothingEnum.nothing;
    app.findChangeTextOptions = NothingEnum.nothing;
    var myString = "app.findTextPreferences.properties = "+ myFindPreferences + ";";
    myString += "app.changeTextPreferences.properties = " + myChangePreferences + ";";
    myString += "app.findChangeTextOptions.properties = " + myFindChangeOptions + ";";
    app.doScript(myString, ScriptLanguage.javascript);
      myFoundItems = myObject.changeText();
    //Reset the find/change preferences after each search.
    app.changeTextPreferences = NothingEnum.nothing;
    app.findTextPreferences = NothingEnum.nothing;
    app.findChangeTextOptions = NothingEnum.nothing;
    function myFindGrep(myObject, myFindPreferences, myChangePreferences, myFindChangeOptions){
    //Reset the find/change grep preferences before each search.
    app.changeGrepPreferences = NothingEnum.nothing;
    app.findGrepPreferences = NothingEnum.nothing;
    app.findChangeGrepOptions = NothingEnum.nothing;
    var myString = "app.findGrepPreferences.properties = "+ myFindPreferences + ";";
    myString += "app.changeGrepPreferences.properties = " + myChangePreferences + ";";
    myString += "app.findChangeGrepOptions.properties = " + myFindChangeOptions + ";";
    app.doScript(myString, ScriptLanguage.javascript);
    var myFoundItems = myObject.changeGrep();
    //Reset the find/change grep preferences after each search.
    app.changeGrepPreferences = NothingEnum.nothing;
    app.findGrepPreferences = NothingEnum.nothing;
    app.findChangeGrepOptions = NothingEnum.nothing;
    function myFindGlyph(myObject, myFindPreferences, myChangePreferences, myFindChangeOptions){
    //Reset the find/change glyph preferences before each search.
    app.changeGlyphPreferences = NothingEnum.nothing;
    app.findGlyphPreferences = NothingEnum.nothing;
    app.findChangeGlyphOptions = NothingEnum.nothing;
    var myString = "app.findGlyphPreferences.properties = "+ myFindPreferences + ";";
    myString += "app.changeGlyphPreferences.properties = " + myChangePreferences + ";";
    myString += "app.findChangeGlyphOptions.properties = " + myFindChangeOptions + ";";
    app.doScript(myString, ScriptLanguage.javascript);
    var myFoundItems = myObject.changeGlyph();
    //Reset the find/change glyph preferences after each search.
    app.changeGlyphPreferences = NothingEnum.nothing;
    app.findGlyphPreferences = NothingEnum.nothing;
    app.findChangeGlyphOptions = NothingEnum.nothing;
    function myFindFile(myFilePath){
    var myScriptFile = myGetScriptPath();
    var myScriptFile = File(myScriptFile);
    var myScriptFolder = myScriptFile.path;
    myFilePath = myScriptFolder + myFilePath;
    if(File(myFilePath).exists == false){
      //Display a dialog.
      myFilePath = File.openDialog("Choose the file containing your find/change list");
    return myFilePath;
    function myGetScriptPath(){
    try{
      myFile = app.activeScript;
    catch(myError){
      myFile = myError.fileName;
    return myFile;
    and here is my text file, te.txt
    //001
    grep {findWhat:"."} {appliedLanguage: app.languagesWithVendors.item("English: USA"), kerningMethod: "無"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, includeLockedStoriesForFind:true, widthSensitive:true}
    //002
    grep {findWhat:"."} {kinsokuSet: "繁體中文避頭尾(s)"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, includeLockedStoriesForFind:true, widthSensitive:true}
    //003
    grep {findWhat:"."} {mojikumi: "nothing"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, includeLockedStoriesForFind:true, widthSensitive:true}
    //004
    grep {findWhat:"."} {ligatures:false} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, includeLockedStoriesForFind:true, widthSensitive:true}
    //005
    grep {findWhat:"."} {gridAlignment: 1852796517} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, includeLockedStoriesForFind:true, widthSensitive:true}
    //006
    grep {findWhat:"."} {leadingModel: 1248619858} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, includeLockedStoriesForFind:true, widthSensitive:true}
    //007
    grep {findWhat:"."} {characterAlignment: 1247896172} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, includeLockedStoriesForFind:true, widthSensitive:true}

  • Breaking link with Symbol loses brush strokes

    I'm disappointed to find that if a symbol instance containing brush strokes, is scaled and the symbol link is broken, all the brush strokes are converted to filled paths. I find, if I place an instance at 100%, then break link, the brush strokes are intact. This is also true of symbols containing Live Paint objects.
    Has anyone else experienced this? I wonder why AI cannot just scale the brush width, instead of converting them to shapes.

    For you, anything, Kurt.
    I'm actually talking about the default CMYK artbrushes that ship with AICS2 (and maybe 10). More specifically the Chalk Scribble brush. That one seems to convert to filled paths when it's included in a symbol that's delinked once on the artboard.
    I've also seen this with some custom made brushes of my own... usually complex with lots of points and curves. And I suspect what Ray sees happens with more complex brushes in symbols... scaled or otherwise depending on the particulars.

  • CS4 Breaking linked text links

    Hi,
    In CS3 and before, simply double clicking on an out port of a text frame would break a link and remove the text from the downstream text frame. Same with the in port of the second text frame.
    But in CS4 doing this does remove the text, for a moment, and then it suddenly reappears.
    I have used all the usual modifier keys to no avail. Bug? Or is this a new feature designed to totally frustrate me?
    Thanks
    John

    Thanks.
    Must be something in my configuration, but no idea what.
    Just in case these are the steps I used:
    1 On master pages create 2 frames and establish a thread by clicking on out port and then on frame.
    2 On regular pages flow in text.
    3 Double click on first frames out port.
    This gives me a loaded cursor (unexpected) and the text disappears from frame two (expected)
    4 within a second the text reappears and the cursor stays loaded.
    5 The text in the second frame works as threaded text should flowing correctly when frame sizes are adjusted in the first frame.
    6 When Show Text Threads is selected the thread image is no longer there after the double click.
    THanks again.
    John

  • I need to delete a text that keeps locking up my iPod. The text contains a long string of emojis (a bunch of ant symbols).  It keeps locking up the iMessage screen.  Was doing it on my iPhone to

    I need to delete a text that keeps locking up my iPod. The text contains a long string of emojis (a bunch of ant symbols).  It keeps locking up the iMessage screen.  Was doing it on my iPhone too. How do I delete an old text that keeps trying to come through my apple Id?
    Thanks?

    Have you looked at the previous discussions listed on the right side of this page under the heading "More Like This"?

  • Break Link - Symbols Issue

    My issue is with "Break Link" in CS5 Mac
    It currently breaks the symbol into a new layer inside the current layer instead of just making it a group inside current layer like it use to.
    I found the symbols feature really handy in teh previous versions. I do a lot of licensed artwork so I use the same logos repeatedly through out the day and it was nice to jsut have them in a symbol library so I could just drop what I needed of licensee's logos. Now this is more of a hassle with the current set up now and has added time to my old work flow.
    Any solutions other than converting back to CS4, I do feel this is a bug currently.

    Thanks for the response!
    I was a afraid that was the case. I'm not sure the advantage of the new setup. I have actually found a semi ok work around to the problem that stops it form making new layers in layers.
    If you drop your symbol to stage select it then group just the symbol then break it apart it will remain on the same layer, you may just get a group in a group. Which to me isn't as big of a issue as having art on different layers inside layers...

  • Sub-layer created when breaking link to symbol bad idea?

    When breaking the link to a symbol the contents is put into a sub-layer. I see no value in this and I am constantly disposing of the new layer. If it were a group it would be simple because groups don't exist without content, but layers must be deleted. Does anyone else have this grip or can you convince me this is a great new idea? I'm pretty sure this did not happen in CS4.

    For those frustrated by this issue, Cense posted a good workaround:
    http://forums.adobe.com/thread/684879?tstart=0
    Just group the symbol before breaking link and when you "break link" the resulting artwork is a nested group instead of a sub-layer.  No more useless layer to deal with.

  • Editing a Symbol's Text

    Im trying to edit the text of a symbol so that it applies to all instances where the symbol appears. However, when i TRY to edit the symbol, the new text appears ON TOP of the old text instead of replacing it like I want! Very frustrated because im sure its something simple. Any help would be appreciated.
    See? It just types over the old stuff but I want to replace the first word. It doesn't even automatically select the appropriate font.

    I think I know what you did you clicked on the symbol on the artboard with the text tool and then started typing which only added text on top of the symbol.
    Take the selection tool (black arrow) and double click on any instance of the symbol to enter isolation mode you wil see a prompt telling you you are about to edit a symbol and it will effect ll instances of that symbol.
    Do not, I repeat do not break the link to the symbol.
    Once you are in isolation mode you wuill be able to edit the text of the symbol once you edit the text and you are satified then use the selection tool to click anywhere away from the text or other parts of the symbol to exit isolation mode.
    Al instances of the symbol will be updated.
    You can also use the symbol panel at the bottom of the panel there is an icon that when hoovered over wil tell you that it is the edit symbo tool click on the symbol you want to select it then click onthe edit symbol icon to also enter isolatiobn mode for that symbol.
    Then you do the same as above.
    But make certain you do not break the link to the symbol this is the wrong advice. Keep the symbol linked.

  • Can we stop Illustrator from outlining text in a PDF?

    I've opened a pdf and get the following message, "To preserve appearance, some text has been outlined", that's it. There's no other errors. I have all the correct fonts and most of the pdf displays correctly. But every few lines or so there's a line or even just a couple of words that have been outlined by illy. This results in the text looking slightly bolder than the surronding text. I could just delete the outlined text and rewrite it, but since i'm updating just the address on about 20 product brochures I find it a massive inconvenience and a huge waste of time.
    Any ideas?

    The OP assked a reasonable question and the internet often hides intent.
    So they did not realize it is hard for those on this side does not know the circumstance on their end withou them defining such condition.
    But I will make a suggestion. It might be worth a try. Tell your superiors there is no way to opeen the file without the text being outline. Don't tell them you can replace the text' just that the only way to open the file without the text being outline is to buy the original app.
    The worse they can tell you is to replace the text
    and best is they might break down and not be so cheap.
    And please don't get angry those people here on the forum who are taking their own time to help you.

  • Inserting hypertext link in a Standard Text ?

    Hi all,
    Is it possible to insert an http link in a standard text.
    What I'm looking for, for example :
    VL02N -> Header Text -> ( I create a new text ) which will contains : 'http://www.google.com'.
    So that, if I click on, it opens IExplorer with the right page.
    Best Regards,
    Erwan.

    Hi Erwan,
    look here - it seems ti be the same problem:
    Re: Program/Report Documentation link to web page
    Andreas

  • "copy and paste text within symbol" bug

    I am sure this has been discussed, but have not found it using search.
    Follow these steps to demonstrate a "Symbol Text" bug (CS5 through CC 2014):
    Create Symbol containing editable text.
    Edit symbol by selecting and copying a portion of text at "Character" level in the Symbol
    Paste as point or paragraph text.
    The result is: ALL the text from the Symbol is pasted into the Point or Paragraph text object, NOT just the portion that was copied.
    This bug has been present in AI at LEAST since CS5 and probably before. I'd sure like to see it fixed.

    Ray,
    I'm using C5 also.
    What I get is the copied text plus all the text in the symbol.
    Peter

  • Linked files and underlined text confusion

    I'm running into some unexplained and strange behaviors in a simple Web page I just put up. The URL is http://www.elliottbaypipeband.com/Chunes/EBPBMusic/2011Music.html
    Problem 1:
    I've linked PDF files to text that describes the tune names. These links work fine. I've also linked "EP3" files to the little note icon that precedes the tune name. These links don't work. The different browsers report the linked file isn't found.
    Problem 2:
    There are four text containers on the page. The first line of text in the first one "Tunes of Glory", is displayed correctly without any underlining. The first line of text in the other three "Concert Music", "Competition Music", and "Legend" are all underlined. Similarly, all of the text in the Legend text container are underlined when viewed in a browser. Only the Comments one should be as it is linked to an email address.
    I can't figure out these problems. Any ideas from the experts?
    Thanks

    I think I have sorted out these problems.
    The EP3 linked file problem was a a file type not explicitly allowed on the Web server I was using. I can fix that.
    I worked-around the odd font underlining by using a subtle shadow setting. Now the page looks like I want it to at lease in Safari. It seems that there are a number of quirks like this in iWeb. That's a little disappointing but certainly not a show stopper and not surprising. Software always has quirks.

Maybe you are looking for