summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--postgresqleu/digisign/backendviews.py6
-rw-r--r--postgresqleu/digisign/pdfutil.py16
-rw-r--r--postgresqleu/util/versionutil.py36
3 files changed, 42 insertions, 16 deletions
diff --git a/postgresqleu/digisign/backendviews.py b/postgresqleu/digisign/backendviews.py
index 51f6d03f..c29faa20 100644
--- a/postgresqleu/digisign/backendviews.py
+++ b/postgresqleu/digisign/backendviews.py
@@ -7,6 +7,7 @@ import io
import json
from postgresqleu.util.backendviews import backend_list_editor
+from postgresqleu.util.versionutil import fitz_get_page_png
from postgresqleu.digisign.models import DigisignProvider, DigisignLog
from postgresqleu.digisign.backendforms import BackendProviderForm
from postgresqleu.digisign.util import digisign_providers
@@ -128,10 +129,7 @@ def pdf_field_editor(request, conference, pdf, available_fields, fielddata, save
# one PNG for each page.
pdf = fitz.open('pdf', bytes(pdf))
pages = []
- if fitz.version[0] > "1.19":
- pages = [(pagenum, base64.b64encode(page.get_pixmap().tobytes(output='png')).decode()) for pagenum, page in enumerate(pdf.pages())]
- else:
- pages = [(pagenum, base64.b64encode(page.getPixmap().getPNGData()).decode()) for pagenum, page in enumerate(pdf.pages())]
+ pages = [(pagenum, base64.b64encode(fitz_get_page_png(page)).decode()) for pagenum, page in enumerate(pdf.pages())]
return render(request, 'digisign/pdf_field_editor.html', {
'conference': conference,
diff --git a/postgresqleu/digisign/pdfutil.py b/postgresqleu/digisign/pdfutil.py
index f8db8d04..a64a8f82 100644
--- a/postgresqleu/digisign/pdfutil.py
+++ b/postgresqleu/digisign/pdfutil.py
@@ -4,6 +4,7 @@ import itertools
from reportlab.pdfgen.canvas import Canvas
from postgresqleu.util.reporttools import cm
+from postgresqleu.util.versionutil import fitz_get_page_pixmap, fitz_insert_text, fitz_insert_image
def fill_pdf_fields(pdf, available_fields, fielddata):
@@ -38,10 +39,7 @@ def fill_pdf_fields(pdf, available_fields, fielddata):
txt = ""
if txt:
- if fitz.version[0] > "1.19":
- page.insert_text(p, txt, fontname='Courier-Bold', fontsize=fielddata['fontsize'])
- else:
- page.insertText(p, txt, fontname='Courier-Bold', fontsize=fielddata['fontsize'])
+ fitz_insert_text(page, p, txt, 'Courier-Bold', fielddata['fontsize'])
return pdf.write()
@@ -68,16 +66,10 @@ def pdf_watermark_preview(pdfdata):
wmio.seek(0)
wmpdf = fitz.open('pdf', wmio)
- if fitz.version[0] > "1.19":
- wmpixmap = next(wmpdf.pages()).get_pixmap()
- else:
- wmpixmap = next(wmpdf.pages()).getPixmap()
+ wmpixmap = fitz_get_page_pixmap(next(wmpdf.pages()))
pdf = fitz.open('pdf', pdfdata)
for pagenum, page in enumerate(pdf.pages()):
- if fitz.version[0] > "1.19":
- page.insert_image(page.bound(), pixmap=wmpixmap, overlay=False)
- else:
- page.insertImage(page.bound(), pixmap=wmpixmap, overlay=False)
+ fitz_insert_image(page, page.bound(), wmpixmap, False)
return pdf.write()
diff --git a/postgresqleu/util/versionutil.py b/postgresqleu/util/versionutil.py
index 24f17e21..17ae63e2 100644
--- a/postgresqleu/util/versionutil.py
+++ b/postgresqleu/util/versionutil.py
@@ -7,3 +7,39 @@ def decode_unverified_jwt(j):
return jwt.decode(j, options={'verify_signature': False})
else:
return jwt.decode(j, verify=False)
+
+
+def fitz_get_page_png(page):
+ import fitz
+
+ if fitz.version[0] > "1.19":
+ return page.get_pixmap().tobytes(output='png')
+ else:
+ return page.getPixmap().getPNGData()
+
+
+def fitz_get_page_pixmap(page):
+ import fitz
+
+ if fitz.version[0] > "1.19":
+ return page.get_pixmap()
+ else:
+ return page.getPixmap()
+
+
+def fitz_insert_text(page, point, txt, fontname, fontsize):
+ import fitz
+
+ if fitz.version[0] > "1.19":
+ page.insert_text(point, txt, fontname=fontname, fontsize=fontsize)
+ else:
+ page.insertText(point, txt, fontname=fontname, fontsize=fontsize)
+
+
+def fitz_insert_image(page, rect, pixmap, overlay):
+ import fitz
+
+ if fitz.version[0] > "1.19":
+ page.insert_image(rect, pixmap=pixmap, overlay=overlay)
+ else:
+ page.insertImage(rect, pixmap=pixmap, overlay=overlay)