diff --git a/Dockerfile b/Dockerfile index d95dfcb4..c17f95ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,28 +13,28 @@ RUN apk add --no-cache --virtual .build-deps ca-certificates gcc linux-headers \ mariadb-dev \ freetype-dev \ # install for pymupdf - && apk add --no-cache \ - libffi-dev \ - zlib-dev \ - freetype-dev \ - make \ - build-base \ - gcc \ - jbig2dec \ - jpeg-dev \ - harfbuzz-dev \ - libc-dev \ - mupdf-dev \ - musl-dev \ - openjpeg-dev \ - swig \ - && ln -s /usr/lib/libjbig2dec.so.0 /usr/lib/libjbig2dec.so \ - && pip install pymupdf==1.23.18 \ +# && apk add --no-cache \ +# libffi-dev \ +# zlib-dev \ +# freetype-dev \ +# make \ +# build-base \ +# gcc \ +# jbig2dec \ +# jpeg-dev \ +# harfbuzz-dev \ +# libc-dev \ +# mupdf-dev \ +# musl-dev \ +# openjpeg-dev \ +# swig \ +# && ln -s /usr/lib/libjbig2dec.so.0 /usr/lib/libjbig2dec.so \ +# && pip install pymupdf==1.23.18 \ # upgrade pip && pip install --upgrade pip # setting for pymupdf -ENV PYMUPDF_SETUP_MUPDF_TESSERACT="0" +# ENV PYMUPDF_SETUP_MUPDF_TESSERACT="0" COPY ./fet2020/requirements.txt /app/requirements.txt diff --git a/fet2020/finance/utils.py b/fet2020/finance/utils.py index 7975aae5..4764e921 100644 --- a/fet2020/finance/utils.py +++ b/fet2020/finance/utils.py @@ -2,8 +2,8 @@ import datetime import io import os -import fitz from django.core.files import File +from pypdf import PdfReader, PdfWriter from .models import Bill, Wiref @@ -12,6 +12,7 @@ def generate_pdf(wiref): if wiref is not None and wiref.status == Wiref.Status.OPENED: bills = Bill.objects.filter(wiref=wiref).order_by("date") + # get data for pdf data = {} for count, elem in enumerate(bills): data.update( @@ -45,7 +46,23 @@ def generate_pdf(wiref): } ) + # write data in pdf pdf_path = os.path.join(os.path.dirname(__file__), "static/Vorlage.pdf") + reader = PdfReader(pdf_path) + writer = PdfWriter() + writer.append(reader) + + writer.update_page_form_field_values( + writer.pages[0], + data, + ) + + with io.BytesIO() as bytes_stream: + writer.write(bytes_stream) + + wiref_name = f"Abrechnungsformular-{wiref.wiref_id}.pdf" + wiref.file_field.save(wiref_name, File(bytes_stream, wiref_name)) + ''' with fitz.open(pdf_path) as doc: for page in doc: widgets = page.widgets() @@ -88,6 +105,7 @@ def generate_pdf(wiref): dist = doc.tobytes() wiref_name = f"{wiref.wiref_id}.pdf" wiref.file_field.save(wiref_name, File(io.BytesIO(dist), wiref_name)) + ''' return True diff --git a/fet2020/requirements.txt b/fet2020/requirements.txt index 5acd99ce..16d75915 100644 --- a/fet2020/requirements.txt +++ b/fet2020/requirements.txt @@ -15,7 +15,7 @@ html2text==2020.1.16 ldap3==2.9.1 mysqlclient==2.1.1 pillow==9.5.0 -pymupdf==1.23.18 +pypdf==4.0.0 reportlab<4 segno==1.6.0 xhtml2pdf==0.2.11 # dependency reportlab<4