Expand my Community achievements bar.

flatten dynamic pdf so fields are not editable

Avatar

Level 2

I've used LiveCycle to create dynamic evaluation forms which are to be filled out by evaluators who only have Adobe Reader. After creating the original dynamic form in LiveCycle, they were opened and re-saved in Adobe Pro DC > Save As Other > Reader Extended PDF > Enable More Tools (includes form fill-in & save) so the entered data can be saved in a completed form.

Is there a way to flatten the dynamic forms so data in fields is not able to be edited once the forms are completed by evaluators so the completed forms can be emailed to other people and not be changed?

7 Replies

Avatar

Level 10

You cannot really flatten an XFA form except you print it as a PDF. But you can lock the form fields trough a script.

function lockFields(oNode) {

     if (oNode.className === "field" || oNode.className === "subform") {

          // Protect all fields

          if (oNode.access != "protected") {

               oNode.access = "protected";

            }

          // Make all buttons invisible

          if (oNode.className === "field" && oNode.ui) {

               if (oNode.ui.oneOfChild.className === "button") {

                    oNode.presence = "invisible";

               }

          }

     }

     for (var i = 0; i < oNode.nodes.length; i += 1) {

         lockFields(oNode.nodes.item(i));

     }

  };

//Call funtion to lock fields

lockFields(xfa.form);

Avatar

Level 2

Thank you...one step closer!

As a newbie (with knowledgeable tech backup, thank goodness) I need to ask :

1) Where do we add the script

2) is it executed on Save

Sure appreciate that you are sharing your knowledge.

Avatar

Level 10

Add a button and paste this script into its click event.

Avatar

Level 2

Many thanks...we'll give this a try!

Avatar

Level 1

Do you happen to know if there's way to hide all the radio buttons similar to how you hid the regular buttons in your script above?

Avatar

Level 10

Just add another expression for checkButtons.

function lockFields(oNode) {

    if (oNode.className === "field" || oNode.className === "subform") {

          // Protect all fields

          if (oNode.access != "protected") {

              oNode.access = "protected";

            }

          // Make all buttons and check buttons invisible

          if (oNode.className === "field" && oNode.ui) {

              if (oNode.ui.oneOfChild.className === "button" || oNode.ui.oneOfChild.className === "checkButton" ) {

                    oNode.presence = "invisible";

              }

          }

    }

    for (var i = 0; i < oNode.nodes.length; i += 1) {

        lockFields(oNode.nodes.item(i));

    }

  };

//Call funtion to lock fields

lockFields(xfa.form);

Avatar

Level 1

This worked great! I thought I had tried the "checkButton" but I think I was just off in my syntax. Thank you for your help!!!