31 lines
889 B
Python
31 lines
889 B
Python
import tempfile
|
|
from operator import itemgetter
|
|
|
|
import fpdf
|
|
|
|
from image_prediction.info import Info
|
|
|
|
|
|
def add_image(pdf, image_metadata_pair, suffix="png"):
|
|
while fewer_pages_then_required(image_metadata_pair.metadata[Info.PAGE_IDX], pdf):
|
|
pdf.add_page()
|
|
|
|
add_image_to_last_page(pdf, image_metadata_pair, suffix=suffix)
|
|
|
|
|
|
def fewer_pages_then_required(page_idx, pdf):
|
|
return page_idx > pdf.page - 1
|
|
|
|
|
|
def pdf_stream(pdf: fpdf.fpdf.FPDF):
|
|
return pdf.output(dest="S").encode("latin1")
|
|
|
|
|
|
def add_image_to_last_page(pdf: fpdf.fpdf.FPDF, image_metadata_pair, suffix):
|
|
image, metadata = image_metadata_pair
|
|
x, y, w, h = itemgetter(Info.X1, Info.Y1, Info.WIDTH, Info.HEIGHT)(metadata)
|
|
|
|
with tempfile.NamedTemporaryFile(suffix=f".{suffix}") as temp_image:
|
|
image.save(temp_image.name)
|
|
pdf.image(temp_image.name, x=x, y=y, w=w, h=h, type=suffix)
|