如何在odoo 10中打印报告时获取pdf文件?

时间:2017-07-29 12:04:42

标签: openerp odoo-10

我已经使用了这段代码,但没有在odoo 10中返回空PDF文件

self.env['report'].sudo().get_pdf(self, 'equipment_management.report_gatepass')

.xml代码:

<?xml version="1.0" encoding="utf-8"?>
  <openerp>
    <data>


<report id="equipment_action"
      model="calibration.details"
      string="Gatepass "
      report_type="qweb-pdf"
      name="equipment_management.report_gatepass"
      file="equipment_management.report_gatepass"
      />

  <record id="paperformats" model="report.paperformat">
      <field name="name">European A4 low margins</field>
      <field name="default" eval="True" />
      <field name="format">A4</field>
      <field name="page_height">0</field>
      <field name="page_width">0</field>
      <field name="orientation">Portrait</field>
      <field name="margin_top">20</field>
      <field name="margin_bottom">20</field>
      <field name="margin_left">20</field>
      <field name="margin_right">20</field>
      <field name="header_line" eval="False" />
      <field name="header_spacing">10</field>
      <field name="dpi">90</field>
  </record>

  <record id="equipment_management.equipment_action" model="ir.actions.report.xml">
      <field name="paperformat_id" ref="equipment_management.paperformats" />
  </record>
  <template id="report_gatepass">
      <t t-call="report.html_container">
      <t t-set="counter" t-value="001"/>
        <t t-foreach="docs" t-as="o">
            <div class="page">
                <style>
                    .box{
                    background: black;
                    max-width: 250px;
                    text-align:center;
                    color:white;}
                </style>
                <div class="row">
                    <table width="100%" cellpadding="0px" cellspacing="0px" style="border:1px solid black">
                        <tr style="border-bottom:1px solid black">
                            <td width="20%" valign="top" align="center" padding="15px">
                                <img t-att-src="'data:image/png;base64,%s' % res_company.logo" height="100px" width="90px" />
                            </td>
                            <td width= "80%">
                                <div style="font-size:18px;"><center><b><t t-if="res_company.name" t-esc="res_company.name"/></b></center></div>
                                <div style="font-size:12px;"><center><t t-if="res_company.rml_header1" t-esc="res_company.rml_header1"/></center></div>
                                <div style="font-size:12px"><center><t t-if="res_company.street" t-esc ="res_company.street"/>  <t t-if="res_company.street2" t-esc ="res_company.street2"/>  <t t-if="res_company.state_id" t-esc ="res_company.state_id.name"/>  <t t-if="res_company.country_id" t-esc ="res_company.country_id.name"/></center></div>
                                <div style="font-size:12px"><center>Tel No.<t t-if="res_company.phone" t-esc ="res_company.phone"/>,  Fax<t t-if="res_company.fax" t-esc ="res_company.fax"/>,  Email <t t-if="res_company.email" t-esc ="res_company.email"/>,  Website <t t-if="res_company.website" t-esc ="res_company.website"/></center></div>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2" width="100%" style="font-size:24px"><center><div class="box"><strong>GATEPASS</strong></div></center></td>
                        </tr>
                        <tr style="border-bottom:1px solid black">
                            <td colspan="2" width="100%" style="font-size:14px"><center><strong>(NIWE-Returnable Material)</strong></center></td>
                        </tr>
                        <tr style="border-bottom:1px solid black">
                            <td colspan="2">
                                <table width="100%" cellpadding="0px" cellspacing="0px">
                                    <tr>
                                        <td width="25%" style="font-size:14px;line-height:300%;"><center><strong>Reference No.:</strong></center></td>
                                        <td width="25%" style="font-size:14px;line-height:300%;text-align:left;"><strong><t t-esc="o.name"/></strong></td>
                                        <td width="25%" style="font-size:14px;line-height:300%;"><center><strong>Date:</strong></center></td>
                                        <td width="25%" style="font-size:14px;line-height:300%;text-align:left"><strong><span t-field="o.date" t-field-options='{"format": "dd-MM-y"}'/></strong></td>
                                    </tr>
                                </table>
                            </td>   
                        </tr>
                        <tr style="border-bottom:1px solid black">
                            <td colspan="2">
                                <table width="100%" cellpadding="0px" cellspacing="0px" style="font-size:12px">
                                    <tr style="border-bottom:1px solid black;height:50px;">
                                        <td width="5%" style="text-align:center;border-right:1px solid black">1</td>
                                        <td width="53%" style="padding-left:5px;border-right:1px solid black">Name and Designation of the Person taking the Material</td>
                                        <td width="42%" style="padding-left:5px"><t t-if="o.responsible_person.name" t-esc="o.responsible_person.name"/></td>
                                    </tr>
                                    <tr style="border-bottom:1px solid black;height:60px;">                                         
                                        <td width="5%" style="text-align:center;border-right:1px solid black">2</td>
                                        <td width="53%" style="padding-left:5px;border-right:1px solid black">Address of supplier taking material out of NIWE Campus(with phone No.)</td>
                                        <td width="42%" style="padding-left:5px">
                                        <div style="font-size:12px"><t t-if="o.responsible_person.street" t-esc ="o.responsible_person.street"/></div> 
                                        <div><t t-if="o.responsible_person.street2" t-esc ="o.responsible_person.street2"/></div>
                                        <div><t t-if="o.responsible_person.state_id" t-esc ="o.responsible_person.state_id.name"/> </div> 
                                        <div><t t-if="o.responsible_person.country_id" t-esc ="o.responsible_person.country_id.name"/></div>
                                        <div style="font-size:12px"><t t-if="o.responsible_person.phone" t-esc ="o.responsible_person.phone"/></div> 
                                        <div><t t-if="o.responsible_person.mobile" t-esc ="o.responsible_person.mobile"/></div>
                                        </td>
                                    </tr>
                                    <tr style="border-bottom:1px solid black;height:60px;">
                                        <td width="5%" style="text-align:center;border-right:1px solid black">3</td>
                                        <td width="53%" style="padding-left:5px;border-right:1px solid black">Description of items with its serial Number and Quantity etc.,</td>
                                        <td width="42%" style="padding-left:5px">
                                            <div><b>Name:</b><t t-if="o.instrument.name" t-esc="o.instrument.name"/></div>
                                            <div><b>Serial No:</b><t t-if="o.serial" t-esc="o.serial"/></div> 
                                            <div><b>Description:</b><t t-if="o.instrument.description" t-esc="o.instrument.description"/></div> 
                                        </td>
                                    </tr>
                                    <tr style="border-bottom:1px solid black;height:60px;">
                                        <td width="5%" style="text-align:center;border-right:1px solid black">4</td>
                                        <td width="53%" style="padding-left:5px;border-right:1px solid black">Purpose for which the Material(s) in/are being taken out</td>
                                        <td width="42%" style="padding-left:5px"><t t-if="o.purpose" t-esc="o.purpose"/></td>
                                    </tr>
                                    <tr style="border-bottom:1px solid black;height:60px;">
                                        <td width="5%" style="text-align:center;border-right:1px solid black">5</td>
                                        <td width="53%" style="padding-left:5px;border-right:1px solid black">Probable date of return of Material if any</td>
                                        <td width="42%" style="padding-left:5px"><t t-if="o.date_of_return"><span t-field="o.date_of_return" t-field-options='{"format": "dd-MM-y"}'/></t></td>
                                    </tr>
                                    <tr style="border-bottom:1px solid black;height:60px;">
                                        <td width="5%" style="text-align:center;border-right:1px solid black">6</td>
                                        <td width="53%" style="padding-left:5px;border-right:1px solid black">NIWE-officer responsible for inspection Returning the Material</td>
                                        <td width="42%" style="padding-left:5px"><t t-if="o.officer.name" t-esc="o.officer.name"/></td>
                                    </tr>
                                    <tr style="height:60px;">
                                        <td width="5%" style="text-align:center;border-right:1px solid black">7</td>
                                        <td width="53%" style="padding-left:5px;border-right:1px solid black">Any other Informations</td>
                                        <td width="42%" style="padding-left:5px"><t t-if="o.other_info" t-esc="o.other_info"/></td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
                    </table>
                    <table style="font-size:12px" width="100%">
                        <tr>
                            <br/><br/><br/><br/>
                        </tr>
                        <tr>
                            <td width="35%" style="text-align:left"><span><div>Signature of the person taking the</div>
                            <div>Material out NIWE Campus</div></span></td>
                            <td width="35%"><span><div>Signature of the Officer/Material</div><div style="text-align:center">Indenter</div></span></td>
                            <td width="30%" style="text-align:right">Signature of Head/Project Leader</td>
                        </tr>
                    </table>
                    <table style="font-size:12px" width="100%">
                        <tr>
                            <br/><br/><br/><br/>
                        </tr>
                        <tr>
                            <td width="50%" style="text-align:left">Authorized Signatory</td>
                            <td width="50%" style="text-align:right"><span>Signature of Security Officer/Security 
                            <div>Guard on duty in NIWE</div></span></td>
                        </tr>
                    </table>
                </div>
            </div>
        </t>
      </t>
  </template>
</data>
</openerp>

2 个答案:

答案 0 :(得分:0)

默认情况下,Odoo报告的报告格式为PDF格式,我不知道为什么你在打印时特意要求pdf文件。下面给出了一个示例代码,用于将sales_order报告的PDF文件附加为使用.get_pdf的订单/报价附件。

示例:

@api.multi
    def print_quotation(self):
        for order in self:
            result = self.env['report'].sudo().get_pdf([order.id], 'sale.report_saleorder')
            return self.env['ir.attachment'].create({
            'name': 'Sample',
            'type': 'binary',
            'datas': base64.encodestring(result),
            'res_model': 'sale.order',
            'res_id': order.id,
            'mimetype': 'application/x-pdf'
        })

Openerp已改为Odoo。因此,如果您使用的是Odoo 10.0,请更改代码中的以下部分:

<openerp>
    <data>

    </data>
</openerp>

<odoo>
    <data>

    </data>
</odoo>

希望这可以帮到你!

答案 1 :(得分:0)

正确的语法:

pdf = request.env['report'].sudo().get_pdf([sale_order_id], 'sale.report_saleorder', data=None)