odoo-027 odoo13集成web打印控件lodop总结

lodop 使用步骤总结

    1. 安装lodop软件后(win/linux都有相应版本),使用 lodop 之前,需要在odoo框架中引入js
<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <template id="assets_backend" name="form address" inherit_id="web.assets_backend">
            <xpath expr="." position="inside">
                <script src="http://localhost:8000/CLodopfuncs.js"></script>
            </xpath>
        </template>
    </data>
</odoo>
    1. 在对应的form视图中,引入自定义好的lodop打印格式的js文件
<!--  存放处理后的lodop 数据 -->
<xpath expr="//sheet" position="inside">
    <field name="line_lodop_data" invisible="1"/>
</xpath>

<!--  lodop 处理格式的 js 文件 -->
<xpath expr="//sheet" position="after">
    <script src="/print_lodop/static/src/js/print.js"></script>
</xpath>
    1. 在js文件中,声明全局变量 LODOP
var LODOP; //声明为全局变量
    1. lodop 的常用格式总结:(含义及注意项在对应行后面的注释中)
// 打印模式设置
LODOP.PRINT_INIT("");   // 打印初始化(写这个防止修改打印格式后跟本地缓存的格式命名相同而不起作用)
LODOP.SET_PRINT_MODE("POS_BASEON_PAPER", true);  // 设置以纸张边缘为基点 (有些打印范围总是在纸张外的,设置这个管用调边距不管用)

// 打印的纸张设置
LODOP.SET_PRINT_PAGESIZE(2, 2100, 2970, '打印模板1-横向');  // 打印纸张方向,1是竖向,2是横向
LODOP.SET_PRINT_PAGESIZE(1, 2100, 2970, '打印模板2-竖打');  // 打印纸张方向,1是竖向,2是横向
LODOP.SET_PRINT_PAGESIZE(1, 1016, 510, 打印模板L1');  // 自定义纸张大小,方向要对,否则会怎么调试都没有效果,原来设置的为3

// 打印设置
LODOP.NewPage();  // 打印新创建一个纸张
LODOP.PRINT_SETUP();  // 打印设置,可以清除本地打印缓存的模板
LODOP.PRINT_DESIGN();  // 打印设置,调整边距等
LODOP.PREVIEW();   // 打印预览(只有在对应的有该打印机的电脑上预览才是正确的)
LODOP.PRINTA();   // 直接打印

// LODOP.SET_PRINT_STYLE 这个后面不加 A 是全局的,加 A 的是局部的
LODOP.SET_PRINT_STYLE("FontName", "黑体");   // 设置通用的字体为黑体
LODOP.SET_PRINT_STYLE("FontSize", 24);   // 设置统一的字号为 24
LODOP.SET_PRINT_STYLEA(0, "FontSize", 22);   // 设置最近一行的字号为22
LODOP.SET_PRINT_STYLEA(0, "Alignment", 2);   // 设置文本水平居中
LODOP.SET_PRINT_STYLEA(0, "Bold", 1);   // 设置字体加粗
LODOP.SET_PRINT_STYLEA(0, "TextNeatRow", true);   // 设置英文和数字可以自动换行
LODOP.SET_PRINT_STYLEA(0, "LetterSpacing", -1.5);   // 设置文本的字距间隔

// 打印的形式:文本,直线,图片,矩形,二维码
LODOP.ADD_PRINT_TEXTA("p_name", top+"cm", left+"cm", width, height, "品名:" + obj.product_name);  // 设置最近一行打印的文本格式
LODOP.ADD_PRINT_LINE("2.0cm", "0.4cm", "2.0cm", "14.5cm", 0, 2);   // 设置打印横线的格式
LODOP.ADD_PRINT_IMAGE(top1+"cm", img_left1+"cm", img_size+"cm", img_size+"cm", localPath+"/km_order_qrcode_print_lodop_v13/static/src/img/"+String(j+1)+".png");  // 设置打印图片
LODOP.ADD_PRINT_RECT(String(1.2+i*updown_gap) + "cm", String(1.6) + "cm", "16.6cm", "8.0cm", 0, 3);  // 设置打印长方形
LODOP.ADD_PRINT_BARCODE("2.8cm", "7.7cm", "2.5cm", "2.5cm", "QRCode", obj.qrcode_url);  // 设置打印二维码
LODOP.SET_PRINT_STYLEA(0, "QRCodeVersion", 5);   // 设置二维码版本为5
    1. 其他
// 获取地址栏的绝对路径(打印图片的时候,如果使用本地图片,需要使用)
function getRootPath() {
    var strFullPath = window.document.location.href;
    var strPath = window.document.location.pathname;
    var pos = strFullPath.indexOf(strPath);
    var prePath = strFullPath.substring(0, pos);
    var postPath = strPath.substring(0, strPath.substr(1).indexOf('/') + 1);
    return (prePath + postPath);
}
// 获取页面上的数据及转换格式
var json_lodop = document.getElementsByName("lodop_data")[0].innerText;
var obj = eval(json_lodop);
// js 中使用数组存放数据
var tu = new Array();
tu.push(obj.tu1);

需要注意的问题

(2023-07-12 周三 更新)

LODOP.SET_PRINT_PAGESIZE(2, 2100, 2970, '打印模板1-横向');  // 打印纸张方向,1是竖向,2是横向
LODOP.SET_PRINT_PAGESIZE(1, 2100, 2970, '打印模板2-竖打');  // 打印纸张方向,1是竖向,2是横向
  • 注意1:设置纸张大小中的 2100 和 2970 单位默认是 mm,要换算正确。
    问题:否则容易出现的问题就是:打印机打印的时候会走纸,但是纸张上没有内容。或者是实体打印机上预览的时候,可打印区域跟预想的不一样。还有可能打印机不支持自定义打印。
    解决:用实物的打印机进行预览,一般需要用哪个打印机就在那个打印机上预览;但是虚拟打印机有时候预览是好的,但是跟实物打印机还是有差别的。
    补充纸张大小的优先级顺序问题

  • 注意2:第一个参数是内容打印的方向。横向打印,意思是在纸张是竖向的情况下,旋转内容的方向,如果纸张方向是横向,纸张宽高再互换,相当于负负得正的意思。还有一种情况就是下面参考的。
    参考图解打印机的“横向打印”含义

  • 注意3:有时候修改了js 代码不能生效。
    解决:重启服务,清除缓存,使用浏览器隐私模式,重启电脑。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sapphire~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值