lodop实现直接打印,打印纸没有传送到打印内容底部

lodop官网https://www.lodop.net/LodopDemo.html

1.下载lodop资源,安装

2.将LodopFuncs.js文件复制到vue项目中
注意在js文件最下部添加一行代码,进行导出:export default getLodop;
还有这种写法是错误的,在html页面中可以,但是在vue项目中会报错

修改为
3.vue页面引入LodopFuncs.js  

4.页面demo代码:

<template>
  <div id="lodop">
    <div style="font-size: 10pt">
      <div>食悦轩</div>
      <div>桌号:01</div>
      --------------------------------
      <div>下单人:店长 收银:店长</div>
      <div>桌台:01</div>
      <div>编号:SN202304220031</div>
      <div>下单时间:2023-04-22 10:08:54</div>
      <div>结账时间: 2023-04-22 10:08:54</div>
      --------------------------------
      <div>名称 单价 数量 金额</div>
      --------------------------------
      <div>一人超值套餐 40 *1 = 40</div>
      --------------------------------
      <div>合计: 数量:1 金额:40.00</div>
      --------------------------------
      <div>应收: 40.00元</div>
      <div>折扣: 0.00元</div>
      <div>实收: 40.00元</div>
      <div>支付方式:现金</div>
      <div>联系方式:18535492166</div>
      <button @click="print()">打印</button>
      <button @click="print1()">打印</button>
    </div>
  </div>
</template>

<script>
import getLodop from "@/util/LodopFuncs";
export default {
  data() {
    return {};
  },
  created() {},
  mounted() {},
  methods: {
    print() {
      var LODOP = getLodop();
      var strHtml =
        "<body>" + document.getElementById("lodop").innerHTML + "</body>";
      // 打印初始化
      LODOP.PRINT_INIT("打印任务名称");
      // 设置纸张大小
      // 第一个参数3为高度自适应,第二个参数为宽度,第三个是距离纸张底部空隙
      LODOP.SET_PRINT_PAGESIZE(3, "100mm", "100mm", "商品标签");
      LODOP.ADD_PRINT_HTM("1%", "1%", "98%", "98%", strHtml);
      // 预览
      // LODOP.PREVIEW();
      // 宽度自适应缩放
      LODOP.SET_PRINT_MODE("FULL_WIDTH_FOR_OVERFLOW", true);
      LODOP.PRINT(); // 直接打印
    },
  },
};
</script>

5.lodop如果实现直接打印功能,打印纸会出现“本页为试用版控件”的内容。如果想解决,需要购买lodop注册码,将购买到的注册码添加到指定位置,即可。

但是!!!如果本地运行项目,直接打印的话是不生效的,仍然会出现“本页为试用版控件”的内容。因为浏览器的地址域名需要和购买的域名相同,而本地的地址是http://localhost:8080/xxx,所以唯一的解决办法,就是打包了让领导升级项目,在买定的域名上测试是否成功 

6.在直接打印过程中,出现了一个bug,就是本地直接打印正常,

但是在服务器上直接打印会出现页面内容打印完成,但打印纸传送不出来所有打印内容,如下所示

 

 解决办法:在下面添加一个div,div中包裹一个hr水平线。必须包裹内容,如果没有内容,margin-top样式是不生效的。(这是我能想到的唯一的办法了)

 -----------------------------end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Vue中实现多页打印,你可以使用Lodop插件。Lodop是一个用于浏览器打印的第三方插件,可以提供丰富的打印功能。 以下是在Vue中使用Lodop实现多页打印的基本步骤: 1. 首先,你需要从Lodop官网下载Lodop插件并进行安装。 2. 在Vue项目中引入Lodop插件。你可以在`public/index.html`文件中添加以下代码: ```html <script src="http://localhost:8000/CLodopfuncs.js"></script> ``` 这里的`http://localhost:8000/CLodopfuncs.js`是Lodop插件的访问路径,请根据你的实际情况进行修改。 3. 在Vue组件中,你可以使用`this.$nextTick()`来确保Lodop插件已经加载完毕,然后在回调函数中进行打印操作。 例如,假设你有一个名为`printMultiPage`的方法来处理多页打印: ```javascript methods: { printMultiPage() { this.$nextTick(() => { // 使用Lodop插件进行打印操作 LODOP.PRINT_INIT("多页打印"); LODOP.SET_PRINT_PAGESIZE(1, 'A4', 0, 0); // 循环添加需要打印内容,可以根据需要进行调整 for (let i = 0; i < 3; i++) { LODOP.NewPage(); LODOP.ADD_PRINT_TEXT(50, 50, 200, 30, `第 ${i+1} 页内容`); } LODOP.PREVIEW(); // 预览打印 // 可以使用其他方法进行打印,如LODOP.PRINT()直接打印等 }); } } ``` 4. 在Vue模板中添加一个触发多页打印的元素,例如一个按钮: ```html <button @click="printMultiPage">多页打印</button> ``` 现在,当用户点击"多页打印"按钮时,Lodop插件会根据你的设置进行多页打印操作。 请注意,以上代码仅为示例,你需要根据自己的需求进行适当的调整和修改。确保Lodop插件已正确安装和引入,并且在使用时可以根据实际情况设置打印内容和样式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值