Forum Academy Marketplace Showcase Pricing Features


Hi Everyone:

I just released a new free plugin “PDF Merger [FREE; no external APIs]”. You can download the plugin here:[free-no-external-apis]-1609526031530x543107610613383200

It supports:
*Unlimited pdf file merging
*Entirely client-side
*No external APIs
*Free always

View the demo:

View the demo in the editor:

If you have any questions, feel free to email [email protected]!


hi @nicholasrbarrow

I am facing this error. Could you tell me what is it exactly ?

Hi @akoziol :

Could you describe how you are using the plugin and possibly send screenshots of your workflow. I can only give general answers based on that screenshot. That appears to be a cloudfront error and not a plugin code error, so I would need to look into it further.

I have a workflow with an API workflow in which I extract page selected by the user from a pdf.
Each page extracted is a one page PDF.
I store all theses pages in the database as list of files.
Then I use your plug-in to merge this list of files.
The error occurs during the step 4

The fun part is, when I upload the file stored in the List of files directly to a multi-Fileuploader and I use your plugin, it is working…


Hi @akoziol :
A couple points to think about.

  • Assuming that “Result of step 2 (Create a new Test…)'s Tampon_page” is a single-page PDF file, then this object would only be one PDF File/Page, not a list. The best way to handle this would be to store all the Tampon_pages in an object (or their own individual objects), then do a search for them, and finally to merge them.
  • If I am wrong in my first bullet point, and “Result of step 2 (Create a new Test…)'s Tampon_page” is in fact a list of PDF Files, then my only other suggestion at this point would be to check your permission settings. See below.

The Error
This error is not being thrown from the plugin; it is being thrown from Bubble (by cloudfront). The run command is executing, but somewhere in cloudfront’s end (not the plugin’s) is throwing the error. If any of the files are private, the plugin may not be able to access them. You may need to adjust your privacy settings in Bubble to allow the plugin to access them.
Hope this helps!

Ok so for next one who gets this error on this plugin or with another plugin:

The plugin PDF Merger [FREE; no external APIs] / action Merge All PDFs using a PDF Document Merger threw the following error:
[email protected]_PDF-Merger–FREE–no-external-APIs–element_action–PDF-Document-Merger-Merge-All-PDFs-using-.js:15:19

The issue was that I hide the plug-in element. Let the element always visible.

I merge a list of pdf that are private. But the result of the merging is not a private file.
What should I do to get the generated file to be private ?

@akoziol there currently is no support for uploading as a private file in the plugin.

Great work @nicholasrbarrow. Is there a way to run this as a backend workflow?

Hi @timzafir :
This plugin brings support for PDF-Lib.js to Bubble. The front-end/client-side version (what this plugin currently is) uses their CDN to load the required code onto your web-page (Bubble + the plugin handle all of this).
To run in the backend, the server would need to use npm. I’ve had a lot of difficulty building back-end plugins in bubble because debugging is so difficult. While PDF-Lib.js does have npm support, we don’t have the time to invest in open-source projects right now to develop and debug a back-end merger… if this is something you urgently need, we can discuss more over email ([email protected]).

@timzafir I stand corrected… converting the existing code doesn’t look that difficult. I hope to push a backend update so you can run this server-side/backend in the next day or two!!

1 Like

Worry not. After a while you have an integrated debugger in your brain, muscle-memory coding structure in your fingers and as we all should, spend much more time on the third-party library code and documentation before declaring the first variable :joy:


Legend, this saves us from the third party (docusign) option. @nicholasrbarrow you are the epitome of what makes the bubble community great!

1 Like

I just pushed v3.0.0… now supporting backend merging (@timzafir by request)!!
Currently, to get this out as soon as possible, there is only a “Backend Merge Two PDFs” option, but more are planned soon.


Also, happy to announce that as of v3.2.0 there is full support for all front-end actions in the back-end!

1 Like

Bravo @nicholasrbarrow! This is greatly appreciated.

When merging two pdf’s on the backend, how do i trigger

“A PDF document merger has finished merging”

@timzafir The problem with backend workflows is that there is no way to trigger an event when they finish, but the good news is, I believe that backend actions do not proceed until they have finished. The best thing to do is create a new workflow, with step 1 being the merge and step 2 being what to do with the merged file. The nice thing about the backend is that everything occurs synchronously/in-order. Below is an example of a backend workflow, but the same should work in the front.

Edit: I should also add that I believe you can do this same thing in a front-end workflow and get the same result… it just takes longer!

Hi @nicholasrbarrow I have been fiddling with this but am having no luck in saving the file.

Does it work on your end?

@timzafir I do have it working… here is an example: Editor | Preview

Please note that backend actions take significantly longer… in my free app (not on a paid plan) for that example, it takes about 20 seconds to do the merging (the plugin is also in demo mode, as well as the page in preview mode, so it should be faster using the regular plugin and not test mode of the Bubble app). Also, more PDFs to merge will mean more time to do the merging.

@nicholasrbarrow sorry to be a pain. I see that you are running the “Backend Merge Two PDFs” action on the front end . I have tried the following on the backend on a dedicated server and am missing the key to this puzzle. Can you see any issues with this workflow on the back end. It is not saving to the user data.