Forum Academy Marketplace Showcase Pricing Features

[New Plugin] Free Client-side Word Template / Find-Replace Plugin

Hello All:

I wanted to share a new plugin I’m developing for free (MIT open source). It allows you to place curly brackets around keys in any word document, such as {first_name} and then use the plugin to define replacements.

Super useful for invoicing, quote generation, and any other means of quickly filling out forms for small to large businesses.

I plan on adding support for lists in the future.

I must give full credit to the library developers at Open XML Templating; I merely brought their open-source library to Bubble!

View Plugin: {Client-Side Word Template} Plugin | Bubble
Editor View: Nrb-tester | Bubble Editor
Run Mode Preview: https://nrb-tester.bubbleapps.io/client-side-word-template

As always, I kept it free and open-source! If anyone finds any bugs, needs help, or wants to try and get new features, I’ll try my best to add/fix ASAP: [email protected].

5 Likes

Pretty interesting @nicholasrbarrow !

@elian do you think this could somehow work along your PDF plugin? I understand your plugin works with Word or Google Docs to generate PDFs so I figured there could be a fit here :fire:

I’d love to incorporate the ability to output to PDF. I’m working on possibly coding that into this plugin now. If anyone has suggestions it would speed up the process :slight_smile:

Thanks for the notification @cmarchan !
Indeed my plugin enables to convert docx files into pdf, with the “convert docx to pdf” action (demo : https://docxtopdfplugintest.bubbleapps.io/version-test/convert_docx_to_pdf).
It also enables to fill out docx templates with Bubble data and get a pdf file, but on the server side.

2 Likes

Congrats on this plugin @nicholasrbarrow ! Very useful !

1 Like

Congratulations, excellent initiative!

2 Likes

Looks great! Can’t wait to try it out. :star_struck: massive thanks @nicholasrbarrow

1 Like

Hello, is there a method to load images into the template?

@rhenancmarx currently, the only way for images is if the image is in the template; the plugin currently does not support dynamically inserting images into the template as keys-and-values pairs. I can see if the library supports image insertion via keys-and-values if that’s something you need.

Thank you very much for your reply, the possibility of inserting images would be very welcome. :grinning:

@rhenancmarx So I looked into the image part… unfortunately, the open-source library only includes text-replacement, the image-replacement is a commercial feature (Image module | docxtemplater). I would have to pay for the image module (350€ per year) and then the plugin wouldn’t be free anymore (which, I’m severely opposed to payware). It looks like for the time being, images won’t be supported unfortunately.

1 Like

Hi! is there a way for the link to be clickable in the docx?

Hi @divinamay : not that I know of… the free version of the software that the plugin utilizes is mostly just text replacement, so I doubt it does any type of post-processing to convert urls into hyperlinks.

I keep getting this error, but don’t know what it means.

Bug in custom code Error: Multi error
at new XTTemplateError (webpack://docxtemplater/./es6/errors.js?:24:16)
at throwMultiError (webpack://docxtemplater/./es6/errors.js?:76:13)
at verifyErrors (webpack://docxtemplater/./es6/docxtemplater.js?:511:5)
at Docxtemplater.compile (webpack://docxtemplater/./es6/docxtemplater.js?:345:7)
at new Docxtemplater (webpack://docxtemplater/./es6/docxtemplater.js?:97:12)
at eval (PLUGIN_1625274781670x902686239305760800/-Client-Side-Word-Template–initialize–Template-Holder-.js:44:23)
at xhr.onreadystatechange (webpack://PizZipUtils/./es6/index.js?:81:11)
at root (PLUGIN_1625274781670x902686239305760800/-Client-Side-Word-Template–initialize–Template-Holder-.js:38:17)

I’m trying to use if statements in my doc, in the format described by Docxtemplater’s documentation. Not sure if that could be causing the issue. Thanks!

Hi @willem1 :
I’ve never tested this against if-statements, so I’m not sure if they will work properly. Depending on how advanced your use-case is, the way I achieved if-statements is to let Bubble do the work:

  • Create one template for every special case
  • Use Bubble’s conditional features to determine which template to use