<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[基于Lodop的报表打印模块]]></title><description><![CDATA[<p dir="auto">前段时间写了个小模块，来解决OE中报表打印不方便的问题。<br />借鉴了 @buke 兄的 openerp-web-pdf-preview-print 模块的部分代码。<br /><br />介绍：<br />Lodop是一款优秀的国产打印控件(activeX):  [检测到链接无效，已移除] <br />ActiveX只支持windows，所以本控件不适用linux，mac osx.<br /><br />模块使用mako标签，html的模版。<br /><br />我只贴代码，不加附件，这样各位会体会更深。<br /><br />模块结构：<br />[attach=1]<br /><br /><br /><strong>openerp</strong>.py<br /><br /></p>
<pre><code>&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;quot;name&amp;quot;: &amp;quot;Lodop控件报表&amp;quot;,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;quot;category&amp;quot;: &amp;quot;web&amp;quot;,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;quot;description&amp;quot;:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Lodop控件模块, 针对于报表。&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;quot;&amp;quot;&amp;quot;,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;quot;version&amp;quot;: &amp;quot;6.0.5.6&amp;quot;,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;quot;depends&amp;quot;: &amp;#91;],&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;quot;js&amp;quot;: [&amp;quot;static/lib/Lodop6.145/*.js&amp;quot;, &amp;quot;static/js/*.js&amp;quot;],&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;#039;active&amp;#039;:True,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;#039;installable&amp;#039;: True,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;#039;active&amp;#039;: False,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;#039;application&amp;#039;:False,&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;
</code></pre>
<p dir="auto"><br /><br /><br />服务端的controller（没啥一样的，继续借鉴@buke）:<br /><br /></p>
<pre><code>&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import openerp.addons.web.http as openerpweb&lt;br /&gt;from openerp.addons.web.controllers.main import View&lt;br /&gt;&lt;br /&gt;import urllib2&lt;br /&gt;import simplejson&lt;br /&gt;import base64&lt;br /&gt;import time&lt;br /&gt;import zlib&lt;br /&gt;import cPickle&lt;br /&gt;import hashlib&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class LodopReport(View):&lt;br /&gt;&amp;nbsp; &amp;nbsp; _cp_path = &amp;quot;/web/lodop/report&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; POLLING_DELAY = 0.25&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; @openerpweb.jsonrequest&lt;br /&gt;&amp;nbsp; &amp;nbsp; def index(self, req, action):&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; action = simplejson.loads(action)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_srv = req.session.proxy(&amp;quot;report&amp;quot;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; context = dict(req.context)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; context.update(action[&amp;quot;context&amp;quot;])&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_data = {}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_ids = context[&amp;quot;active_ids&amp;quot;]&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#039;report_type&amp;#039; in action:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_data&amp;#91;&amp;#039;report_type&amp;#039;] = action&amp;#91;&amp;#039;report_type&amp;#039;]&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#039;datas&amp;#039; in action:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if &amp;#039;ids&amp;#039; in action&amp;#91;&amp;#039;datas&amp;#039;]:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_ids = action&amp;#91;&amp;#039;datas&amp;#039;].pop(&amp;#039;ids&amp;#039;)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_data.update(action&amp;#91;&amp;#039;datas&amp;#039;])&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_id = report_srv.report(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; req.session._db, req.session._uid, req.session._password,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; action[&amp;quot;report_name&amp;quot;], report_ids,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_data, context)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_struct = None&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while True:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_struct = report_srv.report_get(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; req.session._db, req.session._uid, req.session._password, report_id)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if report_struct[&amp;quot;state&amp;quot;]:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; time.sleep(self.POLLING_DELAY)&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report = base64.b64decode(report_struct&amp;#91;&amp;#039;result&amp;#039;])&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return dict(report = report)&lt;br /&gt;&lt;br /&gt;
</code></pre>
<p dir="auto"><br /><br /><br />主要部分是js部分：<br /></p>
<pre><code>&lt;br /&gt;&lt;br /&gt;openerp.fg_lodop = function(instance) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; instance.web.ActionManager = instance.web.ActionManager.extend({&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; init: function (parent, action) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this._super(parent);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //activex的标签放在页面里。&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var obj_string = &amp;#039;&amp;lt;object style=&amp;quot;width:0px;height:0px;&amp;quot; id=&amp;quot;LODOP_OB&amp;quot; classid=&amp;quot;clsid:2105C259-1E0C-4534-8141-A753534CB4CA&amp;quot; width=0 height=0&amp;gt;&amp;lt;embed id=&amp;quot;LODOP_EM&amp;quot; type=&amp;quot;application/x-print-lodop&amp;quot; width=0 height=0 pluginspage=&amp;quot;/fg_lodop/static/lib/lodop6.145/install_lodop32.exe&amp;quot;&amp;gt;&amp;lt;/embed&amp;gt;&amp;lt;/object&amp;gt;&amp;#039;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $(obj_string).appendTo(&amp;quot;body&amp;quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ir_actions_report_xml: function(action, options) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var self = this;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; instance.web.blockUI();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return instance.web.pyeval.eval_domains_and_contexts({&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; contexts: [action.context],&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; domains: &amp;#91;]&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }).then(function(res) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; action = _.clone(action);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; action.context = res.context;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var os = navigator.platform || &amp;quot;Unknown OS&amp;quot;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; linux = os.indexOf(&amp;quot;Linux&amp;quot;) &amp;gt; -1;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mac = os.indexOf(&amp;quot;Mac&amp;quot;) &amp;gt; -1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.rpc(&amp;quot;/web/lodop/report&amp;quot;, {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; action: JSON.stringify(action)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }).done(function(result) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(result.error){&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; instance.web.unblockUI();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.dialog_stop();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; instance.web.unblockUI();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.dialog_stop();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(linux || mac) { &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //不支持linux, mac, 这点没考虑过。&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_window=window.open(&amp;#039;&amp;#039;,&amp;#039;&amp;#039;,&amp;#039;width=600,height=500&amp;#039;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_window.document.write(result.report);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; report_window.focus();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //do magic.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 等会解释这个由来。&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; format_obj = action.attachment.split(&amp;#039;,&amp;#039;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LODOP=getLodop(document.getElementById(&amp;#039;LODOP&amp;#039;),document.getElementById(&amp;#039;LODOP_EM&amp;#039;));&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LODOP.SET_LICENSES(&amp;quot;&amp;quot;,&amp;quot;xxxxxx&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;);&amp;nbsp; //不设置授权码照样可以打印。&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LODOP.PRINT_INIT(&amp;quot;FG ERP Order&amp;quot;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LODOP.SET_PRINT_PAGESIZE(1, 2300, 1390, &amp;#039;fg_lodop_print_job&amp;#039;); //公司用的各种单据的打印纸都是统一规格，所以写死了。&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var tables = $.parseHTML(result.report);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $.each( tables, function( i, el ) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(el.nodeName == &amp;quot;TABLE&amp;quot;){&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LODOP.ADD_PRINT_TABLE(format_obj[0],format_obj[1],format_obj[2], format_obj[3], el.outerHTML);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LODOP.NEWPAGE();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LODOP.PREVIEW();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;br /&gt;&amp;nbsp; &amp;nbsp; });&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;
</code></pre>
<p dir="auto"><br /><br /><br />安装后，本模块将会替代系统默认的报表动作。<br /><br />使用方法：<br /><br /></p>
<pre><code>&lt;br /&gt;&lt;br /&gt;&amp;lt;report auto=&amp;quot;False&amp;quot; id=&amp;quot;report_fg_sale_cust_order_html&amp;quot; model=&amp;quot;fg_sale.cust.order&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; name=&amp;quot;fg_sale.cust.order.html&amp;quot; rml=&amp;quot;fg_sale/report/cust_order.html&amp;quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string=&amp;quot;定制单&amp;quot; report_type=&amp;quot;mako2html&amp;quot; attachment=&amp;quot;0mm,0mm,220mm,98mm&amp;quot;/&amp;gt;&lt;br /&gt;&lt;br /&gt;
</code></pre>
<p dir="auto"><br /><br />因为需要确定打印的范围，所以借用了attachment这个属性----实在是不想修改系统的rng文件了。<br />* 这就是刚才代码 “format_obj = action.attachment.split(',');” 这一行的原因。<br /><br /><br />mako的html模版大概是这样的：<br /><br /><br /></p>
<pre><code>&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&amp;nbsp; &amp;nbsp; 		% for o in objects:&lt;br /&gt;&amp;nbsp; &amp;nbsp; 		&amp;nbsp; &amp;nbsp; % if o.state == &amp;#039;review&amp;#039;:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;table border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;2&amp;quot; cellpadding=&amp;quot;2&amp;quot; bordercolor=&amp;quot;#000000&amp;quot; style=&amp;quot;font-size:14px;width:850px;&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;thead&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;8&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span style=&amp;quot;font-size:18px;font-weight:bold;&amp;quot;&amp;gt;定制清单&amp;nbsp; &amp;lt;/span&amp;gt; ${ o.name }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;1&amp;quot;&amp;nbsp; height=&amp;quot;18&amp;quot;&amp;gt;客户名称: &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ${ o.partner_id.name }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;nbsp; height=&amp;quot;18&amp;quot;&amp;gt;要求到货日期: ${ o.date_arrival_req or &amp;#039;&amp;#039; }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;4&amp;quot; height=&amp;quot;18&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 交货日期: ${ o.date_delivery or &amp;#039;&amp;#039; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; % if o.contact or o.phone or o.delivery_addr:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;1&amp;quot;&amp;gt;联系人: ${ o.contact or &amp;#039;&amp;#039; }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;联系电话: ${ o.phone or &amp;#039;&amp;#039; }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;交货地址: ${ o.delivery_addr or &amp;#039;&amp;#039; }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; % endif&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;1&amp;quot;&amp;gt;已付金额: ${ o.amount_paid or &amp;#039;&amp;#039; }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;付款方式: ${ o.amount_paid_method or &amp;#039;&amp;#039; }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;发票: &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; % if o.invoice_type == &amp;#039;common&amp;#039;:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 普通发票&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; % elif o.invoice_type == &amp;#039;va&amp;#039;:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 增值发票&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; % else:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 暂不开票&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; % endif&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;1&amp;quot;&amp;gt;定制版面:&amp;nbsp; ${ o.client }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;运费承担方: ${ o.delivery_fee or &amp;#039;&amp;#039; }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;送货方式: ${ o.delivery_method or &amp;#039;&amp;#039; }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tr height=&amp;quot;18&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 	&amp;nbsp; &amp;nbsp;  &amp;lt;td style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;品名&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 	&amp;nbsp; &amp;nbsp;  &amp;lt;td style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;数量(只)&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;开票价&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;版费&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;已发货&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;小计&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;附注&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/thead&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tbody&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; % for line in o.order_line:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td height=&amp;quot;18&amp;quot; style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot; &amp;gt;${ line.product_id.name }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td width=&amp;quot;10%&amp;quot; height=&amp;quot;18&amp;quot; style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot;&amp;gt;${ line.product_uom_qty }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td width=&amp;quot;10%&amp;quot; height=&amp;quot;18&amp;quot; style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot; &amp;gt;${ line.unit_price }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td width=&amp;quot;10%&amp;quot; height=&amp;quot;18&amp;quot; style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot;&amp;gt;${ line.cust_price }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td width=&amp;quot;10%&amp;quot; height=&amp;quot;18&amp;quot; style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot;&amp;gt;${ line.delivered and &amp;#039;是&amp;#039; or &amp;#039;否&amp;#039; }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td width=&amp;quot;10%&amp;quot; height=&amp;quot;18&amp;quot; style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot;&amp;gt;${ line.subtotal_amount }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td width=&amp;quot;20%&amp;quot; height=&amp;quot;18&amp;quot; style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot;&amp;gt;${ line.note or &amp;#039;&amp;#039; }&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; % endfor&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tbody&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tfoot&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;1&amp;quot; style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;text-align:right;&amp;quot; tdata=&amp;quot;allSum&amp;quot; format=&amp;quot;#,##0.00&amp;quot; tindex=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 共计: #&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;4&amp;quot; style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot; tdata=&amp;quot;allSum&amp;quot; format=&amp;quot;UpperMoney&amp;quot; tindex=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;BORDER-COLLAPSE: collapse; BORDER:groove 1px;&amp;quot; tdata=&amp;quot;subSum&amp;quot; format=&amp;quot;#,##0.00&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 本页小计: #&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 开单人: ${ o&amp;#91;&amp;#039;user_id&amp;#039;]&amp;#91;&amp;#039;name&amp;#039;] } &amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 开单日期：${ o.date_order } &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 业务部确认: ${ o&amp;#91;&amp;#039;confirmer_id&amp;#039;]&amp;#91;&amp;#039;name&amp;#039;] }&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 业务经办人：${ o.employee_id.name }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td colspan=&amp;quot;1&amp;quot; style=&amp;quot;font-size:14px;height:18px;text-align:right;&amp;quot;&amp;gt;第&amp;lt;span tdata=&amp;quot;pageNO&amp;quot; format=&amp;quot;#&amp;quot;&amp;gt;#&amp;lt;/span&amp;gt;页-共&amp;lt;span tdata=&amp;quot;pageCount&amp;quot; format=&amp;quot;#&amp;quot;&amp;gt;#&amp;lt;/span&amp;gt;页&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tfoot&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/table&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; % endif&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; % endfor&lt;br /&gt;
</code></pre>
<p dir="auto"><br /><br /><br />注意：<br />1. 模版只包含table标签，支持多table（多单打印）。<br />2. lodop的使用方法请参看其文档。<br /><br /><br />大功告成。<br /><br />献丑了。如需改进，有问题请 @杨振宇_<br /><br /><br /><br /></p>
]]></description><link>https://odoo.net.cn/topic/2384/基于lodop的报表打印模块</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 20:42:55 GMT</lastBuildDate><atom:link href="https://odoo.net.cn/topic/2384.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 Jul 2013 11:00:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sat, 15 Feb 2014 09:21:40 GMT]]></title><description><![CDATA[<p dir="auto">首先，非常感谢 LZ 的 分享大作。 刚好在弄打印这块，而且还真的是要用lodop来做这个。 所以受益匪浅。<br />然后，这里有个问题，想跟LZ请教下， <br /><br />在使用以下我的sample.mako模板代码时，发现maktohtml2html.py文件中的 方法 format_body中，有一个问题。<br /><br />body[:-1]得到是一个空的list， 因为 body = html.findall("body"), 对于一个Html文件来说， &lt;body&gt;标签只有1个。 所以这个我觉得是个问题，不知道LZ是什么解决的？ 我一个小打算，是直接提bug，修改openerp的源码来搞定这件事情。 不知道还有其他的方法没有？<br /><br />openerp 的源码部分：<br /><br />    def format_body(self, html):<br />        body = html.findall('body')<br />        body_list = []<br />        footer =  self.format_footer(body[-1].getchildren())<br />        for b in body[:-1]:<br />            body_list.append(etree.tostring(b).replace('\t', '').replace('\n',''))<br /><br /><br />mako文件的代码。（文件名不是html，在openerp报告中没有问题。）<br />&lt;html&gt;<br />&lt;head&gt;<br />	&lt;title&gt;test mako template&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br /><br />	&lt;table&gt;<br />		order_number: 12345<br />	&lt;/table&gt;<br /><br />&lt;footer&gt;<br />&lt;/footer&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
]]></description><link>https://odoo.net.cn/post/17345</link><guid isPermaLink="true">https://odoo.net.cn/post/17345</guid><dc:creator><![CDATA[joe_shenzhen]]></dc:creator><pubDate>Sat, 15 Feb 2014 09:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Thu, 25 Jul 2013 02:05:28 GMT]]></title><description><![CDATA[<p dir="auto">跟rml 区别不是很大的样子</p>
]]></description><link>https://odoo.net.cn/post/15347</link><guid isPermaLink="true">https://odoo.net.cn/post/15347</guid><dc:creator><![CDATA[codefans]]></dc:creator><pubDate>Thu, 25 Jul 2013 02:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Mon, 08 Jul 2013 01:08:55 GMT]]></title><description><![CDATA[<p dir="auto">[quote author=mrshelly link=topic=7397.msg16915#msg16915 date=1373239851]<br />ActiveX 代码不开源的哦?<br />会不会存在一些安全漏洞?<br />我看API有一些关于硬件操作的东西...<br />[/quote]<br /><br />未知。<br />这个控件用两年了，本想自己写一个，但是这个确实很方便。<br />如果不是为了进行硬件操作，activex就省了。 <img src="https://odoo.net.cn/assets/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=fc0dbd43397" class="not-responsive emoji emoji-emoji-one emoji--winking_face" style="height:23px;width:auto;vertical-align:middle" title=";D" alt="😉" /></p>
]]></description><link>https://odoo.net.cn/post/15123</link><guid isPermaLink="true">https://odoo.net.cn/post/15123</guid><dc:creator><![CDATA[d_yang]]></dc:creator><pubDate>Mon, 08 Jul 2013 01:08:55 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sun, 07 Jul 2013 23:30:51 GMT]]></title><description><![CDATA[<p dir="auto">ActiveX 代码不开源的哦?<br />会不会存在一些安全漏洞?<br />我看API有一些关于硬件操作的东西...</p>
]]></description><link>https://odoo.net.cn/post/15122</link><guid isPermaLink="true">https://odoo.net.cn/post/15122</guid><dc:creator><![CDATA[mrshelly]]></dc:creator><pubDate>Sun, 07 Jul 2013 23:30:51 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sat, 06 Jul 2013 16:00:45 GMT]]></title><description><![CDATA[<p dir="auto">mark，马上研究报表开发了</p>
]]></description><link>https://odoo.net.cn/post/15119</link><guid isPermaLink="true">https://odoo.net.cn/post/15119</guid><dc:creator><![CDATA[qq342406169]]></dc:creator><pubDate>Sat, 06 Jul 2013 16:00:45 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sat, 06 Jul 2013 14:29:16 GMT]]></title><description><![CDATA[<p dir="auto">先留记号，慢慢研究，谢谢分享 ～</p>
]]></description><link>https://odoo.net.cn/post/15117</link><guid isPermaLink="true">https://odoo.net.cn/post/15117</guid><dc:creator><![CDATA[wangbuke]]></dc:creator><pubDate>Sat, 06 Jul 2013 14:29:16 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sat, 06 Jul 2013 14:07:07 GMT]]></title><description><![CDATA[<p dir="auto">[quote author=d_yang link=topic=7397.msg16907#msg16907 date=1373119368]<br />[quote author=Joshua link=topic=7397.msg16902#msg16902 date=1373109235]<br />mako模板能重复表头么？<br />[/quote]<br /><br />lodop里，addprinttable方法可以把table里面 &lt;theader&gt;标签转为你说的，表头，tfoot标签转换为页脚。<br />tbody里，就是明细部分了，自动根据页面高度分页。<br /><br />另外lodop还支持一些标签，比如，总页数，当前页数，数字大写转换，统计，等。<br />[/quote]<br /><br />好东西。谢谢@d_yang分享。</p>
]]></description><link>https://odoo.net.cn/post/15116</link><guid isPermaLink="true">https://odoo.net.cn/post/15116</guid><dc:creator><![CDATA[Joshua]]></dc:creator><pubDate>Sat, 06 Jul 2013 14:07:07 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sat, 06 Jul 2013 14:04:51 GMT]]></title><description><![CDATA[<p dir="auto">[quote author=ccdos link=topic=7397.msg16901#msg16901 date=1373109017]<br />又见大作<br />[/quote]<br /><br />不敢，自己方便，也希望与人方便。</p>
]]></description><link>https://odoo.net.cn/post/15115</link><guid isPermaLink="true">https://odoo.net.cn/post/15115</guid><dc:creator><![CDATA[d_yang]]></dc:creator><pubDate>Sat, 06 Jul 2013 14:04:51 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sat, 06 Jul 2013 14:02:48 GMT]]></title><description><![CDATA[<p dir="auto">[quote author=Joshua link=topic=7397.msg16902#msg16902 date=1373109235]<br />mako模板能重复表头么？<br />[/quote]<br /><br />lodop里，addprinttable方法可以把table里面 &lt;theader&gt;标签转为你说的，表头，tfoot标签转换为页脚。<br />tbody里，就是明细部分了，自动根据页面高度分页。<br /><br />另外lodop还支持一些标签，比如，总页数，当前页数，数字大写转换，统计，等。</p>
]]></description><link>https://odoo.net.cn/post/15114</link><guid isPermaLink="true">https://odoo.net.cn/post/15114</guid><dc:creator><![CDATA[d_yang]]></dc:creator><pubDate>Sat, 06 Jul 2013 14:02:48 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sat, 06 Jul 2013 13:56:48 GMT]]></title><description><![CDATA[<p dir="auto">[quote author=dquo link=topic=7397.msg16900#msg16900 date=1373108877]<br />ActiveX只支持windows，所以本控件不适用linux，mac osx.<br />是不是指客户端只能在WINDOWS上,还是服务器必须在WINDOWS上?<br />[/quote]<br />sorry, 没说清楚。<br />客户端不支持非Windows.</p>
]]></description><link>https://odoo.net.cn/post/15113</link><guid isPermaLink="true">https://odoo.net.cn/post/15113</guid><dc:creator><![CDATA[d_yang]]></dc:creator><pubDate>Sat, 06 Jul 2013 13:56:48 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sat, 06 Jul 2013 13:53:45 GMT]]></title><description><![CDATA[<p dir="auto">重复表头是？<br /><br />是由lodop完成的。页眉页脚。</p>
]]></description><link>https://odoo.net.cn/post/15112</link><guid isPermaLink="true">https://odoo.net.cn/post/15112</guid><dc:creator><![CDATA[d_yang]]></dc:creator><pubDate>Sat, 06 Jul 2013 13:53:45 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sat, 06 Jul 2013 11:13:55 GMT]]></title><description><![CDATA[<p dir="auto">mako模板能重复表头么？</p>
]]></description><link>https://odoo.net.cn/post/15109</link><guid isPermaLink="true">https://odoo.net.cn/post/15109</guid><dc:creator><![CDATA[Joshua]]></dc:creator><pubDate>Sat, 06 Jul 2013 11:13:55 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sat, 06 Jul 2013 11:10:17 GMT]]></title><description><![CDATA[<p dir="auto">又见大作</p>
]]></description><link>https://odoo.net.cn/post/15108</link><guid isPermaLink="true">https://odoo.net.cn/post/15108</guid><dc:creator><![CDATA[ccdos]]></dc:creator><pubDate>Sat, 06 Jul 2013 11:10:17 GMT</pubDate></item><item><title><![CDATA[Reply to 基于Lodop的报表打印模块 on Sat, 06 Jul 2013 11:07:57 GMT]]></title><description><![CDATA[<p dir="auto">ActiveX只支持windows，所以本控件不适用linux，mac osx.<br />是不是指客户端只能在WINDOWS上,还是服务器必须在WINDOWS上?</p>
]]></description><link>https://odoo.net.cn/post/15107</link><guid isPermaLink="true">https://odoo.net.cn/post/15107</guid><dc:creator><![CDATA[dquo]]></dc:creator><pubDate>Sat, 06 Jul 2013 11:07:57 GMT</pubDate></item></channel></rss>