flatten dynamic pdf so fields are not editable

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)

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);

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);

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.