Copy link to clipboard
Copied
I have a PDF document with multiple layers. Depending on the stage of the project certain layers need to be turned on or off. For example, once I move from the development stage to the production stage, development will be unchecked and production will be checked for as long as the document remains in that stage. Layer visibility is controlled with this script:
if (event.target.value=="Off")
this.getOCGs()[1].state = false;
else this.getOCGs()[1].state = true;
It works great, but when the document is closed and reopened all layers are reset to their default state: Off. I've tried a ton of variables (including View State, InitState, etc) but can't get the initial visibility to remain on when the file is opened. Any thoughts on how to accomplish this?
Also, there's no such method as setOCGstate...
The correct syntax is:
this.getOCGs()[1].initState = false;
Copy link to clipboard
Copied
You need to set the OCG's initState property, but that can only be done in Acrobat.
Alternatively, you can use a script that saves the current layers visibility to a hidden text field, for example, and then sets their visibility from the data in that field when the file is opened.
Copy link to clipboard
Copied
The global object can also be used to store the layer states.
J-
Copy link to clipboard
Copied
Thank you Try67. I attempted to set the init state using the following script for the same checkbox that controls visibility.
if (event.target.value=="Off")
this.setOCGstate()[1].initstate = false;
else this.setOCGstate()[1].initstate = true;
This isn't working exactly as I want. It isn't consistently retaining the layer visibility each time the document is reopened. It also isn't resetting it once that field is unchecked. What am I doing wrong?
I am interested in you idea about saving the visibility in another field. Any example of how to do that? I wouldn't have ever thought of that, so thanks so much.
Copy link to clipboard
Copied
JS is case-sensitive. The name of this property is initState, not initstate...
Copy link to clipboard
Copied
Also, there's no such method as setOCGstate...
The correct syntax is:
this.getOCGs()[1].initState = false;
Copy link to clipboard
Copied
That worked! Thanks so much for the help try67.
Find more inspiration, events, and resources on the new Adobe Community
Explore Now