request/utils: catch exceptions when reading PDF files

This commit is contained in:
Benjamin Dauvergne 2014-01-20 17:14:50 +01:00
parent 32a8a2fe31
commit 0de0bd4c23
1 changed files with 13 additions and 2 deletions

View File

@ -1,6 +1,9 @@
# -*- coding: utf-8 -*-
# https://github.com/mfenniak/pyPdf
from collections import defaultdict
import logging
logger = logging.getLogger(__name__)
from pyPdf import PdfFileReader
from pyPdf.utils import PyPdfError
@ -12,7 +15,11 @@ N_ = lambda x: x
def check_pdf(filelike):
try:
pdf_file = PdfFileReader(filelike)
try:
pdf_file = PdfFileReader(filelike)
except:
logger.exception('Invalid pdf file')
raise ValueError(N_(u'Ce fichier PDF est invalide'))
if pdf_file.isEncrypted and pdf_file.decrypt('') != 1:
raise ValueError(N_(u'Les fichiers PDF chiffrés ne sont pas acceptés.'))
pdf_file.documentInfo
@ -23,7 +30,11 @@ def fill_document_attributes_from_pdf_file(document, docfile):
try:
if docfile:
docfile.open()
pdf_file = PdfFileReader(docfile)
try:
pdf_file = PdfFileReader(docfile)
except:
logger.exception('Invalid pdf file')
raise ValueError(N_(u'Ce fichier PDF est invalide'))
if pdf_file.isEncrypted and pdf_file.decrypt('') != 1:
raise ValueError(N_(u'Les fichiers PDF chiffrés ne sont pas acceptés.'))
pdf_info = pdf_file.documentInfo