Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

populate form from .net using itextsharp but custom calculation script does not see value in text box

New Here ,
Nov 27, 2017 Nov 27, 2017

I am using .NET C# to populate hidden fields in a PDF form.  I then have written a custom calculation field to concatenate these field values with text to form a dynamic paragraph.

I've temporarily removed the hidden property so that I could troubleshoot and when the PDF form comes up I can see these fields have populated.  However the custom calculation script does not seem to see these values as it only shows the 'hardcoded' text from the script.  To simplify the script, I removed all fields to be concatenated except one.  I then put a default value into the text field that would normally get its value from itextsharp.  I then did a preview and the custom calculated field shows the text that I want it to with the default value from the text field.  I am assuming this means the custom calculation javascript is written correctly.

For a bit of an explanation on the fields:

CustName: is the field that I expect to receive the value from the C# (itextsharp) program

FirstParagraph: is the field that has the custom calculation javascript

I believe that my problem is that the custom calculation field is calculated BEFORE the text field is populated by itextsharp.  I have tried moving the FirstParagraph field to the bottom using the "Set Field Calculation Order".  However, since CustName receives its values from itextsharp  and is not calculated it does not show up in this listing.  I tried making CustName a calculated field by putting a custom calculation script in it.  I then moved FirstParagraph field to be AFTER CustName in the order of calculation.  still nothing appears except the 'hardcoded text'.

Here is my custom Calculation that is associated with the field FirstParagraph:

     var Cust = this.getField("CustName").value;

     event.value ='WHEREAS, the undersigned ' + Cust;

I've also tried just a straightforward assignment:

      event.value = 'WHEREAS, the undersigned ' + this.getField("CustName").value;

I've also tried ".valueAsString" as a method

None of these have retrieved the information that is passed in.  Please keep in mind the first example retrieves the DEFAULT VALUE of the field CustName, if I put one in.

Any help you can offer is appreciated.

TOPICS
Acrobat SDK and JavaScript , Windows
2.5K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Nov 27, 2017 Nov 27, 2017

No field is changed in Acrobat so no calculation is going to take place. Since you're using a third party tool that doesn't process the JavaScript, you probably need to replicate the effect of the JavaScript (and set the calculated result).

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 28, 2017 Nov 28, 2017

thanks for your response.  is there any way to kick off a document level javascript in the PDF form that would then call the associated calculation if i wrapped it in a function?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 28, 2017 Nov 28, 2017

I've wrapped the code for the text field FirstParagraph's calculated field in a function:

function UpdateFirstParagraph()

{

   var Cust = this.getField("CustName").value;

    event.value ='WHEREAS, the undersigned ' + Cust;

}

Then I've added a document level javascript in hopes that it would run the

/*********** belongs to: Document-Level:UpdateFirstParagraph ***********/

function UpdatetParagraphs()

{

   FirstParagraph.UpdateFirstParagraph();

}

still does not update the text field FirstParagraph.

i was under the impression that any Document Level code was run upon form open.

Any suggestions?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 28, 2017 Nov 28, 2017

You must execute the function UpdatetParagraphs.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 28, 2017 Nov 28, 2017

it doesn't automatically run when the form opens?  i was under the impression that document level functions were run when the form opens?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Nov 28, 2017 Nov 28, 2017

Perhaps you could set one of the values, on document open. But the whole thing fails if the PDF is opened in a non-JavaScript viewer, which most PDF files are. Really, you need to make sure the calculations are done when you fill the PDF.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 28, 2017 Nov 28, 2017

thank Test Screen Name.  didn't see your reply before adding my last response.

it appearsto open in acrobat.  i can edit the document that opens with all of the acrobat tools and save it so i would say all of the functionality is there. 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Nov 28, 2017 Nov 28, 2017

1. The code defined in document level scripts together makes a chunk of JavaScript. This is executed when the document opens (in a viewer that supports JavaScript).  Usually this contains a series of function definitions, which are then available throughout the form's lifetime as an open document. It would be quite wrong to run them automatically, because they might need to be run at a special time e.g. when submitting, or to issue an error message. But that chunk of JavaScript can contain anything else including setting variables and calling the functions you have defined, if you want.

2. When writing forms some people don't consider their audience carefully enough, which is why I mention this. For you the form opens in Acrobat. Are you the only user of the form? If so, that's fine. If not, you need to consider what happens to people for example who open the PDF in Chrome, or Outlook, or their iPhone, or whatever. Certainly you cannot in general rely on JavaScript working or form fields being fillable or visible.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 28, 2017 Nov 28, 2017

these forms will be used locally (on our network) by a group of individuals that need them auto populated from a web application that they will be using.   Their machines are defaulted to open PDFs with Adobe Reader.  The web application will be run from Chrome.  The web application enables them to choose forms and data to be populated to the forms.  the user then chooses a "Print" button which kicks off the code that runs the itextsharp and opens the chosen forms.

Given that i have written a function at document level that calls the function in the text field FirstParagraph Custom Calculation, I do not understand why it is not kicking off the function.  Do i have the call written correctly at the document level?

function UpdatetParagraphs()

{

   FirstParagraph.UpdateFirstParagraph();

}

I'm a bit puzzled as why you would not want to run functionality when a form opens.  Especially if the function is going to be updating the form with information?  would you mind explaining your thought process a bit more?

thanks again

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Nov 28, 2017 Nov 28, 2017

Those four lines

function UpdatetParagraphs()

{

   FirstParagraph.UpdateFirstParagraph();

}

define a function named UpdatetParagraphs. That is all that they do. The function now exists. If you want to call it, call it. To see why you might not want a function called automatically consider the function

function FatalError()

{

  app.alert("There has been a serious problem. Please telephone extension 232 immediately") ;

}

Clearly functions must be called only when needed, and most functions are not needed at open time.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 28, 2017 Nov 28, 2017

Given your reasoning for when to call a function, i would say that i am OK with calling the function that i need at Open.

the function that you show in your last reply is the function that i'm assuming should be called when the Form is opened--as it is written without any further code?  That function calls the function that i want run under the custom calculation for the text field CustName.  it does not seem to be calling it so my last question was do i have the call written correctly? ie do i need to preface the function name with the name of the text field? or something else?

<NAME OF TEXT FIELD>.<NAME OF FUNCTION IN THE CUSTOM CALCULATIONS> ? as in

FirstParagraph.UpdateFirstParagraph();

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 28, 2017 Nov 28, 2017
LATEST

Use only: UpdateFirstParagraph();

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines