


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?
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);
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.
Views
Replies
Sign in to like this content
Total Likes
Add a button and paste this script into its click event.
Many thanks...we'll give this a try!
Views
Replies
Sign in to like this content
Total Likes
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?
Views
Replies
Sign in to like this content
Total Likes
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);
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!!!
Views
Replies
Sign in to like this content
Total Likes