Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

flatten dynamic pdf so fields are not editable

canonpix
Level 2
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
radzmar
Level 10
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);

canonpix
Level 2
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.

radzmar
Level 10
Level 10

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

canonpix
Level 2
Level 2

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

plc-ZRQSlR
Level 1
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?

radzmar
Level 10
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);

katien53020900
Level 1
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!!!