bubble.io is a no-code plattform where you can build complete apps from scratch. With the Printess plugin you can add document customization as well as PDF production to your bubble app.
You can simple search for “Printess” to find our plugin. Or click on the link below:
Install Printess Bubble Plugin
The Printess plugin exposes a global action
You need to pass the template-name as a parameter. To load unplublished Templates, add
~draft at the end of the name.
Once the user has clicked on the
add-to-basket button, you can add a workflow for this event.
Just connect to the
A Printess template saved Event.
Now you need to create a new
Thing to store the Printess data. We called it
Jobs and added two new fields to it
template-saved event is fired, you can read and store the
thumbnailUrlto a new
thumbnailUrl can be assigned to an image as image-url to display the state-of-work. The
saveToken can be used to order a print ready PDF from the printess API
To produce a PDF we will simple create a new button and
add a new workflow action
Rendering may take some time for large PDFs, so the
Printess Produce action will not return a PDF-Url directly. Instead it returns a
Before you can access the Printess API you need to enter your Service-Token to the
Authorization (shared headers) Field below. Read more about where to find your tokens
Click on Enter your API key
Add the Bearer Keyword!
Always add the keyword Bearer before the Service-Token. It should finally look like this:
As you can spot in the screenshot above we also have pass the
saveToken to the
Produce action. In that basic example we just have used the
saveToken of the last added
As a result the APi call will return the
jobId which we will need to remember to ask Printess if the PDF is ready. So we will create a new action
Set State and create a new custom state on the
Printess A element.
Once the state is created we can now write the
jobId we have received from the Printess API to that state.
Now the tricky part comes. We need to poll the Printess API and ask if our Job was already finished. We will use a generic timer for this and ask every 5 seconds.
We only have to do this as long as we have a valid
jobId in the Printess custom state. So we add a terminate action first. Whenever the
Printess A -
jobId is empty we will terminate the workflow, so no subsequent actions are executed.
Next step is to poll the Printess API. Therefore we create a new
Since we are sure we have a valid
jobId we can pass it to the Printess
GetStatus API call.
The ìsFinalStatus` flag returned by Printess tells us if the PDF is ready or not. So we terminate the workflow if the status is not final. It will automatically run again 5 seconds later.
Now we know that we have reached a final state. But before we handle our PDF we first need to reset the custom state
jobId of our
Printess A element to avoid polling the API again the next time the 5 sec. timer is executed.
Now we can safely read the PDF url. We could either show the PDF to the user to make it available for download or we can write the PDF url to a
In this simple examle we will just open it in the browser.
We select Navigation -> Open an external Website and create a new action.
Now we can assign our first PDF-URL as URL for the page.
You should be aware that the
GetStatus call actually returns an array of PDF’s. That’s because Printess template can return multiple PDFs depending on how they set up. If you only expect a single PDF you are fine just using
:first item's url like in our exampel.
And by the way if you set-up a Printess workflow for your template, your PDF would automtically send to a production workflow just by calling
Have fun creating awesome web-2-print applications with Printess.