Protect your intellectual property! Watermark PDF for WooCommerce allows WooCommerce site administrators to apply custom watermarks to PDFs upon sale.
Watermark PDF is a plugin that adds a watermark to every page of your sold PDF file(s). The watermark is customizable with font face, font color, font size, placement, and text. Not only that, but since the watermark is added when the download button is clicked (either on the customer’s order confirmation page or email), the watermark can include customer-specific data such as the customer’s first name, last name, and email. Your watermark is highly customizable and manipulatable, practically magic!
Upon WooCommerce purchase download link, this plugin uses the open source TCPDI and TCPDF libraries to customize your PDF. This process isn’t fool-proof, but works well in many cases. You may encounter problems if your PDF is malformed (bad PDF syntax), encrypted, web-optimized, linearized, or if your server cannot handle the memory load of PDF processing.
Please note you must have WooCommerce plugin installed and activated for this plugin to work. This plugin watermarks WooCommerce PDF products when downloaded.
If have a WordPress site and need to watermark PDFs, but do not have WooCommerce, check out WP TCPDF Bridge.
- Watermark only designated PDF downloads (as specified by you), or all PDF downloads from your site
- Files do not need to be in a specific directory
- Super customizable placement: watermark can be moved all over the page, allowing for different paper sizes (such as letter, A4, legal, etc)
- Watermark is applied to all pages of every PDF purchased
- Watermarks upon click of either the customer’s order confirmation page link, email order confirmation link, or My Account page download links
- Dynamic customer data inputs (customer first name, last name, email, order paid date, and phone)
- Choice of font face, color, size and placement (horizontal line of text anywhere on the page).
The free version works fine for many people, but Watermark PDF for WooCommerce Premium offers helpful extra features in addition to free features:
- Optionally password protect and/or set PDF permissions (copy, annotate, or modify, etc) while encrypting PDFs
- Keep original file name
- Begin watermark on selected page of PDF document (to avoid watermarking a cover page, for example), and/or select end page
- Watermark every page, odd pages, or even pages
- Watermark all PDF files with same settings OR set individual watermarks/passwords per product or even per product variation!
- Additional, rotatable watermark location – two watermark locations on one page!
- Additional text formatting options, such as font color and style (bold, italics)
- Semi-opaque (transparent) watermarks
- RTL (right to left) watermarking
- Use of some HTML tags to style your output, including text-align CSS styling (right, center, left is default), links (<a>), bold (<strong>), italic (<em>)…
- Line-wrapping, forced breaks with <p> and <br /> tags
- Preserves external embedded PDF links despite watermarking; internal links are not preserved (research “WooStamper” for this feature)
- AJAX font uploader – use your own font for stamping. Also, hooks to further customize font use
- Additional dynamic customer data input (business name, address, order number, product name, quantity of product), hooks for adding even more
- Filter hooks to add 1D and 2D barcodes (including QR codes)
- Test watermark and/or manually watermark a file on the fly, from the admin panel
Check out the full-featured version of this plugin! WaterMark PDF is the only watermarker for WordPress which includes necessary libraries (so you don’t have to ask your host to load them), is compatible with PHP 7, and watermarks ALL versions of PDFs (not just older versions).
- WordPress 4.9 or newer
- WooCommerce plugin version 4.0 and newer, and PDF products
- PHP version 7.2 or newer. WaterWoo works with PHP 8.1. The fresher, the better!
- If you are selling large files or have high sales traffic, you may need to upgrade your hosting account. Do at least set your PHP memory limit high.
To install plugin
- Upload the entire “waterwoo-pdf” folder to the “/wp-content/plugins/” directory.
- Activate the plugin through the “Plugins” menu in WordPress.
- Visit WooCommerce->Settings->Watermark tab to set your plugin preferences.
- Please test your watermarking by making mock purchases before going live to make sure it works and looks great!
- Note: for this to work you might need to have pretty URLs enabled from the WP settings. Otherwise a 404 error will be thrown.
To remove plugin:
- Deactivate plugin through the ‘Plugins’ menu in WordPress
- Delete plugin through the ‘Plugins’ menu in WordPress
Something is wrong
- Is WooCommerce installed, and do you have a PDF product in your shop to watermark?
- Have you checked the box at the top of your settings page (Woocommerce -> Settings -> Watermark) so that watermarking is enabled?
- Have you entered your PDF file names correctly in the second field if you’ve entered any at all?
- Is your Y fine-tuning adjustment off the page? Read more below under “Why does the watermark go off the page, create blank pages?”.
- Check your WP debug logs (link to instructions below). If logs suggest your PDF is “goofy” or “template does not exist,” try using Apple Preview application to resave your PDF by clicking “Export as PDF” in the menu. Preview might fix bad PDF syntax and allow your PDF to be processed for watermarking.
- It may also help to increase your PHP time limit and memory limits if they are set low. Server limitations can stop this plugin from functioning.
Further things to try:
- Make sure your WooCommerce downloads work WITHOUT WaterWoo activated, to narrow the problem.
- Try watermarking a different PDF (one you didn’t create). If your PDF has goofy syntax (and many do – correct PDF syntax is “optional” for some PDF builders), WaterWoo will not be able to read it. Look into using WooStamper instead
- Read through the support forum. Tip: it has a search feature! Your answer is probably there by now since this plugin has been around a long time.
Please do get in touch with your issues via the WordPress.org support forum before leaving negative feedback about this free plugin.
If requesting help using the WordPress.org support forum, please state which versions WordPress/WooCommerce/WaterMark PDF you are using, and what error messages if any you are seeing. You will find more detailed error messaging if you turn on WordPress debugging. Screenshots and clear descriptions of the steps it takes to reproduce your problem are also very helpful. Please also make your support request TITLE descriptive. If the answer to your question can be found on this page, you might be waiting a while to hear from me, as I must prioritize support requests. Thanks for understanding.
Do not use the WordPress.org support forum for help with the Premium (paid) version of WaterMark PDF – that is against WordPress.org rules.
Where do I change watermark settings?
You can find the WaterMark PDF settings page by clicking on the “settings” link under the Watermark PDF for WooCommerce plugin title on your WordPress plugins panel, or by navigating to the WooCommerce->Settings->Watermark tab.
My watermark isn’t English
Select the “Deja Vu,” “Furat,” or “M Sung” font in the plugin settings panel if your language uses accent characters and find out if one supports characters in your language.
A primary reason watermarks do not show up is when the watermark contains special characters but a font which doesn’t support those characters is in use. If none of the included fonts are subsetted for your language characters, you will need to programmatically add fonts yourself or look into purchasing the Premium version of this plugin, which supports font uploads.
How do I test my watermark?
Maybe set your PDF to $0 (free) and “Privately Published”. Or maybe create a coupon in your Woocommerce shop to allow 100% free purchases. Don’t share this coupon code with anyone! Test your watermark by purchasing PDFs from your shop using the coupon. It’s a bit more tedious. If you want an easier go of it (on-the-fly testing), purchase the Premium version of this plugin.
Why does the watermark go off the page, create blank pages?
Your watermark text string is too big or long for the page, and goes off it! Try decreasing font size or using the Y fine tuners to move the watermark back onto the page. Try lowering your “y-axis” value. This number corresponds to how many millimeters you want the watermark moved down the page. For example, if your PDF page is 11 inches tall, your Y-axis setting should be a deal less than 279.4mm in order for a watermark to show. The built-in adjustments on the settings page ultimately allow for watermarking on all document sizes. You may need to edit your watermark if it is too verbose.
You can use a negative integer value for your Y-tuner and measure up from the bottom of the page. This is especially helpful if your PDF has variable sized pages.
Where do the watermarked files go?
They are generated with a unique name and stored in the same folder as your original WordPress/Woo product media upload (usually wp-content/uploads/year/month/file). The unique name includes the order number and a time stamp. If your end user complains of not being able to access their custom PDF for some reason (most often after their max number of downloads is exceeded), you can find it in that folder, right alongside your original.
However, if you are using Woo FORCED downloads, the plugin attempts to delete the watermarked files after being delivered. If you don’t like that behavior, you can change it with the ‘wwpdf_do_cleanup’ filter hook (set it to FALSE).
Will Watermark PDF for WooCommerce watermark images?
Watermark PDF for WooCommerce is intended to watermark PDF (.pdf) files. If you are specifically looking to watermark image files (.jpg, .jpeg, .gif, .png, .etc), you may want to look into a plugin such as Image Watermark.
Does this work for ePub/Mobi files
No, sorry. This plugin is just for PDF files.
The plugin seems to break my PDF
Watermark PDF for WooCommerce is a plugin which bridges WooCommerce and the open-source PDF reading TCPDI and PDF writing TCPDF library. WaterMark PDF functions by parsing/reading your PDF into memory the best it can, then adding a watermark to the PDF syntax and outputting a revised file. Between the reading and output, certain features may be lost and other features (interactive PDF elements like internal links and fillable forms) will be lost. This is a limitation of a third-party library and the wild-west nature of PDF syntax, and not the fault of WaterWoo. If you are serious about watermarking and/or encrypting complex PDF files, consider purchasing WooStamper. Ultimately, Watermark PDF for WooCommerce is best for simple, smaller-sized PDFs.
Is there a fallback in case watermarking fails?
Yes, you can serve the file untouched if watermarking fails, and avoid any error messages, by using the following filter code in your (child) theme functions.php file:
add_filter( 'wwpdf_serve_unwatermarked_file', '__return_true' );
If you do not know how to edit your functions.php file, you can use the Code Snippets plugin to easily add this code to your WP site frontend.
Contributors & Developers
“WaterMark PDF for WooCommerce – Stamp PDFs with Customer Data” is open source software. The following people have contributed to this plugin.Contributors
“WaterMark PDF for WooCommerce – Stamp PDFs with Customer Data” has been translated into 1 locale. Thank you to the translators for their contributions.
Translate “WaterMark PDF for WooCommerce – Stamp PDFs with Customer Data” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
3.2 – 17 March 2023
- Update TCPDF to version 6.6.2 with namespacing
- Move several TCPDF pdf setup functions outside page loop
- Testing with WC v7.5
3.1.4 – 20 February 2023
- Testing with WC v7.4
3.1.3 – 3 November 2022
- Testing with WC v7.0 & WP 6.1
- Update TCPDF
- Remove large status.txt file from TCPDF installation
3.1.2 – 17 June 2022
- Testing with WC version 6.6
- Tweak – set TCPDF variables print_header and print_footer to false
- TCPDF update to version 6.4.4, with PHP 8.1 compatibility
- Testing with WordPress 6 and WooCommerce 6.5
- WooCommerce requires PHP 7.2; therefore, this dependent plugin requires PHP 7.2
- More careful checks with class_exists() and constant renaming; checks for premium version on activation – to avoid conflicts
- Dismissible CTA update
- More info in FAQ for folks who refuse to read through the support channel.
- TCPDF library updated to version 6.4.4 – initial compatibility with PHP 8.1!
- Escape echo’d text in classes/wwpdf-compatibility.php
- Plugin name change forced by WooCommerce trademark – no longer called WaterWoo, boohoo 🙁
- Dismissible CTA/info added on settings page
2.7.13 – 24 January 2022
wwpdf_skip_watermarkingfilter hook with ample parameters to decde whether to continue with watermarking on per-file (or per customer, etc) basis
- Testing with WP 5.8.3
- Recommend minimum WP version 5.4
2.7.12 – 10 December 2021
- Testing with WooCommerce 5.9
- Require WooCommerce version >4.0
2.7.11 – 25 October 2021
- Update TCPDF to version 6.4.2
- Discontinue use of DIRECTORY_SEPARATOR constant
- Use wp_normalize_path() method for PDF paths if manipulated – for Windows users
- Add page number parameter to ‘wwpdf_before_write’ and wwpdf_after_write’ hooks
- Testing with WordPress 5.8 and WooCommerce 5.7+
- WooCommerce requires PHP 7.0, and so as a technicality, so does this plugin
2.7.10 – 13 January 2020
- Testing with WooCommerce version 4.9
- Tweak – Catch for when users have Y-axis taller than the page – use -10mm and help prevent blank pages (will catch egregious instances)
2.7.9 – 26 December 2020
- Testing with WP version 5.6 & WooCommerce version 4.8
- Minor code tidying in TCPDI & TCPDF
2.7.8 – 21 0ctober 2020
- Testing with WooCommerce version 4.6
- Minor changes to readme.txt
2.7.7 – 8 0ctober 2020
- Error logging for if (corrupted) PDF /Root not found – helpful feedback for a delivery failure
- More descriptive error source added to error log lines for easier tracing
- Clear on-screen error feedback with instructions for folks trying to watermark remotely-hosted PDFs
- Reverse chronological order of changelog, clean up upgrade notices in readme.txt, archive changelog to trunk
- Fallback instructions added to readme.txt
- Update language files
2.7.6 – 29 September 2020
- Deal with file paths same way with new Woo filter as with old in classes/wwpdf-file-handler.php
2.7.5 – 24 September 2020
- Fix – Better accommodate files listed in Woo by absolute path
- Tweak – Minor updates to TCPDF for PHP 7+ compatibility
- Testing with WooCommerce version 4.5
2.7.4 – 12 July 2020
- Fix – Account for PDFs not stored in the /wp-content directory
2.7.3 – 11 July 2020
- Fix – property $size not correctly defined in classes/wwpdf-watermark.php line 47
- Tweak – don’t attempt to remove ABSPATH from watermarked file path before returning to WC in classes/wwpdf-file-handler.php
- Tweak – filters ‘wwpdf_filter_file_list’, ‘wwpdf_filter_file_path’ and ‘wwpdf_filter_watermarked_file’ added in classes/wwpdf-file-handler.php
- Tweak – use order ID instead of order key for unique file naming, order ID now before time()
- Tweak – use new WC filter ‘woocommerce_download_product_filepath’ for Woo 4.0+ users
- Tweak – enforce use of Woo 3.0+
- Testing with WooCommerce version 4.3
2.7.2 – 2 July 2020
- Fix – check if $res exists for PHP 7+ compatibility inc/tcpdi/tcpdi_parser.php line 1325
- Tweak – thorough class renaming for TCPDF/TCPDI to avoid conflicts with other PDF-manipulating plugins
- Tweak – more reliable handling of variable page size watermark placement in classes/wwpdf-watermark.php
2.7.1 – 22 June 2020
- Fix – cleanup expecting file and finding object in classes/wwpdf-file-handler.php line 67
2.7 – 15 June 2020
- Feature – [TIMESTAMP] shortcode watermarks date file was downloaded/marked (use [DATE] for sold date)
- Feature – ‘wwpdf_before_output’ action hook for folks wanting to get entrepreneuring with TCPDF
- Feature – compatibility up to PHP 7.4.2
- Testing to WC 4.2.0
- Testing to WP 5.4.2
Older changes are found in the changelog.txt file in the plugin directory.