Description
This WooCommerce extension automatically adds a PDF or UBL invoice to the order confirmation emails sent out to your customers. Includes a basic template (additional templates are available from WP Overnight) as well as the possibility to modify/create your own templates. In addition, you can choose to download or print invoices and packing slips from the WooCommerce order admin.
Main features
- Automatically attach invoice PDF or UBL to WooCommerce emails of your choice
- Download the PDF or UBL Invoice / PDF Packing Slip from the order admin page
- Generate PDF invoices / packings slips in bulk
- Fully customizable HTML/CSS invoice templates
- Download invoices from the My Account page
- Sequential invoice numbers – with custom formatting
- Available in: Czech, Dutch, English, Finnish, French, German, Hungarian, Italian, Japanese (see FAQ for adding custom fonts!), Norwegian, Portuguese, Polish, Romanian, Russian, Slovak, Slovenian, Spanish, Swedish & Ukrainian
In addition to this, we offer several premium extensions:
- Create/email PDF Proforma Invoices, Credit Notes (for Refunds), email Packing Slips, automatic upload to Dropbox & more with PDF Invoices & Packing Slips for WooCommerce Professional
- Automatically send new orders or packing slips to your printer, as soon as the customer orders! WooCommerce Automatic Order Printing (from our partners at Simba Hosting)
- More advanced & stylish templates with PDF Invoices & Packing Slips for WooCommerce Premium Templates
Fully customizable
In addition to a number of default settings (including a custom header/logo) and several layout fields that you can use out of the box, the plugin contains HTML/CSS based templates that allow for customization & full control over the PDF output. Copy the templates to your theme folder and you don’t have to worry that your customizations will be overwritten when you update the plugin.
- Insert customer header image/logo
- Modify shop data / footer / disclaimer etc. on the invoices & packing slips
- Select paper size (Letter or A4)
- Translation ready
Screenshots
Installation
Minimum Requirements
- WooCommerce 3.3 or later
- WordPress 4.4 or later
Automatic installation
Automatic installation is the easiest option as WordPress handles the file transfers itself and you don’t even need to leave your web browser. To do an automatic install of PDF Invoices & Packing Slips for WooCommerce, log in to your WordPress admin panel, navigate to the Plugins menu and click Add New.
In the search field type “PDF Invoices & Packing Slips for WooCommerce” and click Search Plugins. You can install it by simply clicking Install Now. After clicking that link you will be asked if you’re sure you want to install the plugin. Click yes and WordPress will automatically complete the installation. After installation has finished, click the ‘activate plugin’ link.
Manual installation via the WordPress interface
- Download the plugin zip file to your computer
- Go to the WordPress admin panel menu Plugins > Add New
- Choose upload
- Upload the plugin zip file, the plugin will now be installed
- After installation has finished, click the ‘activate plugin’ link
Manual installation via FTP
- Download the plugin file to your computer and unzip it
- Using an FTP program, or your hosting control panel, upload the unzipped plugin folder to your WordPress installation’s wp-content/plugins/ directory.
- Activate the plugin from the Plugins menu within the WordPress admin.
FAQ
-
Where can I find the documentation?
-
It’s not working!
-
Check out our step by step diagnostic instructions here: https://wordpress.org/support/topic/read-this-first-9/
-
Where can I find more templates?
-
Go to wpovernight.com to checkout more templates! These include templates with more tax details and product thumbnails. Need a custom templates? Contact us at support@wpovernight.com for more information.
-
Can I create/send a proforma invoice or a credit note?
-
This is a feature of our Professional extension, which can be found at wpovernight.com
-
Can I contribute to the code?
-
You’re more than welcome! This plugin is hosted on github, where you can post issues or make pull requests.
https://github.com/wpovernight/woocommerce-pdf-invoices-packing-slips -
How can I display the HTML/CSS source for debugging/developing templates?
-
There’s a setting on the Advanced tab of the settings page that allows you to toggle HTML output. Don’t forget to turn if off after you’re done testing!
Reviews
Contributors & Developers
“PDF Invoices & Packing Slips for WooCommerce” is open source software. The following people have contributed to this plugin.
Contributors“PDF Invoices & Packing Slips for WooCommerce” has been translated into 34 locales. Thank you to the translators for their contributions.
Translate “PDF Invoices & Packing Slips for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Change log
3.9.0 (2024-10-21)
- New: Updated
sabre/xml
library to version 4. - New: Added notice about dropping support for PHP versions below 7.4.
- New: Implemented PSR-4 Autoloading Standard for improved code structure and maintainability.
- New: Deprecated
wpo_wcpdf_due_date_display
hook. - Fix: WC item meta style issue when using
dd
. - Fix: Relocated
wpo_wcpdf_use_path
hook before$src
empty check. - Translations: Updated translation template (POT).
3.8.8 (2024-10-08)
- Fix: adds missing deprecated filters to document title methods
3.8.7 (2024-10-07)
- New: Add full compatibility with mPDF to the Simple Template.
- New: Add refund reason and invoice number titles to the document methods abstract class.
- New: Improve template titles registration.
- New: Improve invoice due date setting.
- New: Add “You might also like these plugins” section to the Upgrade tab.
- New: Function to determine if checkout is using block:
wpo_wcpdf_checkout_is_block()
. - New: Clean legacy Semaphore locks tool.
- New: Automatic cleanup of unlocked Semaphore locks and other improvements.
- New: Tool to remove expired Semaphore locks.
- New: Filter to modify PDF document data fields:
wpo_wcpdf_document_data_meta_box_fields
. - Tweak: Lower hook priority (200) for invoice columns in WooCommerce orders list.
- Fix: Replace deprecated jQuery
change()
function usage. - Fix: Correct path to generic document icon.
- Fix: Check user capabilities in the
enable_debug()
function. - Fix: Load plugin translations later on the
init
hook. - Fix: Unblock UI when a tool button is clicked.
- Translations: Update translation template (POT).
- Tested up to WooCommerce 9.4.
3.8.6 (2024-07-18)
- Fix: function
add_yith_product_bundles_classes()
errors - Fix:
get_header_logo_id()
return type fatal error
3.8.5 (2024-07-16)
- New: PDFJS v4.3.136 upgrade
- New: advanced embed images setting
- New: includes ImageMagick library in the Advanced Status
- New: adds Invoice number to search type selector in HPOS setups
- New: adds row classes for “YITH WooCommerce Product Bundles”
- New: register a log for document deletion in the Order Notes
- Tweak: improves header logo loading
- Fix: make Simple template total labels translatable
- Fix: wraps document addresses around
<p>
tags - Translations: Updated translation template (POT)
- Tested up to WooCommerce 9.1 & WordPress 6.6
3.8.4 (2024-06-19)
- New: filter hook
wpo_wcpdf_multilingual_languages
- New:
wpo_wcpdf_get_multilingual_languages()
function has been introduced, derived from the deprecatedget_languages()
function - Tweak: Added new strings to the
strings.php
file to improve translations - Tweak: enhanced notes functions for improved translations when using the Professional extension.
- Fix:
normalize_settings_args()
function bug on multilingual setups - Fix: settings language tab issue when adding new language in multilingual setups
- Translations: Updated translation template (POT)
3.8.3 (2024-06-06)
- New: adds language attribute to PDF HTML
- New: Dompdf
v3.0.0
upgrade - New: filter hook
wpo_wcpdf_after_system_status_table
- New: filter for server configs
wpo_wcpdf_advanced_status_server_configs
- New: PDFJS
v3.11.174
upgrade - Tweak: adds
p
as allowed tag of thewpo_wcpdf_sanitize_html_content()
function - Fix: number formatting
[order_number]
placeholder not using parent order number on Credit Notes - Fix: remove unwanted tags from
wpo_wcpdf_sanitize_html_content()
- Fix: removes unused “Log invoice number generation” setting
- Fix: reverts the
customer_invoice
email title to the original Woo title - Fix: the function
get_extensions_license_data()
returning empty if no cached data found - Fix: bug created by the output of the function
wpo_wcpdf_sanitize_html_content()
beingnull
- Translations: Updated translation template (POT)
- Tested up to WooCommerce 9.0
3.8.2 (2024-04-29)
- Fix: “Customer Invoice” email title under “Send order email” metabox
- Fix: filter called with a refund object in
get_billing_address()
andget_shipping_address()
- Translations: Updated translation template (POT)
- Tested up to WooCommerce 8.9
3.8.1 (2024-04-23)
- New: updates DOMPDF to
v2.0.7
- New: adds
woocommerce
as required plugin - New: improvements to shop logo to be translatable in future Professional extension version
- Fix: document date parse function being called on non HPOS stores
- Fix: replaces deprecated jQuery functions
- Fix: bug with type hint in
wpo_wcpdf_parse_document_date_for_wp_query()
function - Fix: bug calling
is_allowed()
onbool
underwcpdf_get_document()
function - Fix: not removing documents meta on Woo subscription renewal
- Fix: XSS vulnerability on Woo Checkout user input address data
- Fix: Semaphore attachments issue on concurrent refunds
- Translations: Updated translation template (POT)
- Tested up to WooCommerce 8.8
3.8.0 (2024-03-18)
- New: updates composer libraries, specially
php-svg-lib
because of a security issue - New: hooks to allow adding new Settings Debug tabs and their contents
- New: implements date type selector on Danger tools
- New: filter
wpo_wcpdf_process_danger_zone_tools_date_type
- New: bumps WooCommerce min version to 3.3
- New: function
wcpdf_error_handling()
- New: function
wcpdf_get_document_output_format_extension()
- New: function
wcpdf_get_document_file()
to get the document file - Tweak: adds new filter to include invoice number in HPOS search queries
- Tweak: replace
date()
withdate_i18n()
onget_filename()
- Tweak: improves number initiation with new function:
init_number()
toinitiate_number()
- Tweak: hides the extensions banner temporarily
- Fix: bug that caused a sorting issue in the orders list
- Fix: JS error
$(...).pointer
is not a function - Fix: danger tools forms not working
- Fix: bulk document missing slug property
- Fix: changed default nonce name for wizard dismissal
- Fix: advanced tools issues like “Generate random temporary directory” not working
- Fix: number tool pagination
- Fix: renumbering documents not working
- Translations: Updated translation template (POT)
- Tested up to WooCommerce 8.7 & WordPress 6.5
3.7.7 (2024-01-29)
- New: extensions license cache system
- New: hides the Upgrade tab on bundle
- New: get document filter hook
wcpdf_get_document
- Tweak: improves Simple template files markup
- Tweak: moves the notes hooks position in template files
- Fix: sorting orders by invoice number and date issue on the orders listing page
- Fix: the level parameter sent to the
log()
method in semaphore class - Fix: SQL injection bug in Advanced Numbers search
- Translations: make the due date output translatable
- Translations: Updated translation template (POT)
- Tested up to WooCommerce 8.5
3.7.6 (2024-01-09)
- New: enforces PHP 7.2 as minimum version
- New: DOMPDF upgrade to
v2.0.4
- Tweak: declare new “Payment date” string for translation
- Fix: potential SQL injection bug in Number Tools
- Fix: bug in
get_payment_date()
- Translations: Updated translation template (POT)
3.7.5 (2023-12-13)
- Tweak: includes
$args
in filter hookwpo_wcpdf_filename
parameters - Tweak: re-adds the legacy hook
woocommerce_invoice_number
for backwards compatibility - Fix: bug in “Full” document access using bulk actions
- Fix: fatal error in UBL document
3.7.4 (2023-12-06)
- New: adds new setting to enable semaphore logs
- Tweak: adds descriptions to the COC and VAT settings
- Tweak: replaces Packing Slip shipping function in the template file
- Tweak: adds semaphore to email attachment function
- Fix: bug on
get_payment_date()
- Fix: bug on getting VAT & CoC number saved values
- Tested up to WooCommerce 8.4
3.7.3 (2023-11-27)
- New: temporary promo ad
- Tweak: improves the templates number/date functions
- Tweak: update the filter
wpo_wcpdf_due_date_display
arguments - Tweak: change the way the setting is retrieved for the due date
- Fix: Packing Slip attachment when Pro is disabled
- Fix: modifying order creation date in the
get_due_date
method - Fix: PHP 8.1
preg_replace
warning - Fix: fatal error in the
custom_field()
function when custom field is anarray
- Fix: multiple document generation with “Full” access type
- Fix: empty argument bug for
display_due_date
method
3.7.2 (2023-11-08)
- New: adds Due Date option to the Invoice settings
- New: filter for plugin directories in Advanced Status tab:
wpo_wcpdf_plugin_directories
- New: advanced tab with Number tools extension code integrated
- Tweak: updates Upgrade tab extension features
- Fix: bug on historical settings not being deleted when using most current settings
- Fix: bug on document variable name on
output_ubl()
method - Tested up to WooCommerce 8.3
3.7.1 (2023-10-20)
- Fix: bug on UBL preview that forces the invoice creation
3.7.0 (2023-10-18)
- New: adds
payment_date()
function to be used in templates - New: adds UBL as additional output format for documents
- New: bump min required PHP version to 7.2
- New: bump min required WordPress version to 4.4 (which was already implicitly by the minimum required WooCommerce version)
- Tweak: switch
wpo_wcpdf_before_html
andwpo_wcpdf_before_html
hooks positions - Tweak: hide next Invoice number if displaying order number
- Tweak: removed legacy
normalize_path
functions and replaced withwp_normalize_path
- Fix: bug with HTML output using pretty links. Improved endpoint.
- Fix: potential fatal error if document is
false
in order list action buttons - Fix: error when calling order ID on
null
underoutput_number_date_edit_fields
method - Fix: bug when displaying the Invoice number/date columns, causing significant drop of performance
- Fix: my account PDF link conflict with Jetpack analytics module
- Fix: PHP error on calling
get_title()
document method onbool
- Fix:
strpos()
andstr_replace()
null
parameter deprecated warnings - Tested up to WooCommerce 8.2 & WordPress 6.4
3.6.3 (2023-09-04)
- New: adds Invoice Number column to the orders export of WooCommerce Analytics
- New: adds a document access denied redirect page setting
- New: hooks before and after debug tools:
wpo_wcpdf_before_debug_tools
,wpo_wcpdf_after_debug_tools
- Tweak: add a note to make clear that updating the number format only affects new orders
- Tweak: removes legacy mode & textdomain from debug settings
- Fix: undefined WC PageController method
is_admin_page
bug and replace it withis_admin_or_embed_page
3.6.2 (2023-08-23)
- New
wcpdf_document_link
shortcode - New: parameters to download PDF shortcode
- New: adds notice for the upcoming PHP 7.2 requirement
- New: filter hook to strip HTML tags from Shipping Notes
wpo_wcpdf_shipping_notes_strip_all_tags
- Fix: bug of passing the wrong variable for the filtered order emails
- Fix: remove old temporary directory when generating new one from status tool
- Fix: displays always the Generate random temporary directory tool
- Fix: issue with Shipping Notes line breaks
3.6.1 (2023-08-16)
- Fix: string encoding issues in PDF
3.6.0 (2023-08-15)
- New: setting for improved document link access type
- New: implemented autoloader for plugin classes
- New: adds a new Status tool to reset plugin settings
- New: invoice number column added to the WooCommerce order analytics
- Fix: replaces
utf8_decode()
which is deprecated in PHP 8.2 - Fix: allows the translation for the Shipping Notes strings
- Fix: bug when trying to delete temporary files when using mPDF extension
- Fix: bug on
$updater
returningnull
in Upgrade tab function - Fix: deprecates
woocommerce_resend_order_emails_available
filter - Fix: several string typos
- Fix: revert breaking long characters in order data labels
- Fix: PHP8.2 creation of dynamic property deprecated warnings
- Translations: Updated translation template (POT)
- Tested up to WooCommerce 8.0 & WordPress 6.3
3.5.6 (2023-06-21)
- New: adds a generic shortcode
[wcpdf_download_pdf]
for PDF download links - New: bump preview PDFJS library to v3.7.107
- Tweak: optimize PDFJS library size
- Tweak: remove WPO hiring banner from the Status tab
- Tweak: composer dependencies update
- Fix: font deletion bug after plugin upgrade
- Fix: bug on previewing Credit Note if the order has multiple refunds
- Fix: PHP error on
log_document_creation_trigger_to_order_meta()
function when trying to get order ID and type - Translations: Updated translation template (POT)
- Tested up to WooCommerce 7.8
3.5.5 (2023-06-01)
- New: toggle display date and created via on document data
- New: adds support for legacy Sidekick activated licenses in Upgrade tab
- Tweak: log invoice number generation on setting
3.5.4 (2023-05-19)
- Tweak: improves code for the upgrade tab get license info function
- Fix: bug on templates using legacy versions of the Premium Templates extension
- Fix: string translation issues & updated POT
- Fix: bug in slug property not set when defining the document number lock name
3.5.3 (2023-05-15)
- New: display creation trigger in document data and order meta
- New: detects the extension license status in the Upgrade tab
- New: invoice number search document setting
- New: adds new filter to stick Document data metabox:
wpo_wcpdf_sticky_document_data_metabox
- Fix: adds semaphore to Invoice number init to prevent concurrent number issues
- Fix: invoice column hooks only on setting condition
- Tested up to WooCommerce 7.7
3.5.2 (2023-04-12)
- New: added upgrade tab
3.5.1 (2023-04-07)
- Tweak: adds user permission check on AJAX document printed
- Fix: bug on trying to save bulk document setting on
document_can_be_manually_marked_printed()
- Fix: disallow document creation for anonymized orders
3.5.0 (2023-04-05)
- New: save invoice display date option
- New: mark/unmark Invoice as printed
- New: adds notice when RTL is detected
- New:
wpo_wcpdf_preview_after_reload_settings
action - New:
wpo_wcpdf_export_settings
filter - Fix: fatal error on WC deactivation
- Fix: invoice number/date screen options bug with HPOS enabled
- Tested up to WooCommerce 7.6 & WordPress 6.2
3.4.0 (2023-02-20)
- New: filter
wpo_wcpdf_settings_user_role_capabilities
to change role capabilities to access plugin settings - New: improved debug tools UI
- New: import/export settings tools
- New: dompdf upgrade to v2.0.3
- Fix: save document settings in order meta only on document init
- Tested up to WooCommerce 7.4
3.3.2 (2023-02-03)
- New: dompdf upgrade to v2.0.2
- New: filter to control the value returned by
is_woocommerce_activated()
- Fix: JS undefined error when trying to retrieve preview gutter texts
3.3.1 (2023-01-20)
- Fix: applies
overflow-wrap:anywhere;
to the Simple templatebody
in CSS styles - Fix: displays a message if the typed next number is superior to MySQL INT max
- Fix: allow preview gutters text to be translated
- Fix: settings forms background color issue
- Fix: PHP notice for undefined index
exists
- Fix the year in the date release of v3.3.0 in readme.txt
3.3.0 (2023-01-16)
- New: WooCommerce HPOS compatibility (beta)
- New: reschedule the yearly reset of the numbering system on a button from the Status page
- New: document status table in the Status page
- New: adds document object argument to PDF maker class constructor
- New: filter to allow user to disable the documents private data removal:
wpo_wcpdf_remove_order_personal_data
- Tweak: optimizes
$wpdb
use onSequential_Number_store
class - Tweak: improves yearly reset number with Action Scheduler and Updraft Plus Semaphore
- Fix: replaces the use of the deprecated
wcs_
filter hooks from WooCommerce Subscriptions plugin - Fix: bail if document data is empty when saving order
- Fix: add nonces to several admin unsecure requests
- Tested up to WooCommerce 7.3
3.2.6 (2022-12-15)
- Fix: adds nonce check in hide link for attachments hint in admin
- Tested up to WooCommerce 7.2
3.2.5 (2022-11-22)
- Fix: allow for WooCommerce Booking without order
3.2.4 (2022-11-07)
- Tweak: update translation template and files
- Fix: break long URLs in different lines if it reaches the available space in Simple template
- Fix: restore deleted strings and load them using standalone strings.php file
- Fix: warning on deprecated argument from product get_dimensions() method
- Tested up to WooCommerce 7.1
3.2.3 (2022-10-28)
- Fix: check if the order is unsaved or doesn’t exist before rendering the PDF document
- Fix: bug on getting the order ID from third party objects when attaching PDF to email
- Fix: reverts documents functions/templates escaping that caused issues on version 3.2.2
- Fix: billing/shipping phone getter functions for refund orders
- Tested up to WordPress 6.1
3.2.2 (2022-10-25)
- New: filter to allow customers to access your PDF with a unique key
- Fix: check if the shop logo exists
- Fix: check if HTML is escaped properly before echoing
- Fix: maybe reinstall fonts (if are missing) before PDF output
- Fix: bug on automatic cleanup cron job
- Fix: removes WC legacy versions compatibility classes. Bumps WC minimum version to 3.0
- Fix: allow manually resending new order email
- Fix: run action hooks within invoice columns under order list
- Marked tested up to WooCommerce 7.0
3.2.1 (2022-10-06)
- Renames the plugin to comply with trademark rules
3.2.0 (2022-09-26)
- New: setting to display the Invoice date column in the WooCommerce orders list
- New: updated Dompdf to version 2.0.1, which fixes a security vulnerability.
- New: filter
wpo_wcpdf_document_link_additional_vars
to add additional query variables to the document link - Tweak: improved document settings data init/save
- Tweak: improved wizard display settings
- Tweak: improved styles and descriptions for the document ‘Number format’ settings
- Tweak: new query variable for the shortcode document link
3.1.1 (2022-09-13)
- Fix: fatal error caused by list_files() function missing
3.1.0 (2022-09-06)
- New: custom document links feature available from the Status tab debug settings page. Changes the document links to a prettier URL scheme
- New: action hooks before and after the shop logo:
wpo_wcpdf_before_shop_logo
andwpo_wcpdf_after_shop_logo
- Fix: replaces WP_Filesystem with PHP functions to delete temporary files
- Marked tested up to WooCommerce 6.8
3.0.1 (2022-08-02)
- New: admin pointer for document settings dropdown
- Security: escape the tab and section parameters before outputting it back, leading to a Reflected Cross-Site Scripting. This bug was reintroduced on version 2.14.0
- Tweak: prevent requirements select to reload settings preview
- Fix: allow remove requirement trigger secondary save button on settings pages
- Marked tested up to WooCommerce 6.7
3.0.0
- Libraries: Updated dompdf to 2.0.0, addressing security vulnerabilities and introducing some changes that could possibly break high level customized setups (more information)
- Fix: respect custom (filtered) woocommerce template paths
- Fix: Check if the invoice is allowed before the shortcode output
- UI: Link to Professional extension for packing slip attachments
2.16.0
- Security: Fix authenticated reflected XSS on the settings page
- Fix: Redirection URLs in wizard and when sending emails manually
- Libraries: updated dompdf to 1.2.2
2.15.0
- New: Filter hooks to override ability to edit document data
- Simple template: Only show shipping & payment method lines when set
- Security: escape urls as late as possible
- Fix: WP6.0+ converting interface elements to emojis
- Tweak: Show sticky save button for all setting changes
2.14.5
- Fix: Preview invoice number & date display settings
- Tested up to WooCommerce 6.5 & WordPress 6.0
2.14.4
- Fix: Content-Length header causing invalid response on some servers
2.14.3
- Fix: preview not updating (unless test mode was enabled)
- Tweak: add styles for custom settings sections
- Tweak: Set Content-Length header for inline display
2.14.2
- Fix: unescape text strings entered in the setup wizard
- Dev: New filter wpo_wcpdf_email_order_object
- UI: Update setup wizard layout
- Libraries: updated dompdf to 1.2.1 (addressing potential security vulnerability)
- Marked tested up to WooCommerce 6.4
2.14.1
- New: Relaunch the Setup Wizard manually from the Status tab
- Fix: Dynamic
wpo_wcpdf_tmp_path_{$type}
filter hook name parsing - Fix: removing inline preview for media upload
- UI: Show sticky save button on settings change
- UI: Fill in the document icon sheet with white
2.14.0
- New: Live preview of PDF document on the settings page
- Fix: checks if number store table exists before applying DB migration
- Tweak: Remove i18n for some log strings
- Marked tested up to WooCommerce 6.3
2.13.1
- Fix: load missing non-historical settings for existing invoices
- Tweak: print file & line number for exceptions in error logs & output
- Marked tested up to WooCommerce 6.2
2.13.0
- New: include dompdf temporary folder in cleanup procedure
- New: Add CSS row classes for WPC Product Bundles
- New: filter to override
wc_display_item_meta
arguments - Fix: Prevent errors when server doesn’t support
.webp
image rendering - Fix: change invalid default date 0000-00-00 00:00:00 on number store tables
- Tweak: Don’t store non-historical document settings in order meta
- Templates: New action hook before the document label (
wpo_wcpdf_before_document_label
) - Libraries: updated dompdf to 1.2.0
- Marked tested up to WP5.9
2.12.1
- Fix: Show a feedback notice after saving settings
- Fix: images with min-width/min-height styles rendered tables incorrectly (dompdf patch)
- Tweak: Disable composer platform check
2.12.0
- New: Support for webp images
- Fix: Plugin version for font synchronizer upgrade procedure
- Fix: force reloading installed template list during template path migration
- Fix: PHP8.1 incompatible return type notice
- Fix: WooCommerce 6.1 deprecations notices
- Dependencies: Updated dompdf to 1.1.1
- Marked tested up to WooCommerce 6.1
2.11.4
- Fix: bundled fonts being deleted during upgrades
- Fix: dompdf 1.1.0+ font cache data compatibility
2.11.3
- Fix: Extended currency symbol support in bulk documents
- Fix: Prevent copying packing slip and other document data for renewal orders (WooCommerce Subscriptions)
- Marked tested up to WooCommerce 6.0
2.11.2
- New: filter and fallback for the default settings tab
- Tweak: Improved font synchronization during plugin updates
- Fix: Allow non-historical text settings
- Fix: Fail more gracefully during install/upgrade/downgrade
- Fix: notice on missing setting on fresh install
- Fix: don’t initialize settings when document can’t be loaded
- Fix: Prevent unnecessary database queries when settings API is initiated
- Fix: Use ISO currency code for RTL currencies when the default PDF library (dompdf) is used
2.11.1
- Fix: Errors were incorrectly logged after installation when no invoices had been created yet
- Fix: Button styles in order backend
2.11.0
- New: Use year-based number stores for future and past years to handle yearly resets more reliably
- Fix: PHP iconv fallback for custom PHP builds without this function
2.10.6
- Fix: PHP7.1 compatibility
2.10.5
- Security: Apply escaping to translated strings
2.10.4
- Fix: Billing phone not displaying in Packing Slip when billing address was enabled
- Fix: Support for special characters on sites without the PHP MB-string module
- Fix: Don’t alter order object when logging document creation for refunds to order notes
2.10.3
- Fix: Secondary address always showed, regardless of setting
2.10.2
- New: Print shipping phone number when available (and enabled in the settings)
- New: Show inline warning on the settings page when the logo is bigger than 600dpi
- Fix: Prevent fatal error when trying to log notes to refund orders
- Fix: MailPoet email compatibility notice
- Translations: Updated translation template (POT)
- Translations: Removed bundled translations for language packs available on wordpress.org
- Marked tested up to WooCommerce 5.9
2.10.1
- Fix: prevent fatal errors if template functions cannot be loaded
2.10.0
- New: Use minified JS & CSS files to reduce load time on live sites (enabling
SCRIPT_DEBUG
will load full versions) - New: Selected template setting is now stored as a reference ID rather than a fixed path (#209)
- Fix: Fallback to first available translation for settings when migrating from multilingual to single language setup
- Fix: Undefined variable notice when using [wcpdf_download_invoice] on non-order pages
- Fix: Updated documentation links
- Marked tested up to WooCommerce 5.7
2.9.3
- Fix: JavaScript errors on My Account page with empty link tags
- Fix: Long URLs in notes area breaking layout
2.9.2
- Tweak: Added new ‘item-‘ prefix to item row class ID
- New: filter to set sort order for bulk documents (
wpo_wcpdf_bulk_document_sort_order
) - Marked tested up to WooCommerce 5.6
2.9.1
- New: Log manual invoice creation (with logging enabled)
- New: Filters to override body class and content (
wpo_wcpdf_body_class
&wpo_wcpdf_html_content
) - New: Document methods to get (and override) the number and date titles
- Fix: Open PDF on My Account page in a new browser tab/window (following settings)
- Translations: Update template (POT) and current translation projects
- Marked tested up to WooCommerce 5.5 and WordPress 5.8
2.9.0
- New: Setting to log document generation time & context to order notes
- New: template hooks ‘wpo_wcpdf_before_footer’ and ‘wpo_wcpdf_after_footer’
- New: Save and Cancel buttons for the Document Data metabox
- Fix: Fallback to bundled fonts when temporary folder is not writable
- Fix: empty first page under specific conditions
- Fix: HTML line breaks and special characters in invoice notes
- Fix: Allow setting document date prior to generating it
- Fix: variable not set for filename
- Fix: ensure unique filename in case order number or document number not accessible
- Fix: Fallback if no template is selected
- Translations: Added hints for translators, use numbered placeholders
- Translations: Added Arabic (thanks to Nabil Moqbel)
2.8.3
- New: Allow filtering action button classes
- Fix: Error when no order data passed to filename function
- Fix: During first install, only set defaults if not already (pre-) configured
- Fix: Use
WC()->template_path()
instead ofWC_TEMPLATE_PATH
for theme template overrides - Fix: Checks existence of document data number and date for order metabox fields
- Fix: Prevent WooCommerce deprecation notices for non-product item types
- Fix: jQuery deprecation notices
- Tweak: Show instructions for emails metabox
- Marked tested up to WooCommerce 5.2 and WordPress 5.7
2.8.2
- Fix: Layout issues with totals for documents with more than 1 page
- Fix: Allow setting an Invoice number and date manually
- Fix: Prevent errors on PHP8.0 when order not loaded for a document
2.8.1
- Fix: Images and fonts loading from custom locations for uploads and temporary folders
2.8.0
- Fix: Support for PHP8.0, deprecating support for PHP7.0 or older (separate addon available for backwards compatibility)
- Fix: Setup wizard crash when 3rd party plugins/themes check screen object
- Dev: Use internal date formatting function, allowing easier PDF specific date format overrides
- Dev: Introduced new action hook
wpo_wcpdf_document_created_manually
- Marked tested up to WooCommerce 5.0
2.7.4
- New: Show notice if incompatible MailPoet mailing service is used
- New: WooCommerce webhook topic for document saves
- Fix: Don’t reverse order of bulk document if already sorted oldest to newest
- Marked tested up to WooCommerce 4.9
2.7.3
- New: Support for line breaks in invoice notes
- Fix: Only pass opened edit fields when regenerating document
- Fix: Words in table headers could be broken up
- Deprecated: legacy translations (pre-2.0) are no longer read automatically (can be enabled in the Status tab)
2.7.2
- Fix: Update invoice number and date when regenerating document from edit mode
- Fix: Prevent infinite loop when temporary folder is not writable
- Fix: Prevent layout issues when custom order data exceeds column width
- Fix: Error when PHP Ctype extension is not installed
- Tested up to WooCommerce 4.8 & WP 5.6
2.7.1
- New: Redesigned action buttons
- New: Randomized temporary folder name for easier protection
- New: Setting to enable/disable customer notes
- New: Completely disable free invoice when that setting is enabled (not just attachments)
- New: Template action hooks before and after shop name and address
- New: Filter to set starting number for yearly reset
- Fix: Errors on third party products without weight/sku/dimensions
- Fix: Uneven spacing between action icons
- Fix: Missing
$email_to_send
parameter forwoocommerce_before_resend_order_emails
hook - Fix: Break long words in billing address
- Tested up to WooCommerce 4.7
2.7.0
- New: Add per-order notes to invoices (requires template update if you have a custom template)
- New: Show notice with instructions for protecting the invoice folder on NGINX setups
- Fix: Show correct “next number” on settings page for sites using MySQL 8+
- Tested up to WooCommerce 4.6
2.6.1
- Fix: Load custom documents once rather than on every document request
- Tweak: execute wpo_wcpdf_init_document action in invoice too
- Tested up to WooCommerce 4.5
2.6.0
- Feature: More advanced address visibility options
- Fix: Deprecation notice in WooCommerce 4.4
2.5.4
- Fix: check for existence of WooCommerce functions preventing incidental crashes in specific deployment setups
- Fix: documents could still be generated programmatically when document disabled and not specifically checking for
$document->is_allowed()
- Dev: Filter to disable reloading attachment translations
- Tested up to WooCommerce 4.4 & WP 5.5
2.5.3
- Fix: WP5.5 compatible PHPMailer integration
- Tested up to WooCommerce 4.3
2.5.2
- Fix: ImageMagick version conflict
- Translations: Updated POT
2.5.1
- Fix: Correct integration with permalink settings for
[wcpdf_download_invoice]
shortcode - Fix: Plugin assets versioning
2.5.0
- Feature: Manually regenerate individual documents with latest settings (shop address/footer/etc)
- Feature: Shortcode to download invoice:
[wcpdf_download_invoice]
- Feature: Logo height setting
- Fix: textdomain fallback would fail on specific site domains including .mo
- Fix: Unnecessary extra page on edge case table heights
- Fix: Settings disappearing when overriding document titles to empty string
- Fix: check if header logo file still exists before loading
- Fix: If document is already created, disregard ‘disable for:’ setting
- Fix: Reading document settings & number when stored incorrectly (by external plugins)
- Tested up to WooCommerce 4.2
2.4.10
- Tested up to WooCommerce 4.1
2.4.9
- Fix: Backwards compatibility with WooCommerce 2.6
- Fix: Description of the setting to disable invoice for free orders
- Changed: shorter my account button text (“Invoice” instead of “Download Invoice (PDF)”)
2.4.8
- Dev: Added
wpo_wcpdf_pdf_data
filter for direct loading of PDF data - Dev: Added
is_bulk
property to bulk documents
2.4.7
- Fix: missing order number in filename when invoice number not enabled
- Dev: Added action hook for document save method (
wpo_wcpdf_save_document
) - Dev: Added action hook for printing custom data in PDF invoice data panel (
wpo_wcpdf_meta_box_after_document_data
) - Tested up to WooCommerce 4.0 & WP 5.4
2.4.6
- Fix: Locale determination for admins on their own my account page
…