1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
--- odoo/tools/pdf.py.orig 2025-07-19 20:58:30 UTC
+++ odoo/tools/pdf.py
@@ -12,28 +12,9 @@ from reportlab.pdfgen import canvas
from reportlab.lib.units import cm
from reportlab.lib.utils import ImageReader
from reportlab.pdfgen import canvas
+from pypdf import PdfWriter as PdfFileWriter, PdfReader as PdfFileReader
-try:
- # class were renamed in PyPDF2 > 2.0
- # https://pypdf2.readthedocs.io/en/latest/user/migration-1-to-2.html#classes
- from PyPDF2 import PdfReader
- import PyPDF2
- # monkey patch to discard unused arguments as the old arguments were not discarded in the transitional class
- # https://pypdf2.readthedocs.io/en/2.0.0/_modules/PyPDF2/_reader.html#PdfReader
- class PdfFileReader(PdfReader):
- def __init__(self, *args, **kwargs):
- if "strict" not in kwargs and len(args) < 2:
- kwargs["strict"] = True # maintain the default
- kwargs = {k:v for k, v in kwargs.items() if k in ('strict', 'stream')}
- super().__init__(*args, **kwargs)
-
- PyPDF2.PdfFileReader = PdfFileReader
- from PyPDF2 import PdfFileWriter, PdfFileReader
- PdfFileWriter._addObject = PdfFileWriter._add_object
-except ImportError:
- from PyPDF2 import PdfFileWriter, PdfFileReader
-
-from PyPDF2.generic import DictionaryObject, NameObject, ArrayObject, DecodedStreamObject, NumberObject, createStringObject, ByteStringObject
+from pypdf.generic import DictionaryObject, NameObject, ArrayObject, DecodedStreamObject, NumberObject, create_string_object as createStringObject, ByteStringObject
try:
from fontTools.ttLib import TTFont
|