vue3使用clodop 云打印

vue3使用clodop 云打印

  • 第一步,准备打印目录print放在src目录下,在云打印官网下载安装包放入该文件夹中
    在这里插入片描述
  • 第二步,加载clodop,在LodopFuncs.js写入一下代码
import { ElMessageBox } from 'element-plus'
// ====页面动态加载C-Lodop云打印必须的文件CLodopfuncs.js====
var head = document.head || document.getElementsByTagName('head')[0] || document.documentElement
var oscript = document.createElement('script')
oscript = document.createElement('script')
//因为前端代码需要打包到服务器,所以我们的地址需要动态获取当前浏览的地址
oscript.src = location.origin+'/print/CLodopfuncs.js?priority=1'
head.insertBefore(oscript, head.firstChild)
// 下载loadLodop
function loadLodop() {
  window.open('/print/CLodop_Setup_for_Win32NT.exe')
}
// ====获取LODOP对象的主过程:====
function getLodop() {
  let LODOP
  try {
    LODOP = window.CLODOP2015_7028
    console.log(LODOP);
    console.log(document.readyState);
    if (!LODOP) {
      throw new Error("您还未安装打印控件")
    }
    if (!LODOP && document.readyState !== 'complete') {
      ElMessageBox.alert('C-Lodop打印控件还没准备好,请稍后再试!')
      return
    }
    
    return LODOP
  } catch (err) {
    ElMessageBox({
      title: '温馨提示',
      type: 'warning',
      showCancelButton: true,
      message: '您还未安装打印控件,点击确定下载打印控件,安装成功后刷新页面即可进行打印',
      callback: res => {
        if (res === 'confirm') {
          loadLodop()
        }
      }
    })
  }
}
export default getLodop 
  • 第三步,在本地测试是能进行打印,但是部署到服务器就不行了,它会报错说缺少CLodopfuncs.js的代码,所以我们在本地测试是就要将对应CLodopfuncs.js的代码复制到前端本地项目中,然后修改其访问地址:

复制代码到print目录下的CLodopfuncs.js中。
在这里插入图片描述

修改其中访问地址配置:

        	strWebPageID:"7BCAAAE",strTaskID:"",strHostURI:location.protocol+'//'+location.hostname+":8000/print",
        VERSION:"6.5.0.2",IVERSION:"6502",CVERSION:"4.1.0.4",HTTPS_STATUS:2,VERSION_EXT:true,
        iBaseTask:0,timeThreshold:5,Priority:1,blIslocal:true,
        Iframes:[],ItemDatas:{},PageData:{},defStyleJson:{},PageDataEx:{},ItemCNameStyles:{},
        blWorking:false,blNormalItemAdded:false,blTmpSelectedIndex:null,Caption:null,Color:null,CompanyName:null,strBroadcastMS:null,
        Border:null,Inbrowse:null,webskt:null,SocketEnable:false,SocketOpened:false,NoClearAfterPrint:false,On_Return_Remain:false,On_Broadcast_Remain:false,
    //这只是文件开始一部分片段,需要修改其访问的地址为当前浏览器访问的地址,否则就会出现跨域的情况。
  • 第四步,webpack打包配置,因为上面的LodopFuncs.js中下载文件访问的地址是根目录,所以我们需要将print目录打包放在dist的根目录下:
module.exports = {
  configureWebpack: {
    plugins: [
      new CopyWebpackPlugin(
        [{
          from: path.join(__dirname, 'src/print'),
          to: path.join(__dirname, 'dist/print'),
        }]
      ),
    ],
  },
}
  • 最后封装公共方法调用云打印,大功告成。
import getLodop from '@/print/LodopFuncs.js'
//打印
/**
 * params 
 *      data  需要打印的文本字符串。
 */
export function print(data) {
    const LODOP = getLodop();
    if (LODOP) {
        LODOP.PRINT_INIT(""); //初始化
        LODOP.SET_PRINT_PAGESIZE('210mm', '297mm', 'A4打印'); //设置
        LODOP.ADD_PRINT_HTM(8, "2%", "95%", "95%", data);
        LODOP.SET_SHOW_MODE("LANDSCAPE_DEFROTATED", 1);
        LODOP.PREVIEW();
    }
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lodop打印需要的LodopFuncs.js已测试可使用 Lodop是什么? 有人说她是Web打印控件,因为她能打印、在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来; 有人说她是打印编程接口,因为她介于浏览器和打印设备之间,是个通道和桥梁,几乎能想到的打印控制事项都能做到; 有人说她是JavaScript的扩展,因为她所有功能就那么几个语句,和JS语法一样,一看就明白个究竟; 有人说她是报表打印工具,因为那个add_print_table语句把报表统计的那点事弄了个明明白白; 有人说她是条码打印工具,因为用了她再也不用后台生成条码图片了,前端一行指令就动态输出清晰准确的条码,一维二维都行; 有人说她是图表打印工具,因为用她能输出几乎能想象的任何图表,虽然没那么豪华,但什么饼图、折线图、柱图甚至复合图等等都不在话下; 有人说她是个小玩意,因为她体积太小了,才2M多,她所包含的其中任何一个对照工具都是她的好几倍(例如条码打印控件、图表控件等); 有人说她是套打教案,因为以Lodop+JS实现套打这种模式,在网上已被吵吵为教科书般的解决方案; 有人说她是Web打印控件的“终结者”,因为接触“她”后再不想别的“她”; 有人说她就是一个Web编程小工具,因为有了她,在BS下的打印终于像cs下那种随意而高效了; 但我们说,她是全国1000多家软件公司的智慧结晶,诞生7年了,几乎每个功能细节都蕴藏着无数开发者的期待和汗水; 她就是Lodop,没有别的名称,她是web开发的必选伴侣...

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值