[MIG] report_qweb_pdf_watermark
parent
7822e61f1d
commit
81a5c9b0e0
|
@ -6,9 +6,7 @@
|
||||||
Pdf watermark
|
Pdf watermark
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This module was written to add watermarks (backgrounds) to PDF reports.
|
This module was written to add watermarks (backgrounds) to PDF reports. Because of the way wkhtmltopdf handles headers and footers in the current versions, it is quite impossible to have a background for the complete page using HTML and CSS. That is why this module inserts the image at the PDF level.
|
||||||
|
|
||||||
This is necessary because of the way wkhtmltopdf handles headers and footers, in the current versions if quite impossible to have a background for the complete page.
|
|
||||||
|
|
||||||
Usage
|
Usage
|
||||||
=====
|
=====
|
||||||
|
@ -17,7 +15,7 @@ To use this module, you need to:
|
||||||
|
|
||||||
#. go to your report
|
#. go to your report
|
||||||
#. select a PDF or image to use as watermark. Note that resolutions and size must match, otherwise you'll have funny results
|
#. select a PDF or image to use as watermark. Note that resolutions and size must match, otherwise you'll have funny results
|
||||||
#. advanced users (members of group technical settings) can also fill in an expression that returns the data (base64 encoded) to be used as watermark
|
#. You can also fill in an expression that returns the data (base64 encoded) to be used as watermark
|
||||||
|
|
||||||
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
|
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
|
||||||
:alt: Try me on Runbot
|
:alt: Try me on Runbot
|
||||||
|
@ -43,6 +41,7 @@ Contributors
|
||||||
------------
|
------------
|
||||||
|
|
||||||
* Holger Brunn <hbrunn@therp.nl>
|
* Holger Brunn <hbrunn@therp.nl>
|
||||||
|
* Stefan Rijnhart <stefan@opener.am>
|
||||||
|
|
||||||
Do not contact contributors directly about help with questions or problems concerning this addon, but use the `community mailing list <mailto:community@mail.odoo.com>`_ or the `appropriate specialized mailinglist <https://odoo-community.org/groups>`_ for help, and the bug tracker linked in `Bug Tracker`_ above for technical issues.
|
Do not contact contributors directly about help with questions or problems concerning this addon, but use the `community mailing list <mailto:community@mail.odoo.com>`_ or the `appropriate specialized mailinglist <https://odoo-community.org/groups>`_ for help, and the bug tracker linked in `Bug Tracker`_ above for technical issues.
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
{
|
{
|
||||||
"name": "Pdf watermark",
|
"name": "Pdf watermark",
|
||||||
"version": "9.0.1.0.0",
|
"version": "10.0.1.0.0",
|
||||||
"author": "Therp BV,Odoo Community Association (OCA)",
|
"author": "Therp BV,Odoo Community Association (OCA)",
|
||||||
"license": "AGPL-3",
|
"license": "AGPL-3",
|
||||||
"category": "Reporting",
|
"category": "Reporting",
|
|
@ -1,6 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<openerp>
|
<odoo>
|
||||||
<data>
|
|
||||||
<report
|
<report
|
||||||
id="demo_report"
|
id="demo_report"
|
||||||
string="Demo report"
|
string="Demo report"
|
||||||
|
@ -26,5 +25,4 @@
|
||||||
</t>
|
</t>
|
||||||
</t>
|
</t>
|
||||||
</template>
|
</template>
|
||||||
</data>
|
</odoo>
|
||||||
</openerp>
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# © 2016 Therp BV <http://therp.nl>
|
# © 2016 Therp BV <http://therp.nl>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||||
from openerp import fields, models
|
from odoo import fields, models
|
||||||
|
|
||||||
|
|
||||||
class IrActionsReportXml(models.Model):
|
class IrActionsReportXml(models.Model):
|
||||||
|
|
|
@ -7,32 +7,25 @@ from pyPdf import PdfFileWriter, PdfFileReader
|
||||||
from pyPdf.utils import PdfReadError
|
from pyPdf.utils import PdfReadError
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from StringIO import StringIO
|
from StringIO import StringIO
|
||||||
from openerp import api, models, tools
|
from odoo import api, models, tools
|
||||||
logger = getLogger(__name__)
|
logger = getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class Report(models.Model):
|
class Report(models.Model):
|
||||||
_inherit = 'report'
|
_inherit = 'report'
|
||||||
|
|
||||||
@api.v7
|
@api.model
|
||||||
def get_pdf(
|
def get_pdf(self, docids, report_name, html=None, data=None):
|
||||||
self, cr, uid, ids, report_name, html=None, data=None, context=None
|
|
||||||
):
|
|
||||||
# pylint: disable=R8110
|
|
||||||
# this override cannot be done in v8 api
|
|
||||||
result = super(Report, self).get_pdf(
|
result = super(Report, self).get_pdf(
|
||||||
cr, uid, ids, report_name, html=html, data=data,
|
docids, report_name, html=html, data=data)
|
||||||
context=context
|
report = self._get_report_from_name(report_name)
|
||||||
)
|
|
||||||
report = self._get_report_from_name(cr, uid, report_name)
|
|
||||||
watermark = None
|
watermark = None
|
||||||
if report.pdf_watermark:
|
if report.pdf_watermark:
|
||||||
watermark = b64decode(report.pdf_watermark)
|
watermark = b64decode(report.pdf_watermark)
|
||||||
else:
|
else:
|
||||||
env = api.Environment(cr, uid, context)
|
|
||||||
watermark = tools.safe_eval(
|
watermark = tools.safe_eval(
|
||||||
report.pdf_watermark_expression or 'None',
|
report.pdf_watermark_expression or 'None',
|
||||||
dict(env=env, docs=env[report.model].browse(ids)),
|
dict(env=self.env, docs=self.env[report.model].browse(docids)),
|
||||||
)
|
)
|
||||||
if watermark:
|
if watermark:
|
||||||
watermark = b64decode(watermark)
|
watermark = b64decode(watermark)
|
||||||
|
|
|
@ -22,11 +22,8 @@ class TestReportQwebPdfWatermark(TransactionCase):
|
||||||
self._test_report_images(3)
|
self._test_report_images(3)
|
||||||
|
|
||||||
def _test_report_images(self, number):
|
def _test_report_images(self, number):
|
||||||
pdf = self.registry['report'].get_pdf(
|
pdf = self.env['report'].get_pdf(
|
||||||
self.cr,
|
|
||||||
self.uid,
|
|
||||||
self.env['res.users'].search([]).ids,
|
self.env['res.users'].search([]).ids,
|
||||||
'report_qweb_pdf_watermark.demo_report_view',
|
'report_qweb_pdf_watermark.demo_report_view',
|
||||||
context={}
|
|
||||||
)
|
)
|
||||||
self.assertEqual(pdf.count('/Subtype /Image'), number)
|
self.assertEqual(pdf.count('/Subtype /Image'), number)
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<openerp>
|
<odoo>
|
||||||
<data>
|
|
||||||
<record id="act_report_xml_view" model="ir.ui.view">
|
<record id="act_report_xml_view" model="ir.ui.view">
|
||||||
<field name="model">ir.actions.report.xml</field>
|
<field name="model">ir.actions.report.xml</field>
|
||||||
<field name="inherit_id" ref="base.act_report_xml_view" />
|
<field name="inherit_id" ref="base.act_report_xml_view" />
|
||||||
|
@ -11,5 +10,4 @@
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</odoo>
|
||||||
</openerp>
|
|
||||||
|
|
Loading…
Reference in New Issue