fix: place card rotated
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user