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 \
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

View File

@@ -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

View File

@@ -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