Lyndon Armitage Lyndon is a general Developer. He has a keen interest in AI and Games Programming and runs a blog that he periodically updates.

JavaScript in PDF to HTML5 Conversion: The Event Object

1 min read

Previously I mentioned that a key component in understanding JavaScript in PDFs was understanding how events work, in this blog article I will go into a little more depth on that subject.

Within the JavaScript for Acrobat API Reference there is a section describing the event object (it’s actually one of the smaller objects if you have a look at the others) that explains briefly how events work within a PDF. This is one of the most vital objects used within PDFs containing JavaScript as it controls the output and results of each user driven event.

For instance, if the event in question is a Keystroke it runs the code for the Keystroke event, making use of an event object to store information on the event and ultimately, decide what output occurs.

After or during the Keystroke event a call can be made to the Validate events which in turn can follow down to other events including the Calculate and Format events.

If the event is not a Keystroke event we start at the Validate event. This is actually a gross simplification of how events work since there are also many other possible events and the Calculate event can generate additional Validate, Blur and Focus events. But it for now I will focus on Keystroke events since they are, from what I can tell the simplest event that can occur to a form field.

In our latest version of the converter we map the keystroke actions onto the onKeyPress attributes of input objects, taking into account how the events work within PDF files. Which for the most part works correctly as they seem to have a one to one relationship with each other. Originally we tried mapping onto the onKeyDown attribute because of how the browsers implemented key presses differently but eventually we wrote a work around for this issue as onKeyDown had some undesirable properties.

One major thing to consider about the conversion is that Calculate events also occur for all Field objects (that have them) whenever you leave a Field (on a blur) which in turn can generate more Validate and Format events. So we move the code from each Calculate event to a global function within our JavaScript that is then run on each field items onBlur attribute, resulting in similar behaviour to the PDF.

It’s quite a hard subject to explain in writing, so here is an example:

This is the PDF
And this is the HTML

As you can see we have yet to fully implement the formatting for the calculated values but it’s well on it’s way!

Do you have any PDFs that make use of forms and JavaScript that would work a lot better as web pages?

Are you a Developer working with PDF files?

Our developers guide contains a large number of technical posts to help you understand the PDF file Format.

Find out more about our software for Developers

Convert PDF to HTML5 or SVG Convert PDF to HTML5 or SVG
Convert AcroForms and XFA to HTML5Convert AcroForms and XFA to HTML5
Java PDF SDK for working with PDF files Java PDF SDK for working with PDF files
Lyndon Armitage Lyndon is a general Developer. He has a keen interest in AI and Games Programming and runs a blog that he periodically updates.

Dawscon 2020 Software Conference in Pictures

The latest Dawscon software conference took place today at Dawson College, Montreal. Attendance was free and there were 2 tracks with topics including JavaScript,...
Mark Stephens
17 sec read

Leave a Reply

Your email address will not be published. Required fields are marked *

IDRsolutions Ltd 2021. All rights reserved.