Fix PyPDF2 3.0+ compatibility issues in snailmail

Add compatibility wrapper classes for PdfFileWriter/PdfFileReader
to support both PyPDF2 2.x and 3.x versions.

Changes:
- Add PyPDF2 compatibility classes in snailmail/models/snailmail_letter.py
- Create comprehensive documentation in doc/PATCH_PDFWRITER.md
- Support for addPage, appendPagesFromReader, and getPage methods

Resolves PyPDF2.errors.DeprecationError: PdfFileWriter is deprecated
and was removed in PyPDF2 3.0.0.

🤖 assisted by claude
This commit is contained in:
Ernad Husremovic 2025-09-02 18:54:39 +02:00
parent e8119c9226
commit 33b8eb73c9
2 changed files with 122 additions and 1 deletions

View file

@ -4,7 +4,23 @@ import re
import base64
import io
from PyPDF2 import PdfFileReader, PdfFileWriter
try:
from PyPDF2 import PdfWriter, PdfReader
# Create compatibility classes for PyPDF2 3.0+
class PdfFileWriter(PdfWriter):
def addPage(self, page):
return self.add_page(page)
def appendPagesFromReader(self, reader, after_page_append=None):
return self.append_pages_from_reader(reader, after_page_append)
class PdfFileReader(PdfReader):
def getPage(self, page_num):
return self.pages[page_num]
except ImportError:
from PyPDF2 import PdfFileWriter, PdfFileReader
from reportlab.platypus import Frame, Paragraph, KeepInFrame
from reportlab.lib.units import mm
from reportlab.lib.pagesizes import A4