Skip to content

Instantly share code, notes, and snippets.

@cantoniazzi
Last active April 21, 2024 15:04
Show Gist options
  • Save cantoniazzi/1c873d39b71c8ba04dfdf229fb70f306 to your computer and use it in GitHub Desktop.
Save cantoniazzi/1c873d39b71c8ba04dfdf229fb70f306 to your computer and use it in GitHub Desktop.
creating pdf with python and jinja
from jinja2 import Environment
from jinja2 import FileSystemLoader
from pdfkit import from_string
def create_pdf():
template_vars = {
'template_title': 'A template example',
'template_description': 'Lorem ipsum dolor sit amet, consectetur adipisicing elit'
}
env = Environment(loader=FileSystemLoader('your_template_path'))
template = env.get_template('your_template_file.html')
html_out = template.render(template_vars)
file_content = from_string(
html_out,
False,
options='here_a_dict_with_special_page_properties',
css='here_your_css_file_path' # its a list e.g ['my_css.css', 'my_other_css.css']
)
return file_content
def save_pdf(file_content):
try:
with open('your_pdf_file_here.pdf', 'wb+') as file:
file.write(file_content)
except Exception as error:
logging.error(f'Error saving file to disc. Error: {error}')
raise error
if __name__ == '__main__':
pdf_file = create_pdf()
save_pdf(pdf_file)
<head></head>
<body>
<h1>Interest Rate: {{ template_title }}%</h1>
<p>{{ template_description }}</p>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment