"A symbol definition cannot contain a linked image"


Trying to create a symbol in Illustrator CS6, a pop-up says A symbol definition cannot contain a linked image.

I have two questions:

  1. Why? I mean, what's the motivation for not allowing this? (I'm a programmer, but cannot understand what prevents allowing this)
  2. How can I workaround this? I have to do a collage, so it's very nice to have symbols - saves disk & memory space.
11/24/2012 2:10:00 AM

Accepted Answer

You answered your first question with your second question... to save memory.

Linked raster images can change outside the application. If a linked image were to change, The effort required to update every symbol containing that link could be astronomical. And in many cases would cause so much effort that the application couldn't handle it.

Imagine a linked image in a symbol which has been transformed and distorted 50 times..... it would be incredibly slow to update if the link data changed. Now what if there were 50 symbols like that, each requiring a link update.... hours to update on the fastest system.

To this end Illustrator requires you to embed the raster image rather than link it. This way Illustrator can merely reference the embedded image code for each symbol rather than relying on external data.

11/24/2012 2:17:00 AM

So here is the work around I figured out, that I think I'm going to use:

  1. Take linked image and embed it (using the Links palette fly-out menu).
  2. Create the symbol with the embedded image.
  3. Use the symbol throughout your document.
  4. When it's time to update the embedded file, go to the original linked file and edit that first (in my case, it's a .png file that I edit in Fireworks).
  5. Then go to one of the symbol instances and double click it to update it.
  6. Select the embedded file in the Links palette and select re-link from the fly-out menu. This will cause the image to update.
  7. Then embed the file again by selecting embed from the links fly-out menu.
  8. Press esc to exit Symbol edit mode and all your symbol instances will update.

I know this is a bit of a work-around, but I'm hoping it's worth it for my workflow. If I write a script for this, it'll be even faster.