In somewhere if want to design an Html page which is for documentation purposes it is used dynamic content render by the back-end technology like Python, PHP Nodejs, etc.
For example, I want to create result formate, mark sheet of online examination, invoicing of the e-commerce and POS and any other documentation like that which is based on the web project create based on the order details or buy or sell basic.
This is possible because there has logic to generate Html design into the pdf excel and docs files.
Craete Html to PDF using Django:-
Before we started we assume you have already installed and set up the Django project on your local or live server.
Then you can first install the following command in the project environment or server,
pip install django-xhtml2pdf
After installing the Django-xhtml2pdf package you make an Html design, we assume you have an Html design that you want to convert into pdf using Django, but here we are given the basic structure of Html.
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Invoice</title> <meta name="description" content="Invoice demo sample"> <style> /* important style for the xhtml2pdf*/ @page { size: A4; margin: 1cm; } table { -pdf-keep-in-frame-mode: shrink; -pdf-keep-with-next: true; } </style> </head> <body> <!-- contents --> </body> </html>
In this code style section of the head, a tag is important according to the xhtml2pdf package which makes the perfect design print Html table otherwise it may occur a design issue.
Also, you can use inside this Html code jinja template which is the default template of the Django framework and also make the dynamic Html to pdf to pass parameters in the Html view.
After this, you can make the view functions and set them to the route file to access via url using the following code:-
import the required library
from django.http import HttpResponse from django_xhtml2pdf.utils import generate_pdf
Make the view file invoice function
def invoice_print(request): resp = HttpResponse(content_type='application/pdf') result = generate_pdf('invoice.html', file_object=resp) return result
In the above code, you can also pass the url parameters in the function use the inside view, and make the dynamic data.
generate_pdf() function also you can pass a dynamic context and link_callable function for the dynamic data and media and static file url.
After writing this code you make the route file via access through the url of the project.
urlpatterns = [ path('invoice', invoice_print, name='generate_invoide'), ]
You can also add dynamic route param for the dynamic data access like order id and print the specific order data.
In this article, I have to use the Django-xhtml2pdf library of the Django framework and make the Html design to pdf with dynamic parameters. You can use this code with some modifications in your real-life projects also.
0 Comments