Odoo18-Base/odoo/tools/pdf/_pypdf.py
2025-01-06 10:57:38 +07:00

77 lines
2.0 KiB
Python

import pypdf
from pypdf import errors, filters, generic, PdfReader as _Reader, PdfWriter as _Writer
from pypdf.generic import create_string_object
__all__ = [
"PdfReader",
"PdfWriter",
"create_string_object",
"errors",
"filters",
"generic",
]
pypdf.PageObject.mergePage = lambda self, page2: self.merge_page(page2)
pypdf.PageObject.mediaBox = property(lambda self: self.mediabox)
# use lambdas (rather than copying) to allow overrides of the base method
generic.PdfObject.getObject = lambda self: self.get_object()
generic.StreamObject.getData = lambda self: self.get_data()
generic.StreamObject.setData = lambda self, data: self.set_data(data)
generic.RectangleObject.getWidth = lambda self: self.width
generic.RectangleObject.getHeight = lambda self: self.height
class PdfReader(_Reader):
@property
def isEncrypted(self):
return self.is_encrypted
def getPage(self, pageNumber):
return self.pages[pageNumber]
def getNumPages(self):
return len(self.pages)
@property
def numPages(self):
return len(self.pages)
def getDocumentInfo(self):
return self.metadata
def getFormTextFields(self):
return self.get_form_text_fields()
class PdfWriter(_Writer):
def getPage(self, pageNumber):
return self.pages[pageNumber]
def getNumPages(self):
return len(self.pages)
def addPage(self, page):
return self.add_page(page)
def appendPagesFromReader(self, reader):
return self.append_pages_from_reader(reader)
def addBlankPage(self):
return self.add_blank_page()
def addAttachment(self, fname, data):
return self.add_attachment(fname, data)
def addMetadata(self, infos):
return self.add_metadata(infos)
def cloneReaderDocumentRoot(self, reader):
return self.clone_reader_document_root(reader)
def getFields(self, *args, **kwargs):
return self.get_fields(*args, **kwargs)
def _addObject(self, *args, **kwargs):
return self._add_object(*args, **kwargs)