30 lines
977 B
Python
30 lines
977 B
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import base64
|
|
import io
|
|
|
|
from odoo import _
|
|
from odoo.exceptions import ValidationError
|
|
from odoo.tools import pdf
|
|
|
|
|
|
def _ensure_document_not_encrypted(document):
|
|
if pdf.PdfFileReader(io.BytesIO(document), strict=False).isEncrypted:
|
|
raise ValidationError(_(
|
|
"It seems that we're not able to process this pdf inside a quotation. It is either"
|
|
" encrypted, or encoded in a format we do not support."
|
|
))
|
|
|
|
|
|
def _get_form_fields_from_pdf(pdf_data):
|
|
"""Get the form text fields present in the pdf file.
|
|
|
|
:param binary pdf_data: the pdf from where we should extract the new form fields that might
|
|
need to be mapped.
|
|
:return: set of form fields that are in the pdf.
|
|
:rtype: set
|
|
"""
|
|
reader = pdf.PdfFileReader(io.BytesIO(base64.b64decode(pdf_data)), strict=False)
|
|
|
|
return set(reader.getFormTextFields() or {})
|