flatten dynamic pdf so fields are not editable

Avatar

Avatar

canonpix

Avatar

canonpix

canonpix

04-10-2016

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?

Accepted Solutions (0)

Answers (7)

Answers (7)

Avatar

Avatar

radzmar

MVP

Avatar

radzmar

MVP

radzmar
MVP

30-11-2017

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

Avatar

radzmar

MVP

Avatar

radzmar

MVP

radzmar
MVP

17-10-2016

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

Avatar

Avatar

radzmar

MVP

Avatar

radzmar

MVP

radzmar
MVP

05-10-2016

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

Avatar

katien53020900

Avatar

katien53020900

katien53020900

04-12-2017

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!!!

Avatar

Avatar

plc-ZRQSlR

Avatar

plc-ZRQSlR

plc-ZRQSlR

29-11-2017

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

Avatar

canonpix

Avatar

canonpix

canonpix

19-10-2016

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

Avatar

Avatar

canonpix

Avatar

canonpix

canonpix

13-10-2016

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.