Using hyperlink to toggle layer visibility?

Okay, I've got a few threads going in other forums on this, and I'm getting a little frustrated with retyping it all, so I'm going to try to be brief... if you have any questions on what I'm trying to do, sorry for being vague, just ask and I'll try to clarify (I know, I hate posts that don't give enough info to work from).
OKay... I work with surveillance systems, and for one customer, I'm taking existing PDFs they have of site floorplans, loading them into Ilustrator CS5, adding icons and text showing camera locations and fields-of-view, then exporting to PDF, loading that into Acrobat Pro X, and adding a hyperlink to each camera icon that when clicked, will open a window with a still capture from that camera, so they can see what the view is "supposed" to look like.
This works fairly well, and the client is happy with it... there's just one annoyance: every click produces a dialog box warning about opening an external program, and in newer versions of Reader, there's no "Don't display this again" checkbox.  A way around this would be great, but I had a better idea:
I'm already creating layers in Illustrator: one for the floor plan, a second for the camera icons, a third for the text, and a fourth blank one so I can "swap out" the underlying floor/camera info without losing the hyperlinks (anywhere from 16 to 30, depending on the site).
I had the idea that what I could do, is add a separate layer for each camera's sample image, which would allow me to add the image directly to the document, and have it just appear over the floor plan, rather than loading in a separate app.  Then I could have the image layers start out invisible, and toggle the visibility by clicking the camera icon.
So I found this article that describes changing layer visibility from a hyperlink: http://help.adobe.com/en_US/Acrobat/9.0/Professional/WS58a04a822e3e50102bd615109794195ff-7 c5b.w.html
It... sort of works.  I can create a link that will show a hidden layer... but not re-hide it.  I created a separate link that would hide it... but not show it.  Not really suitable - I'd like to have the same link toggle the layer on/off (heck, it would pretty much have to, or you KNOW the end users will get confused). 
And the whole process seems a little clunky, at least from the above instructions.  Is there a better way to do this in Acrobat X?  Maybe a way to do it all within Illustrator?  Hope I'm clear enough about what I'm trying to achieve.
If all else fails, is there a way to get rid of the $&^@*#!!! external program warning popup??
Thanks, all!

