From 9cc39b77fcb3e5d292f037226417e1155d17edf2 Mon Sep 17 00:00:00 2001 From: Akim Juillerat Date: Fri, 21 Sep 2018 14:19:52 +0000 Subject: [PATCH] [ADD] base: split pdf merge method To be able to extend the way different PDFs are merged together closes odoo/odoo#27161 --- odoo/addons/base/models/ir_actions_report.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/odoo/addons/base/models/ir_actions_report.py b/odoo/addons/base/models/ir_actions_report.py index eedcb4e8e2d..6bb88e105f7 100644 --- a/odoo/addons/base/models/ir_actions_report.py +++ b/odoo/addons/base/models/ir_actions_report.py @@ -572,19 +572,22 @@ class IrActionsReport(models.Model): if len(streams) == 1: result = streams[0].getvalue() else: - writer = PdfFileWriter() - for stream in streams: - reader = PdfFileReader(stream) - writer.appendPagesFromReader(reader) - result_stream = io.BytesIO() - streams.append(result_stream) - writer.write(result_stream) - result = result_stream.getvalue() + result = self._merge_pdfs(streams) # We have to close the streams after PdfFileWriter's call to write() close_streams(streams) return result + def _merge_pdfs(self, streams): + writer = PdfFileWriter() + for stream in streams: + reader = PdfFileReader(stream) + writer.appendPagesFromReader(reader) + result_stream = io.BytesIO() + streams.append(result_stream) + writer.write(result_stream) + return result_stream.getvalue() + @api.multi def render_qweb_pdf(self, res_ids=None, data=None): if not data: