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



我已经使用了这段代码,但在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>

正确的语法:

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

默认情况下,Odoo报告的报告格式为PDF,我不知道为什么您在打印时特别要求pdf文件。下面给出的示例代码是使用.get_pdf将报告的PDF文件作为附件附加到订单/报价sale_order的示例代码。

例:

@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。因此,如果您使用的是Odoo10.0,请在代码中更改以下部分:

<openerp>
<data>
</data>
</openerp>

<odoo>
<data>
</data>
</odoo>

希望这对您有所帮助!

最新更新