Cédric Krier pushed to branch branch/default at Tryton / Tryton
Commits:
edb0c683 by Cédric Krier at 2022-12-23T17:13:53+01:00
Add support for PyPDF2 method for versions: 1, 2 and 3
Closes #11961
- - - - -
3 changed files:
- modules/account_invoice_watermark/account.py
- modules/stock_package_shipping_dpd/stock.py
- modules/stock_package_shipping_mygls/stock.py
Changes:
=====================================
modules/account_invoice_watermark/account.py
=====================================
@@ -50,11 +50,21 @@
def merge(cls, invoice, watermark):
output = PdfWriter()
invoice = PdfReader(BytesIO(invoice))
- watermark = PdfReader(BytesIO(watermark)).getPage(0)
- for i in range(invoice.getNumPages()):
- page = invoice.getPage(i)
- page.mergePage(watermark)
- output.addPage(page)
+ watermark = PdfReader(BytesIO(watermark))
+ if hasattr(watermark, 'pages'):
+ watermark = watermark.pages[0]
+ else:
+ watermark = watermark.getNumPages(0)
+ for i in range(len(invoice.pages)):
+ page = invoice.pages[i]
+ if hasattr(page, 'merge_page'):
+ page.merge_page(watermark)
+ else:
+ page.mergePage(watermark)
+ if hasattr(output, 'add_page'):
+ output.add_page(page)
+ else:
+ output.addPage(page)
data = BytesIO()
output.write(data)
return data.getvalue()
=====================================
modules/stock_package_shipping_dpd/stock.py
=====================================
@@ -28,6 +28,14 @@
TRACKING_URL = 'https://tracking.dpd.de/status/%(code)s/parcel/%(reference)s'
+def iter_pdf_pages(document):
+ if hasattr(document, 'pages'):
+ yield from document.pages
+ else:
+ for i in range(document.getNumPages()):
+ yield document.getPage(i)
+
+
class Package(metaclass=PoolMeta):
__name__ = 'stock.package'
@@ -175,6 +183,6 @@
labels = []
labels_pdf = BytesIO(shipment_response.parcellabelsPDF)
reader = PdfReader(labels_pdf)
- for page_num in range(reader.getNumPages()):
+ for page in iter_pdf_pages(reader):
new_pdf = PdfWriter()
new_label = BytesIO()
@@ -179,6 +187,9 @@
new_pdf = PdfWriter()
new_label = BytesIO()
- new_pdf.addPage(reader.getPage(page_num))
+ if hasattr(new_pdf, 'add_page'):
+ new_pdf.add_page(page)
+ else:
+ new_pdf.addPage(page)
new_pdf.write(new_label)
labels.append(new_label)
=====================================
modules/stock_package_shipping_mygls/stock.py
=====================================
@@ -21,6 +21,14 @@
from .exceptions import MyGLSError
+def iter_pdf_pages(document):
+ if hasattr(document, 'pages'):
+ yield from document.pages
+ else:
+ for i in range(document.getNumPages()):
+ yield document.getPage(i)
+
+
class Package(metaclass=PoolMeta):
__name__ = 'stock.package'
@@ -172,6 +180,6 @@
labels = []
reader = PdfReader(BytesIO(response.Labels))
- for i in range(reader.getNumPages()):
+ for i, page in enumerate(iter_pdf_pages(reader)):
pdf = PdfWriter()
label = BytesIO()
@@ -176,6 +184,9 @@
pdf = PdfWriter()
label = BytesIO()
- pdf.addPage(reader.getPage(i))
+ if hasattr(pdf, 'add_page'):
+ pdf.add_page(page)
+ else:
+ pdf.addPage(page)
pdf.write(label)
if carrier.mygls_type_of_printer in {'A4_2x2', 'A4_4x1'}:
if carrier.mygls_type_of_printer == 'A4_2x2':
View it on Heptapod:
https://foss.heptapod.net/tryton/tryton/-/commit/edb0c6830caf2969f53d7f1c82337841c374081b
--
View it on Heptapod:
https://foss.heptapod.net/tryton/tryton/-/commit/edb0c6830caf2969f53d7f1c82337841c374081b
You're receiving this email because of your account on foss.heptapod.net.