[IMP] sale(_management,_pdf_quote_builder),*: improve pdf quote builder
Following 116879e17e81657f48a7d11780d8d30715ecc68f a few improvements were needed to make it more complete. task-3484125 closes odoo/odoo#137522 Related: odoo/enterprise#48563 Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
This commit is contained in:
+30
-15
@@ -77,35 +77,50 @@ class BrandedFileWriter(PdfFileWriter):
|
||||
PdfFileWriter = BrandedFileWriter
|
||||
|
||||
|
||||
def merge_pdf(pdf_data, form_fields=None):
|
||||
def merge_pdf(pdf_data):
|
||||
''' Merge a collection of PDF documents in one.
|
||||
Note that the attachments are not merged.
|
||||
:param list pdf_data: a list of PDF datastrings
|
||||
:param dict form_fields: a dictionary of form fields to update in the merged PDF
|
||||
:return: a unique merged PDF datastring
|
||||
'''
|
||||
form_fields = form_fields or {}
|
||||
writer = PdfFileWriter()
|
||||
for document in pdf_data:
|
||||
reader = PdfFileReader(io.BytesIO(document), strict=False)
|
||||
has_fields = form_fields and bool(reader.getFields())
|
||||
for page in range(0, reader.getNumPages()):
|
||||
page = reader.getPage(page)
|
||||
writer.addPage(page)
|
||||
if has_fields:
|
||||
try:
|
||||
writer.update_page_form_field_values(page, form_fields)
|
||||
except AttributeError: # This method was renamed in PyPDF2 2.0
|
||||
# This is a known bug on previous version of PyPDF2, fixed in 2.11
|
||||
if not page.get('/Annots'):
|
||||
_logger.info("No fields to update in this page")
|
||||
else:
|
||||
writer.updatePageFormFieldValues(page, form_fields)
|
||||
writer.addPage(reader.getPage(page))
|
||||
|
||||
with io.BytesIO() as _buffer:
|
||||
writer.write(_buffer)
|
||||
return _buffer.getvalue()
|
||||
|
||||
def fill_form_fields_pdf(document, form_fields=None):
|
||||
''' Fill in the form fields of a PDF
|
||||
:param datastring document: a PDF datastring
|
||||
:param dict form_fields: a dictionary of form fields to update in the PDF
|
||||
:return: a filled PDF datastring
|
||||
'''
|
||||
form_fields = form_fields or {}
|
||||
writer = PdfFileWriter()
|
||||
reader = PdfFileReader(io.BytesIO(document), strict=False)
|
||||
has_fields = form_fields and bool(reader.getFields())
|
||||
if not has_fields:
|
||||
return document
|
||||
|
||||
for page in range(0, reader.getNumPages()):
|
||||
page = reader.getPage(page)
|
||||
writer.addPage(page)
|
||||
try:
|
||||
writer.update_page_form_field_values(page, form_fields)
|
||||
except AttributeError: # This method was renamed in PyPDF2 2.0
|
||||
# This is a known bug on previous version of PyPDF2, fixed in 2.11
|
||||
if not page.get('/Annots'):
|
||||
_logger.info("No fields to update in this page")
|
||||
else:
|
||||
writer.updatePageFormFieldValues(page, form_fields)
|
||||
|
||||
with io.BytesIO() as _buffer:
|
||||
writer.write(_buffer)
|
||||
return _buffer.getvalue()
|
||||
|
||||
def rotate_pdf(pdf):
|
||||
''' Rotate clockwise PDF (90°) into a new PDF.
|
||||
|
||||
Reference in New Issue
Block a user