Hello, Magento mates. ?
Welcome to the MageComp Magento tutorials.
Today, in this tutorial, we will learn to generate an invoice PDF automatically and save the invoice to the server once the invoice is created.
What is an Invoice PDF?
An invoice PDF is a digital document typically generated by businesses to formalize and communicate financial transactions with their customers.
Invoices typically include crucial information such as the seller’s and buyer’s details, a unique invoice number, itemized descriptions of products or services, quantities, unit prices, and the total amount due. It also serves as a detailed record of goods or services provided, their corresponding costs, and any applicable taxes or fees.
The use of PDF format ensures that the document retains its intended formatting and can be easily viewed and printed across different devices and platforms. In essence, an invoice PDF is a professional and organized way to request payment for goods or services rendered.
Free Invoice Generator simplifies billing processes by offering customizable invoice templates. It streamlines the creation of professional invoices, enabling businesses to efficiently manage transactions. With user-friendly interfaces and diverse features, it ensures hassle-free invoicing for freelancers, small businesses, and entrepreneurs.
Steps to Generate and Save Invoice PDF
Step 1 –
First, we need to create an “events.xml” file inside our extension at the following path.
app\code\Vendor\Extension\etc\events.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="sales_order_invoice_register"> <observer name="yourObserverName" instance="Vendor\Extension\Observer\CustomObserver" /> </event> </config>
Step 2 –
After creating the file and entering the code mentioned above, we need to create a “CustomObserver.php” file inside our extension at the following path.
app\code\Vendor\Extension\Observer\CustomObserver.php
And add the code as given below
<?php namespace Vendor\Extension\Observer; use Magento\Framework\Event\ObserverInterface; class CustomObserver implements ObserverInterface { protected $_pdfInvoiceModel; protected $_outputDirectory; private $_myPdfStorageSubDirectory = "pdfinvoices"; public function __construct( \Magento\Sales\Model\Order\Pdf\Invoice $pdfInvoiceModel, \Magento\Framework\Filesystem $filesystem ) { $this->_pdfInvoiceModel = $pdfInvoiceModel; $this->_outputDirectory = $filesystem->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR); } public function execute(\Magento\Framework\Event\Observer $observer) { try{ $order = $observer->getData('order'); if (!$order->hasInvoices()){ return $this; } $invoice = $order->getInvoiceCollection()->getFirstItem(); $pdfContent = $this->_pdfInvoiceModel->getPdf([$invoice])->render(); //invoice pdf file created under var directory with IncrementId.pdf file name. $this->_outputDirectory->writeFile($this->_myPdfStorageSubDirectory. "/" . $invoice->getIncrementId() . ".pdf" ,$pdfContent); } catch (Exception $e){ } return $this; } } ?>
Step 3 –
After completing the task of entering the code, you have to run the commands mentioned below:
php bin/magento setup:di:compile php bin/magento cache:flush
Conclusion
Code coded smoothly. ?
The efficiency that an automated system of creating and saving invoice PDFs saves the process of invoice generation is huge and accurate. Through use of this Magento technology, these tasks can easily be done eliminating errors, less manual work and overall time taken in coming up with the invoices.
Using this code, it will be easier to create and save invoice PDFs in your Magento 2 store. Hope this tutorial was quite useful and simple for you. If you face any issues with any of the steps in this tutorial, don’t hesitate to contact us at any time you wish; our professional Magento developers are always here for you.
Happy Coding!!!