fix: place card rotated

This commit is contained in:
2025-05-13 13:13:38 +04:00
parent 329616bcd3
commit 816dcac16c
2 changed files with 17 additions and 1 deletions

View File

@@ -1,5 +1,7 @@
import os import os
from io import BytesIO
from pdfrw import PdfReader, PdfWriter, PageMerge
from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet
from reportlab.lib.units import mm from reportlab.lib.units import mm
from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase import pdfmetrics
@@ -79,3 +81,16 @@ class BasePdfCardGenerator:
alignment=1, alignment=1,
**common_paragraph_style, **common_paragraph_style,
) )
def _rotate_pdf(self, buffer: BytesIO, rotation: str = 90) -> BytesIO:
reader = PdfReader(buffer)
writer = PdfWriter()
for page in reader.pages:
rotated_page = PageMerge().add(page, rotate=rotation).render()
writer.addpage(rotated_page)
rotated_buffer = BytesIO()
writer.write(rotated_buffer)
rotated_buffer.seek(0)
return rotated_buffer

View File

@@ -80,4 +80,5 @@ class WarehousePlaceQRCodeGenerator(BasePdfCardGenerator):
doc.build(elements, on_first_page) doc.build(elements, on_first_page)
buffer.seek(0) buffer.seek(0)
return buffer rotated = self._rotate_pdf(buffer)
return rotated