diff --git a/doc/setup/install.rst b/doc/setup/install.rst index 4cf9f71f..cf6d07a1 100644 --- a/doc/setup/install.rst +++ b/doc/setup/install.rst @@ -76,7 +76,7 @@ PostgreSQL server : In order to print PDF reports, you must install wkhtmltopdf_ yourself: the version of wkhtmltopdf_ available in debian repositories does not support headers and footers so it can not be installed automatically. -The recommended version is 0.12.1 and is available on `the wkhtmltopdf download page`_, +The recommended version is 0.12.5 and is available on `the wkhtmltopdf download page`_, in the archive section. Repository @@ -513,7 +513,7 @@ offcial Flectra `docker image `_ pa http://www.enterprisedb.com/products-services-training/pgdownload .. _Quilt: http://en.wikipedia.org/wiki/Quilt_(software) .. _saas: https://www.flectrahq.com -.. _the wkhtmltopdf download page: https://github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.1 +.. _the wkhtmltopdf download page: https://github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.5 .. _UAC: http://en.wikipedia.org/wiki/User_Account_Control .. _wkhtmltopdf: http://wkhtmltopdf.org .. _pip: https://pip.pypa.io diff --git a/flectra/addons/base/ir/ir_actions_report.py b/flectra/addons/base/ir/ir_actions_report.py index 4679daca..f322c0a8 100644 --- a/flectra/addons/base/ir/ir_actions_report.py +++ b/flectra/addons/base/ir/ir_actions_report.py @@ -44,6 +44,7 @@ def _get_wkhtmltopdf_bin(): # Check the presence of Wkhtmltopdf and return its version at Flectra start-up wkhtmltopdf_state = 'install' +wkhtmltopdf_dpi_zoom_ratio = False try: process = subprocess.Popen( [_get_wkhtmltopdf_bin(), '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE @@ -61,6 +62,8 @@ else: wkhtmltopdf_state = 'upgrade' else: wkhtmltopdf_state = 'ok' + if LooseVersion(version) >= LooseVersion('0.12.2'): + wkhtmltopdf_dpi_zoom_ratio = True if config['workers'] == 1: _logger.info('You need to start Flectra with at least two workers to print a pdf version of the reports.') @@ -206,7 +209,7 @@ class IrActionsReport(models.Model): :param set_viewport_size: Enable a viewport sized '1024x1280' or '1280x1024' depending of landscape arg. :return: A list of string representing the wkhtmltopdf process command args. ''' - command_args = [] + command_args = ['--disable-local-file-access'] if set_viewport_size: command_args.extend(['--viewport-size', landscape and '1024x1280' or '1280x1024']) @@ -234,14 +237,19 @@ class IrActionsReport(models.Model): else: command_args.extend(['--margin-top', str(paperformat_id.margin_top)]) + dpi = None if specific_paperformat_args and specific_paperformat_args.get('data-report-dpi'): - command_args.extend(['--dpi', str(specific_paperformat_args['data-report-dpi'])]) + dpi = int(specific_paperformat_args['data-report-dpi']) elif paperformat_id.dpi: if os.name == 'nt' and int(paperformat_id.dpi) <= 95: _logger.info("Generating PDF on Windows platform require DPI >= 96. Using 96 instead.") - command_args.extend(['--dpi', '96']) + dpi = 96 else: - command_args.extend(['--dpi', str(paperformat_id.dpi)]) + dpi = paperformat_id.dpi + if dpi: + command_args.extend(['--dpi', str(dpi)]) + if wkhtmltopdf_dpi_zoom_ratio: + command_args.extend(['--zoom', str(96.0 / dpi)]) if specific_paperformat_args and specific_paperformat_args.get('data-report-header-spacing'): command_args.extend(['--header-spacing', str(specific_paperformat_args['data-report-header-spacing'])])