• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Saving layer states in a document with radio buttons and lots of layers

New Here ,
Oct 26, 2017 Oct 26, 2017

Copy link to clipboard

Copied

Hello,

I am a visual designer with very limited js skills but am wondering if anyone could help me with an interactive PDF I've made in which I want to save whichever layer is open. The layers are set to display as radio buttons are clicked and there are 60 different layers. (I know.)

I found one piece of code just googling on line, which appears to be saving which radio button was selected but not displaying the corresponding layer.

function SetLayer() {     // get the radio button status     var layerName = this.getField("Layer").value;      this.getField("LayerName").value = layerName;      var ocgArray = this.getOCGs();      for (var i=0; i < ocgArray.length; i++)      {         if (layerName == ocgArray.name)               ocgArray.state = true;         else             ocgArray.state = false;     } }  if (this.getField("LayerName") != "") {     SetLayer(); } else {     getActiveLayer(); }  function getActiveLayer() {     for (var i=0; i < ocgArray.length; i++)      {         if (ocgArray.state == true) {             this.getField("LayerName").value = ocgArray.name;             this.getField("Layer").value = ocgArray.name;         }     } } 

Does anyone know what I'm missing or how I could have it save the layer view as well? Here is my file:

https://learning.optum.com/content/ss/4583079e9dec4bd8ad0465ca060ff7cd/LearningDev/anneke/FitnessMap...

TOPICS
Acrobat SDK and JavaScript

Views

486

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Dec 22, 2017 Dec 22, 2017

The script uses two fields that are not on the form.  However, this script only allows one layer to be visible at a time, and your setup is more complex.

My first thought is to use the saved radio button state. Basically to re activate the selected button to cause it's action to run when the document is opened. But this won't work because the Layer State is set on a MouseUp, which can't be forced through JS

The other thing to do is use the "Will Save" event to set the "true" Layer states to "init

...

Votes

Translate

Translate
Community Expert ,
Dec 22, 2017 Dec 22, 2017

Copy link to clipboard

Copied

LATEST

The script uses two fields that are not on the form.  However, this script only allows one layer to be visible at a time, and your setup is more complex.

My first thought is to use the saved radio button state. Basically to re activate the selected button to cause it's action to run when the document is opened. But this won't work because the Layer State is set on a MouseUp, which can't be forced through JS

The other thing to do is use the "Will Save" event to set the "true" Layer states to "initState", which is the initial value of the layer when the PDF is opened.

Add this code to the "Will Save" "Document Action"

var aOCGs = this.getOCGs();

for(var i=0;i<aOCGs.length;i++)

   aOCGs.initState = aOCGs.state;

You'll find the document actions in this tool

Thom Parker - Software Developer at PDFScripting
Use the Acrobat JavaScript Reference early and often

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines