odoo16使用Wkhtmltopdf打印pdf

一、
定义纸张

   <record id="paperformat_page_80width_40height" model="report.paperformat">
        <field name="name">80*40</field>
        <field name="default" eval="False"/>
        <field name="disable_shrinking" eval="True"/>
        <field name="format">custom</field>
        <field name="page_height">40</field>
        <field name="page_width">80</field>
        <field name="orientation">Portrait</field>
        <field name="margin_top">2</field>
        <field name="margin_bottom">1</field>
        <field name="margin_left">2</field>
        <field name="margin_right">0</field>
        <field name="dpi">96</field>
    </record>

定义report_action

<record id="record_id" model="ir.actions.report">
    <field name="name">发货标签</field>
    <field name="model">模型</field>
    <field name="report_type">qweb-pdf</field>
    <field name="report_name">模块.template_id</field>
    <field name="report_file">模块.template_id</field>
    <field name="print_report_name">'标签 - %s' % (object.name)</field>
    <field name="binding_model_id" ref="model_模型(_)"/>
    <field name="binding_type">report</field>
    <field name="paperformat_id" ref="纸张_id"/>
</record>

定义模板

        <template id="report_deliver_label_pdf">
            <t t-call="web.basic_layout">
                <t t-foreach="docs" t-as="doc">
                    <t t-if="doc.label_lines" t-foreach="doc.label_lines" t-as="lline">
                        <div class="page" style="width:200pt;height:36mm;">
                           开始你的样式布局
                        </div>
                    </t>
                </t>
            </t>
        </template>

此时已经可以显示打印按钮了
在这里插入图片描述

二、
实现自定义返回的数据

class A(models.AbstractModel):
    _name = 'report.模块名.template_id'
    _description = '标签打印'

	# 重写渲染的数据
    @api.model
    def _get_report_values(self, docids, data=None):
        docs = self.env['模型b'].browse(docids)
        return {
            'doc_ids': docids,
            'data': data,
            'docs': docs,
            '_get_produce_date': self._get_produce_date,
        }

    def _get_produce_date(self, label_id):
        if not label_id:
            return ''
        return self.env['模型c'].search([('name', '=', label_id)]).produce_date or ''

在XML中使用
<td style="width:185pt;vertical-align:middle;padding-left:3pt;font-size:8pt;">DATE:<t t-esc="_get_produce_date(lline.label_code)"/></td>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值