This repository has been archived on 2025-11-04. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
csmb-housewars/housewars/utils/load_pdf.py

38 lines
1,000 B
Python

from reportlab.platypus import Table, TableStyle, SimpleDocTemplate
from reportlab.lib.pagesizes import letter
from reportlab.lib.colors import black
import io
from housewars.utils import unpack_values
def load_pdf(data, headers):
"""Loads data from queryset into a pdf file
:param queryset: The queryset that will be unpacked
:param headers: A list of the desired headers of the queryset
:returns A bytestream of a pdf file
"""
# Initialize pdf object
buffer = io.BytesIO()
doc = SimpleDocTemplate(buffer, pagesize=letter)
elements = []
# Unpack queryset data
data = unpack_values(data, headers)
# Load data into table and set styles
table = Table(data, repeatRows=1)
table.setStyle(TableStyle(
[('INNERGRID', (0, 0), (-1, -1), 0.25, black), ('BOX', (0, 0), (-1, -1), 0.25, black)]))
# Load table into PDF file
elements.append(table)
# Build document
doc.build(elements)
buffer.seek(0)
return buffer