Forget that help page example, it's only practicable if you're setting a very simple pattern of layers.
Instead, you should look at the JavaScript commands to control the visibility of individual layers, referencing them by their stacking order or name.
For example this snippet will turn on the layer called "camera1":
var ocgArray = this.getOCGs();
for (var i=0; i < ocgArray.length; i++) {
  if (ocgArray[i].name=="camera1") ocgArray[i].state = true;
You can easily extend this idea by creating a document-level function in the PDF, and calling that function from your links. For example if all your camera layers are named "camera1","camera2", etc. and you have a doc-level function like this:
function showCamLayer(theName) {
  var ocgArray = this.getOCGs();
  for (var i=0; i < ocgArray.length; i++) {
    if (ocgArray[i].name.substr(0,6) == "camera") ocgArray[i].state = false;
    if (ocgArray[i].name == theName) ocgArray[i].state = true;
then you can set your links to "run a JavaScript" and enter a single-line command such as showCamLayer("camera4")

Similar Messages

  • Toggle layer visibility

    Hello,
    I need one keyboard shortcut that toggles visibility of one of layers.
    I paint and need to toggle on and off one layer below (layer with a reference picture, not one i paint on). with a shortcut painting process will be not break as with case click at icon.
    tried to make toggle layer visibility with actions unfortunately with no success.
    it is possibility to toggle active layer visibility by add shortcut in keyboard shortcuts preferences  but here it going not about active layer.
    I have no experience with scripting.
    thank you!

    For this to work as written there can only be one layer in the document named 'Ref' otherwise it will toggle the top most layer with that name.
    var targetID = getLayerIDByName('Ref');
    if(undefined != targetID){
        if(getLayerVisibilityByID( targetID ) ){
            hideByName('Ref');
        }else{
            showByName('Ref');
    function getLayerIDByName(name) {
        try{
        var ref = new ActionReference();
        ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID( "LyrI" ));
        ref.putName( charIDToTypeID( "Lyr " ), name );
        return executeActionGet(ref).getInteger(charIDToTypeID( "LyrI" ));
        }catch(e){}
    function getLayerVisibilityByID( id ) {
        var ref = new ActionReference();
        ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID( "Vsbl" ));
        ref.putIdentifier( charIDToTypeID( "Lyr " ), id );
        return executeActionGet(ref).getBoolean(charIDToTypeID( "Vsbl" ));
    function hideByName(name) {
        var desc = new ActionDescriptor();
            var list = new ActionList();
                var ref = new ActionReference();
                ref.putName( charIDToTypeID('Lyr '), name );
            list.putReference( ref );
        desc.putList( charIDToTypeID('null'), list );
        executeAction( charIDToTypeID('Hd  '), desc, DialogModes.NO );
    function showByName(name) {
        var desc = new ActionDescriptor();
            var list = new ActionList();
                var ref = new ActionReference();
                ref.putName( charIDToTypeID('Lyr '), name );
            list.putReference( ref );
        desc.putList( charIDToTypeID('null'), list );
        executeAction( charIDToTypeID('Shw '), desc, DialogModes.NO );

  • Widget for toggling layer visibility

    It would be very useful to have widget for creating a button which toggles on/off visibility of some Muse layer(s) on the page.
    Possible application: show/hide some notes/help on the page etc.
    Thanks.

    What about a toggle button for showing/hiding accessibility features on the page? Alt text, meta titles, descriptions, changes to high contrast, enlarges text, etc...

  • Win shortcut for toggling Layer visibility

    Alt+click on Eye Icon turns Layers on/off.  But if you show one layer to edit it, then do the reverse, it doesn't turn all hidden Layers back on again.   Am I missing something or is there a better way to do this?  Some of my documents contain a LOT of layers.
    Thanks,
    Nancy O.

    Glad there was something out there, Nancy. I basically fidgeted around Google because I needed to know as well.
    R_Kelly got me curious about Morris' site and I found a script that allows me to bring up recent files, checkmark the ones I want and open them all in one click. "Open Recent Files". Adobe Photoshop Scripts | Trevor Morris Photographics
    So a thanks and a Like to R_Kelly!

  • Saving layer visibility as views does not work - CS5 for Windows

    I've read about it multiple places, even watched a video where it supposedly works. But when I toggle layer visibility and save as a new view, it doesn't seem to work.
    Here's the video: http://layersmagazine.com/illustrator-different-views.html
    Any ideas?

    Layer Visibility Variables – A short introduction
    1. Open a new document and name Layer 1 "Cyan"
    2. Add three main layers and name them "Magenta", "Yellow" and "Black"
    3. On each layer draw a shape and colour it according to the Layer's name.
    4. Save the file as "My_first_Variables.ai"
    5. Target Layer "Cyan" (click the circle at the right hand of the Layer's name)
    6. At the bottom of the Variables Palette click the Make Visibility Dynamic button
    Now you've created your first Layers Visibility Variable. Continue with
    7. Target Layer "Magenta" and click the Make Visibility Dynamic button in the Variables Palette
    8. Target Layer "Yellow" and click the Make Visibility Dynamic button in the Variables Palette
    9. Target Layer "Black" and click the Make Visibility Dynamic button in the Variables Palette
    Done. You have created four Layers Visibility Variables. The next step is to define the Data Sets:
    1. Layers Palette: Show Layer "Cyan" and hide all other layers
    2. Variables Palette: Click the Capture Data Set button (the camera icon)
    3. Layers Palette: Show Layer "Magenta" and hide all other layers. Now in the Variables Palette the first Data Set becomes italic indicating that you can create an new Data Set. So click the Capture Data Set button to define Data Set 2.
    4. Layers Palette: Show Layer "Yellow" and hide all other layers
    5. Variables Palette: Click the Capture Data Set button to create Data Set 3
    6. Show Layer "Black" and hide all other layers. Click the Capture Data Set button to create Data Set 4
    7. Show all layers and click the Capture Data Set button to create Data Set 5
    Done. You have created five Data Sets. Just play around by toggling them in the Variables Palette (Next/Previous Data Set button or via Popup menu/Flyout menu) and see one feature among other things: The Variables Palette as a remote control of the Layers Palette. If you like, rename the Data Sets according to the Layers names for instance.
    Now it's time to create some simple Save/Export actions in order to Batch save/export Layers as single files. For example:
    Export as PSD
    1. Open any file
    2. Actions Palette: Create new action and name it "Export Layers as PSD"
    3. File > Export as PSD. Choose any destination folder, the desired options in the Photoshop Options dialog and hit Enter
    4. Click the Stop Recording button in the Actions Palette and disable the Show dialog icon (on the left hand of the action's name)
    Save as PDF
    1. Open any file
    2. Actions Palette: Create new action and name it "Save Layers as PDF"
    3. File > Save as PDF. Choose any destination folder, the desired options in the PDF Options dialog and hit Enter
    4. Click the Stop Recording button in the Actions Palette and disable the Show dialog icon (on the left hand of the action's name)
    Now start the Batch command:
    1. Switch to the original "My_first_Variables.ai"
    2. Actions Palette Flyout menu: Batch
    3. In the Play Area choose the Export Layers as PSD action
    4. Choose Data Sets as the source
    5. In the Destination Area enable the Override Action Export Commands option and choose any destination folder
    6. Choose an option for the File name and hit Enter to start the Batch
    Done. All four Layers plus the fifth Data Set have been exported as single Photoshop files. Repeat the Batch with the Save Layers as PDF action (don't forget to enable the Override Action Save Commands) and, of course, create your own actions, experiment with other file formats, figure out some harmless bugs especially in conjunction with the PDF compatible AI format when placing in InDesign.

  • Newbie q: rollover using layer visibility?

    Forgive the newbie question, I'm new to Fireworks (having used instead Photoshop and Golive since Golive 1.0).
    I have a layered Photoshop document I've brought into Fireworks (and the various layers have been organised into layer groups). I have series of bitmap graphic objects that I want the user to point at, and click on. What I want is to have a different bitmap graphic show when the user rolls over it (the graphics are gray text: point at a word and it turns white)
    The page, as it stands, has a single base layer where the bitmap items are gray and then, on top of this base layer, an individual layer for each graphic, but white this time (in register, of course, over their non-rolled over counterparts in the base layer). I've drawn slices over each text item, and I was hoping that I could use states (a new concept for me), along with layer visibility, to have a nice rollover behaviour.
    I had thought I could make a new state, then turn on visibility of a layer, and use that new state as the basis of a Swap Image rollover behaviour (or, when that didn't work, a Simple rollover behaviour). I'm not having any success, any layer that I make visible in one state, then becomes visible in the other state.
    The way I used to do this was to export two graphics from Photoshop for a rollover (one for mouseout, one for mousein), and to build the rollover behaviour that way. I'm pretty sure that Fireworks will do this too, but I'm really hoping that it's become more efficient than that, as I was building rollovers this way quite a long time ago! (anyone remember the Apple Media Tool?).
    I've read quite a bit about States, Layers and Pages in several tutorial websites (Adobe and others), and I'm afraid that I'm still not straight on how to achieve what I'm looking for. Can anyone help me out?
    Cheers!
    Chas

    That's great!
    Been using photoshop for a while and never noticed that Fill... menu item!
    Brilliantly simple and simply brilliant. There's a few actions I'll need to amend now.
    Thanks you so much for the speedy response

  • "Toggle mask visibility" shortcut?

    Is there a keyboard shortcut for "Toggle mask visibility"? I can do this by ALT-clicking on the layer's mask, but I would like to assign a shortcut for this on a button on my Wacom Intuos 4 drawing tablet. So far I haven't found a menu shortcut for it, nor have I found a way to add my own (Edit-Keyboard shortcuts) as the function isn't listed there.

    There are some big difference between  (Alt+Click) on the Layer's Layer Mask Icon in the Layer palette. There does not have to be a current target the cursor position sets the target. And (Alt-Click) is a toggle.   An Action step "Select mask channel is quite different.  If nothing is targeted. If the top layer has a layer mask it will become the Photoshop target and be displayed grayscale in the image window.  If there is a currently targeted layer that has a layer mask that layer's layer mask will become the Photoshop target and it will be displayed grayscale in the image window. For any other document state that step will fail with an error message like its  not a currently available option.  The step is also not a toggle.
    To tell the truth I do understand why the op ask the question.  For the toggle requires a mouse position and a click.  With their Wacom Intuos4 they can set a express key to Alt.  The tablet may even be come configured the way. When they press the express and click the pen it will be a toggled.  In Any case there needs to be a mouse position and a click to set the target weather they use the (Alt-Click) toggle or they use an action to display a Layer mask in the image window grayscale.  Something has to target a layer with a layer mask.  In an action that state may exist as a result of prior steps.  An action with "Select mask channel"  as the first step can easily fail for the current Photoshop target may not a the requited layer mask.

  • Need scripting help to toggle OCG visibility

    I need the ability to toggle the visibility of OCGs in a PDF file. Does anyone have a script example of how to do it? I would like to use a button to toggle between visible or hidden. Below is a fence diagram which my boss would like me to make so that the sections can be hidden to reveal the section behind. I know I can do this from the Layers panel but he wants it to be by a button.

    Thanks, George,
    I looked at the page you referenced. I'm still not sure how one would go about writing the Javascript. I'm planning on having a small version of the diagram in outline form as below. For each circle I need to have an if/else statement which would say something like If visibility of layer x is true; set it to false; else if visibility of layer x is false; set it to true so that different configuration could be revealed by clicking on the numbers.
    Any help would be greatly appreciated.

  • Save Layer Visibility Settings

    So, I have an Illustrator CS5 file with 30 different layers of artwork that I've been using to create PDF city maps.  Is there a way that I can save layer visibility settings for each map? i.e. For one map, I want these 8 layers to be visible, for another, I want 6 other layers to be visible (and so on).
    I'm also using sublayers but I'm just wondering if there's a script or something that will remember certain layer visibility settings. Artboards?
    Thanks

    You might try using View>New View. It will entail going through and setting each map as you would like by turning on and off the layers you want and then save that view with a distinctive name. Then you can use the saved views to act as Layer Comps.

  • Save layer visibility states into new PDF

    Hi there,
    I have a document that is a floorplan of a building. I have created color layers to highlight specific rooms (e.g. Office 1, Office 2, Women's/Men's room, Storage room, etc.). I would like to save the PDF (overwrite or as a new PDF) with certain layers turned on so that the next time it is opened (by me or a client), the highlighted rooms are still showing. I found a somewhat convoluted way of doing this in Acrobat using Bookmarks and tying a "Set layer visibility" Action to it, but I am not sure how to go about doing it in Reader. Or should I look into creating a button or JavaScript in Acrobat so that it can complete the same tasks in Reader?
    Thank you for your help,
    Serge

    You might try using View>New View. It will entail going through and setting each map as you would like by turning on and off the layers you want and then save that view with a distinctive name. Then you can use the saved views to act as Layer Comps.

  • Layer Visibility Javascript

    Hi,
    I am working on a model of a dovetailed drawer. It is a simple model, but it must be made to show different design options - to be able to switch them back and forth.
    I have tried to use Daniel Beardsley's "Build Your Own Car Prototype" as a template for my own presentation. All seemed to go fairly smoothly until it came time to swap the Layer Visibility code around to my own needs.
    I want the user to be able to choose between three different deisgn options and so I put each mesh on a separate layer. However, I do not get the effect I am seeking. The console returns:
    TypeError: context3D.LayerManager has no properties
    2:AcroForm:Button2:Annot5:MouseUp:Action1
    How can I set this up correctly?
    - David

    Thank you very much, Daniel, for your further input.
    I have changed the document as you suggested, however it did not work for me. Perhaps I omitted something vital.
    Looking over the layers.js carefully I see that at the top a number of methods are named in the Layer Object Constructor, and that at the bottom a number of functions are offered as options for the user of the script. It would seem to me that the functions use these methods to make changes in the layers of the 3D object via its source code.
    Considering the above, it seems best to me that I use the functions offered and then define the variable and its properties as you suggest. Editing Layers.js like this:
    // The following functions can be called by any PDF document
    // that includes this file as part of its 3D Annotation JavaScript.
    // the rest of the code in this file (above) is private and can only
    // be accessed via the layersManager.
    var layersManager = new LayersManagerObject(4);
    function addPartToLayer( partName, layerIndex )
    layersManager.addPartToLayer( partName, layerIndex );
    layersManager.addPartToLayer( "Bottom", 0 );
    layersManager.addPartToLayer( "Straight01", 1 );
    layersManager.addPartToLayer( "DeepU02", 2 );
    layersManager.addPartToLayer( "Crescent03", 3 );
    function displayLayer( layerIndex )
    layersManager.displayLayer( layerIndex );
    layersManager.displayLayer( 0 );
    layersManager.displayLayer( 1 );
    layersManager.displayLayer( 2 );
    layersManager.displayLayer( 3 );
    Then set up the button to "displayLayer":
    var context3D = getAnnots3D(0)[0].context3D;
    context3D.layersManager.displayLayer( 1 );
    Unfortunately this does not seem to work either, but instead returns an error that "function is not a function" . . . :(
    - David

  • Layer Visibility Overrides

    I'm having an issue with InDesign's Layer Visibility Options when importing a PSD file. I use the layer visibility option upon import of the PSD and shut off the layers I do not want showing. But then if I edit the PSD and add an additional layer, the file updates in InDesign and turns on every single layer again. Is there a way around this? It makes the layer options kind of useless to me.

    When I import the PSD into InDesign CS3, I make sure it says to preserve the layer overrides, but if I end up adding a new layer to the PSD, when it updates in InDesign the layer override goes haywire and shows all the layers.

  • Keeping layer visibility overrides in CS2

    Hi,
    I apologize if this has been answered before - did a search but couldn't find what I was looking for.
    When using CS4 (6.0.3), I have no problem setting my "object layer option overrides" on a pdf file inside Indesign and having them stick when the pdf is updated.
    The problem comes when I have to use Indesign CS2 on projects.  When setting the over rides everything looks fine but when I use illustrator to make some changes to the pdf and refresh the link in Indesign, all the layers are shown and the "keep layer visibility over rides" does not do what it is supposed to do.  I have it set to only show 2 of 3 layers and the smallest change to the pdf file and a subsequent update to the link will always reset all the layers to show.  Is there a fix for this?
    Thanks,
    Rob

    From what I can tell, Illustrator CS2 does not export usable layer info. So apparently they didn't test if layer overrides would work correctly.
    It is kind of interesting that an Illustrator CS3/4 file has usable layer info in InDesign CS2, but you're correct that the layer overrides seem broken by any update to the file...

  • What is the best image characteristic for use with an environment layer?

    CS6, Win7, HPz820
    I have watched several tutorials on the use of the environment layer and each has a nifty experience with the image the imported.
    When I do it, it looks like this without the Environment layer effect attached:
    And this way then I apply the environment layer:
    Is there a way to select the image so it will maximize the quality of the image when the effect is applied. I tried  a stitched image of several photos done in PS, with a better outcome but still a lot of distortion.

    As Mylenium says, the environment layer's purpose is to provide reflections and such for 3D layers in a scene. The distortion that you're referring to is because the layer is being formed into a spherical shell surrounding the 3D scene so that reflections can come from any direction.
    If you want a layer to serve as both an environment layer and as a visible layer, you'd use two copies of the layer, with one set as an environment layer to appear in reflections only.

  • Toggling layer visibilty

    I'm designing a website in DWMX which showcases tourist
    locations using 360 degree QTVR panoramas
    lookaroundcornwall.com.
    I want to add alternate language versions to the site. One
    way to do this would be to duplicate the site for each language and
    direct the viewer to the appropriate site given their language
    selection. This strikes me a a messy and labour-intensive way of
    doing it and I'd rather just include a separate layer for each
    language version.
    To do this, I'd need to have the selected language layer
    display and hide any other language layers on the basis of a
    language selection made once. I've used show/hide layers and
    Projectseven's
    autolayers to do this on individual pages in response to a
    mouseover event e.g to create a rollover menu, but this is more
    involved. I'm no code jockey, but I can see that I'll need to set
    some kind of global variable when the language selection is made
    and have the relevant layer visibility set when the page loads
    according to it's value.
    Can anyone give me an idea of how to go about this?
    Ken

    Technically it should be
    ..locked ^= true
    because the property 'locked' is a Boolean, not a number. It does work because Javascript internally changes the numbers 0 and Not-0 to boolean false and true (which may or may not be interesting to know, anyway).
    The expression a ^= b is shorthand for a = a ^ b. All of the simple math and logical functions can be written that way:
    a = a - b -> a -= b
    a *= b -> a = a*b
    a &= b -> a = a & b
    which may seem just to be a programmers' affection at first, but there are actual advantages to it. For example, not only would you have to write out this in full:
    app.documents.item(0).layers.itemByName("Layer 1").locked = app.documents.item(0).layers.itemByName("Layer 1").locked ^ true;
    but Javascript would have to parse it in its entirety as well. With the singular expression, the left hand part (the a above) is only evaluated once.
    The ^ command is a simple Exclusive-Or (a.k.a. XOR), that is one or the other, not neither nor both. If ("Layer 1").locked = false, then
    ("Layer 1").locked (new) = ("Layer 1").locked=false XOR true
    -- the left value (a) is false, the right value (b) is true, so in this case the result is "true", because it is 'true' that 'false XOR true' is "one OR the other". If the layer was locked, it would be
    ("Layer 1").locked(new) = ("Layer 1").locked=true XOR true
    and the expression "true XOR true" equals false because then it is NOT "one OR the other".

Maybe you are looking for