Mentions légales du service

Skip to content
Snippets Groups Projects
Commit b4eb608f authored by Robin Tissot's avatar Robin Tissot
Browse files

Merge branch 'fix/pyvips-memory-leak' into 'develop'

Change in pyvips calls in order to prevent memory leak

See merge request !74
parents 8ff9a243 7a56eab4
No related branches found
No related tags found
1 merge request!74Change in pyvips calls in order to prevent memory leak
......@@ -67,14 +67,16 @@ class ParserDocument:
class PdfParser(ParserDocument):
def __init__(self, document, file_handler, report):
super().__init__(document, file_handler, report)
pyvips.voperation.cache_set_max(10) # 0 = no parallelisation at all; default is 1000
def validate(self):
try:
self.doc = pyvips.Image.new_from_buffer(self.file.read(), "",
dpi=300, n=-1,
access="sequential")
self.doc = pyvips.Image.pdfload_buffer(self.file.read(), n=-1, access='sequential')
except pyvips.error.Error as e:
logger.exception(e)
raise ParseError(_("Invalid pdf file."))
raise ParseError(_("Invalid PDF file."))
@property
def total(self):
......@@ -85,15 +87,14 @@ class PdfParser(ParserDocument):
def parse(self, start_at=0, override=False, user=None):
buff = self.file.read()
doc = pyvips.Image.new_from_buffer(buff, "",
dpi=300, n=-1,
access="sequential")
doc = pyvips.Image.pdfload_buffer(buff, n=-1, access='sequential')
n_pages = doc.get('n-pages')
try:
for page_nb in range(start_at, n_pages):
page = pyvips.Image.new_from_buffer(buff, "", dpi=300,
access="sequential",
page=page_nb)
page = pyvips.Image.pdfload_buffer(buff,
page=page_nb,
dpi=300,
access='sequential')
part = DocumentPart(document=self.document)
fname = '%s_page_%d.png' % (self.file.name, page_nb+1)
part.image.save(fname, ContentFile(page.write_to_buffer('.png')))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment