Compare commits

...

1 Commits

@ -5,7 +5,7 @@ import subprocess
import time
import glob
from io import BytesIO
from pypdf import PdfReader, PdfWriter
from pypdf import PdfReader, PdfWriter, PageObject
from django import template
from django.template.loader import get_template
from django.conf import settings
@ -73,6 +73,30 @@ def render_tex(name, template_path, context, save_only=False):
return serve_pdf(filename_pdf)
def scale_pdf_page_to_a4(page):
A4_WIDTH, A4_HEIGHT = 595, 842
page_width = page.mediabox.width
page_height = page.mediabox.height
scale_x = A4_WIDTH / page_width
scale_y = A4_HEIGHT / page_height
scale_factor = min(scale_x, scale_y)
new_page = PageObject.create_blank_page(width=A4_WIDTH, height=A4_HEIGHT)
page.scale_by(scale_factor)
x_offset = (A4_WIDTH - page.mediabox.width) / 2
y_offset = (A4_HEIGHT - page.mediabox.height) / 2
new_page.merge_translated_page(page, x_offset, y_offset)
return new_page
def scale_pdf_to_a4(pdf):
scaled_pdf = PdfWriter()
for page in pdf.pages:
scaled_pdf.add_page(scale_pdf_page_to_a4(page))
return scaled_pdf
def fill_pdf_form(name, template_path, fields, attachments=[], save_only=False):
filename = normalize_filename(name)
filename_pdf = filename + '.pdf'
@ -96,9 +120,12 @@ def fill_pdf_form(name, template_path, fields, attachments=[], save_only=False):
else:
# convert ensures that png files with an alpha channel can be appended
img = Image.open(fp).convert("RGB")
img_pdf = BytesIO()
img.save(img_pdf, "pdf")
writer.append(img_pdf)
img_io = BytesIO()
img.save(img_io, "pdf")
img_io.seek(0)
img_pdf = PdfReader(img_io)
img_pdf_scaled = scale_pdf_to_a4(img_pdf)
writer.append(img_pdf_scaled)
except Exception as e:
print("Could not add image", fp)
print(e)

Loading…
Cancel
Save