Forum Discussion
Example files: Generating a certificate from Storyline
This example demonstrates how you can take user input and generate a certificate for printing. Any Storyline variable or score can be used to generate the output. The file and file add-ins are both simple and straight forward. This will only work in the Flash based output. This will not work in the iOS output or HTML5.
To replicate this on your end:
1) Modify the story file to your liking.
2) Extract the add-in zip file above (certificate.html and certificateBG.gif)
3) Copy these two files into your published output directory. You'll need to do this each time you publish.
This is a really basic example. You really can do quite a bit with this including adding a print button, extra fields, collecting values from the LMS like the user's first and last name.
** I noticed a bug when playing with this file setup. I initially thought I would be able to include the certificate files as resources to avoid copy / paste surgery after publish. Unfortunately, Storyline mangled the HTML file on publish. Will be submitting this as a bug.
- felicityburkeCommunity Member
Have solved the print problem, was an error with notation.
Hi Felicity! Glad to hear that you figured it out, thanks for updating us!
- HowiePearsonCommunity Member
Steve Flowers said:
Hi Cynthia -
Traditionally, you'd need a server side application to generate a PDF. But there's a way to do that with JavaScript. If I get some time this week I'll post an example.
Did you find a way of doing this Steve? - FredJanssensCommunity Member
Hi Steve,
I would also appreciate your input here. Printing a webpage is just not good enough.
Many thanks,
Fred
- JenniferAnozieCommunity Member
I also would like some help with getting the certificate to work in LMS without server option. Any help appreciated.
- SteveFlowersCommunity Member
I gave a couple of frameworks as well as a PDF native method a spin. One of them didn't work consistently between browsers despite the documentation indicating support. The other worked but I didn't have time to dig into it. I don't recommend the JavaScript frameworks due to the complexity. The PDF method is great but there's a drawback that requires user intervention to turn off the built-in Chrome PDF viewer if it's installed and the user is opening the presentation in Chrome.
The one that didn't work in the latest version on their demo site.
http://parall.ax/products/jspdf
The one that worked.
http://bytescout.com/products/developer/pdfgeneratorsdkjs/index.html
Both of these would require some javascript-fu to make the printable certificate.And I suspect there will be situations where it might not work since browsers all play by their own rules.
The other thing I was looking at was populating a pre-built PDF with fields / variables or fed via a querystring. This works well when it works and lets you be as decorative as you want to be with the certificate.
http://www.halnesbitt.com/pages/pdfqs.php
This works great. Except you need to disable the PDF viewer in Chrome to make it work in chrome://plugins/
Of all of these, I think the simplest and best option is the last option: Using a PDF with dynamic fields updated via querystring.
- SarahNewman1Community Member
Hi Steve,
I realize it's been over 3 years since you posted this and you may not be following this thread anymore, so I'll also send you an inbox message. I just thought it might be useful for other people to see your answer here.
I figured out how to add the javascript to the PDF I built, but I'm not sure it's all set up correctly. The site you referenced doesn't really have instructions on how to use the javascript, other than to explain how to insert it in the Document Javascripts window. What would you do if you have more than one dynamic field that you want to pull data into? How do you get those fields to pull information from the published Storyline course? Do you just have to name the text entry fields using the same naming conventions as the text fields in the PDF?
If you're able to give me some assistance with this, I would really appreciate it!
- JimLeichliterCommunity Member
I also gave a couple of frameworks a spin. I tried FPDF, mPDF, and jsPDF.
The nice thing about jsPDF is it's all done client-side, but if you want HTML5 compatibility without flash, browser support is woeful. They require a flash shim to be able to view/download the pdf for older browsers. This obviously won't work on many iOS devices.
I then had the same idea as you Steve about using URL params to auto-fill an existing PDF form. The problem with this approach that I found was that with the most recent version of Adobe Reader, it will flag documents coming from a different domain as unsafe and will require the end user to allow them to trust the pdf. It will also flag older PDFs with JS inside as unsafe. However, once trusted, the JS inside the PDF will be able to pull in the URL params and do the magic. I didn't want my end users to have to go through that trust process because many of them are afraid of security dialogs.
Then I thought about a server-side solution that would auto-fill a PDF form and many of those solutions required you to create an "acroform" that was version 1.4 or below... and had to be created using a special tool or the full version of Adobe Acrobat Pro (or LiveCycle Designer). Not too many IDs or Content Developers have the full version of Adobe Acrobat or LiveCycle.
So I thought I'd do pure server-side PDF generation using URL parameters passed from a course.
FPDF is a great PHP library for generating server-side certificates and worked well in my tests. But something else caught my eye. mPDF is a derivative of FPDF that will also allow you to convert HTML tags to PDF... with CSS support. This means that if you need to make changes to the certificate (even the background image), all you have to do is edit a simple css file and you're DONE!
Here's the CSS file:
@page { background-image: url("./molcertificate_96dpi.jpg"); background-repeat: no-repeat; background-position: center center; } body{ text-align: center; font-family:Arial, Helvetica, sans-serif; font-size: 22; } #title{ font-size: 44; font-weight: bold; margin-bottom: 50px; padding-top: 2em; } #name{ text-decoration: underline; font-size: 30; font-weight: bold; margin-bottom: 50px; } #hascompleted{ margin-bottom: 50px; } #course{ font-size: 30; font-weight: bold; margin-bottom: 50px; } #date{ }
I'm really loving mPDF because it also supports UTF-8 allowing for PDFs generated in any language.
If you're running PHP, I found this to be the best solution.
Granted a pure client-side solution would be THE ideal, but I found browser support and PDF security to be an issue.
- SteveFlowersCommunity Member
mPDF looks great, Jim. Server side is ideal and would be my personal choice as well.
I had focused on exclusively client-side packaging because I think most folks here won't be looking for a server side solution. Client side solutions are going to have problems. But I wonder how many problems would arise from the PDF w/ Javascript guts. I tried the test above on multiple browsers and platforms. Didn't notice any problems except for Chrome with the internal PDF reader.
- GMcKinzieCommunity Member
Hi G! Your window looks different because you published to Articulate Online and this is the expected behavior.
I'm assuming you thought your window would look similar to this:
There is a workaround if you manually upload your content to Articulate Online as shown in this tutorial. You can enable the setting to allow manual upload, then publish locally prior to upload. You would be able to access the output folder this way.