change pymupdf to pypdf

This commit is contained in:
2024-01-28 10:31:01 +00:00
parent 89eb72f8c1
commit 327b84d137
3 changed files with 38 additions and 20 deletions

View File

@@ -13,28 +13,28 @@ RUN apk add --no-cache --virtual .build-deps ca-certificates gcc linux-headers \
mariadb-dev \ mariadb-dev \
freetype-dev \ freetype-dev \
# install for pymupdf # install for pymupdf
&& apk add --no-cache \ # && apk add --no-cache \
libffi-dev \ # libffi-dev \
zlib-dev \ # zlib-dev \
freetype-dev \ # freetype-dev \
make \ # make \
build-base \ # build-base \
gcc \ # gcc \
jbig2dec \ # jbig2dec \
jpeg-dev \ # jpeg-dev \
harfbuzz-dev \ # harfbuzz-dev \
libc-dev \ # libc-dev \
mupdf-dev \ # mupdf-dev \
musl-dev \ # musl-dev \
openjpeg-dev \ # openjpeg-dev \
swig \ # swig \
&& ln -s /usr/lib/libjbig2dec.so.0 /usr/lib/libjbig2dec.so \ # && ln -s /usr/lib/libjbig2dec.so.0 /usr/lib/libjbig2dec.so \
&& pip install pymupdf==1.23.18 \ # && pip install pymupdf==1.23.18 \
# upgrade pip # upgrade pip
&& pip install --upgrade pip && pip install --upgrade pip
# setting for pymupdf # setting for pymupdf
ENV PYMUPDF_SETUP_MUPDF_TESSERACT="0" # ENV PYMUPDF_SETUP_MUPDF_TESSERACT="0"
COPY ./fet2020/requirements.txt /app/requirements.txt COPY ./fet2020/requirements.txt /app/requirements.txt

View File

@@ -2,8 +2,8 @@ import datetime
import io import io
import os import os
import fitz
from django.core.files import File from django.core.files import File
from pypdf import PdfReader, PdfWriter
from .models import Bill, Wiref from .models import Bill, Wiref
@@ -12,6 +12,7 @@ def generate_pdf(wiref):
if wiref is not None and wiref.status == Wiref.Status.OPENED: if wiref is not None and wiref.status == Wiref.Status.OPENED:
bills = Bill.objects.filter(wiref=wiref).order_by("date") bills = Bill.objects.filter(wiref=wiref).order_by("date")
# get data for pdf
data = {} data = {}
for count, elem in enumerate(bills): for count, elem in enumerate(bills):
data.update( 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") 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: with fitz.open(pdf_path) as doc:
for page in doc: for page in doc:
widgets = page.widgets() widgets = page.widgets()
@@ -88,6 +105,7 @@ def generate_pdf(wiref):
dist = doc.tobytes() dist = doc.tobytes()
wiref_name = f"{wiref.wiref_id}.pdf" wiref_name = f"{wiref.wiref_id}.pdf"
wiref.file_field.save(wiref_name, File(io.BytesIO(dist), wiref_name)) wiref.file_field.save(wiref_name, File(io.BytesIO(dist), wiref_name))
'''
return True return True

View File

@@ -15,7 +15,7 @@ html2text==2020.1.16
ldap3==2.9.1 ldap3==2.9.1
mysqlclient==2.1.1 mysqlclient==2.1.1
pillow==9.5.0 pillow==9.5.0
pymupdf==1.23.18 pypdf==4.0.0
reportlab<4 reportlab<4
segno==1.6.0 segno==1.6.0
xhtml2pdf==0.2.11 # dependency reportlab<4 xhtml2pdf==0.2.11 # dependency reportlab<4