PDF Publishable Certification Checklist

Jul 26, 2023

Hello!

Wondering if there's a way to create a dynamic, scorable checklist that's  exportable to PDF.

We'd like to create what essentially equates to a quiz, with each question being a skill that an employee must successfully demonstrate to achieve a Yes score. Ultimately, this would be used to certify employees and track completion/certification if they achieve a certain score on the assessment (variable = % of Yes scores).

The checklist is long (let's say 100-200 skills), so creating a single slide for each Yes/No question (skill) is unrealistic. Instead, we'd like to create slides for groups of related skills, and then list ~5-25 skills in each block - in a table format.

Here's an example:
Slide #1 - Baking Preparation
1. Clean workspace?  Yes/No
2. Gathers utensils/baking pans?  Yes/No
3. Gathers ingredients?  Yes/No
4. Preheats oven? Yes/No

Slide #2 - Execution
1. Fully reads recipe instructions prior to beginning? Yes/No
2. Prepares ingredients according to recipe (e.g., chopping, sifting, etc.)? Yes/No
3. Maintains a clean and safe workspace? Yes/No
4. Takes precautions to avoid cross-contamination? Yes/No

Has anyone built something like this successfully, with a table layout of skills being assessed and then the Yes/No variables as either radio buttons or checkboxes (with scores assigned to each, for overall percentage/score calculation)?

8 Replies
Steve Gannon

Ideally, you would do this using a survey tool, or your LMS may already have this capability. But if you want to do it within Storyline, I have prepared a .story file using Stephanie's example that demonstrates one way of doing so:

https://360.articulate.com/review/content/e25446f9-892b-4efd-8c04-fcfc6f6434f3/review 

Attached is the .story file and template PDF.

The JavaScript to generate the PDF uses the library documented here:
https://pdf-lib.js.org/docs/api/ 

Review John Cooper's post in this thread for moving variable values to a PDF using that library: https://community.articulate.com/discussions/articulate-storyline/creating-downloadable-pdf-files-in-storyline-an-update-on-earlier-methods 

Unlike some other JavaScript with Storyline, the PDF generation will not work unless you put the published output on the web, such as your LMS or Articulate Review (that is, it won't run when published to your local drive).

The JavaScript executed via the button on the last slide of the .story communicates with a PDF form (created with Adobe Acrobat) with placeholders for variable values. After publishing, you need to put this PDF (attached to this message) alongside story.html. So for example, if you're going to test your project on Articulate Review, use the Publish > Review 360 > "Publish locally for manual upload" option and, after publishing, add the PDF to the zip that was created during the publishing process.

For a checklist with 200+ questions, you'll need to spend a lot of time creating the variables in Storyline, adding the triggers, and adding the lines in the Execute JavaScript trigger. You will also need to spend some time in Acrobat constructing the PDF with the corresponding variable placeholders.

Once you understand the demo .story file and JavaScript, as well as the PDF template, you should find this isn't all that difficult, but it will require a lot of labor if you have a lot of statements in your checklist.

Hope that gets you started!

Steve Gannon

Hi Rachel,

Each radio button set is assigned a unique variable (e.g., "RB01_3" refers to the radio buttons for the third statement in skill set 1). These variables are assigned a value of "0" by default (not selected), "1" if "Yes" is selected, and "2" if "No" is selected. 

Since these are variable values, they are all sent to the LMS automatically. However, depending on your LMS and it's custom reporting capabilities, you may or may not be able to generate a report with these values. 

There are examples in this forum of how to explicitly pass a variable value to the LMS by essentially creating a dummy quiz question with a Results slide added but that would be a lot of work if you have hundreds of Yes/No statements in your checklist.

Walt Hamilton

Does the end user fill this out, is is it something that someone has to observe and complete?

At any rate, doing it in SL seems like a huge amount of unnecessary effort (including training users in how to use it), when (like Steve says) it can be done pretty quickly and easily with Survey Monkey, Google Forms, or even a spreadsheet. I mean, you can drive your fishing boat with an eggbeater if you work hard enough, but there are better tools. 

Yvonne Urra-Bazain

Thank you for taking the time to share this example, Steve!

I have a use case for this. In sections throughout the final PDF output (and the Storyline file), course participants may check a box to indicate "Yes" with the selected state of the box. If the box is left unchecked or in its default/normal state, the assumption is the answer is "No." For example, if a question were, "Which tool(s) do you use?" a participant would select a box only if they used the tool.
_ Scissors
_ Exacto knife
_ Paper cutter

I have assigned two values to the checkbox variables in my Storyline file: 0 (default), if state is Normal, or 1, if the state is Selected.

In the '//Check selected checkboxes in PDF" section of the JavaScript code, is the else section needed? If so, how would I modify the code for this situation? Here's what I have tried without success (else statement removed, where check2a was the JavaScript string name assigned to the Storyline variable name and Box2a is the JavaScript string name assigned to the PDF field name).

if (check2A == 1) {
  Box2a.check();
}

if (check2B == 1) {
  Box2b.check();
}

My version of the JavaScript without the checkboxes and only TextEntry fields prints as expected across multiple slides and PDF output pages. The only thing I need to solve are the checkboxes. I'd appreciate any help with this!

Steve Gannon

Hi Yvonne,

You should not need an 'else' statement in this case.

Be sure you have these two lines in your JavaScript:

const Box2a = form.getCheckBox('Box2a');
const Box2b = form.getCheckBox('Box2b');

Also, be sure there is indeed a checkbox labeled Box2a and and another labeled Box2b in your PDF form. But also be sure you have not accidentally named two fields in the form with the same name.

If you're able to share your JavaScript (the PDF form would be helpful too), I can probably troubleshoot this for you.

Yvonne Urra-Bazain

Hi, Steve!

Thank you for your reply. I was able to get my JavaScript to work for me. I had both lines you mentioned in my code. I went back through and checked for any syntax errors, then simplified my string names and it worked! I'll need to trace backward to see where my exact point of error was, although one error I did correct was a capitalization/case error.

Thank you, again!
Yvonne