使用lodop实现web精确套打

明确需求
已存在刊印好的小册子,需要将导入的数据对号入座的打印到小册子上。
实现方式
首先,将小册子中需要的数据获取出来。
其次,打印数据到小册子上。

控件下载与安装

LODOP官网
1. 通过官网中演示可以满足各种功能需求 各种demo
2. 下载可以下载对应的安装版本。控件下载

套打应用实践

打印设计(纯文本)
  1. 项目添加设计入口
<a class="btn btn-info" onclick="CreatePrintPage();LODOP.PREVIEW();" >打印预览</a>
<a class="btn btn-info" onclick="CreatePrintPage();LODOP.PRINT_DESIGN();">打印设计</a>
//声明全局变量
var LODOP;
function CreatePrintPage() {
    LODOP=getLodop();
	LODOP.PRINT_INIT("套打模板设计");
}
  1. 模板设计

安装控件后,通过打印设计入口,打开设计模板如下图:

安装后,点击打印设计
(1)装载背景图
(2)调整背景图
因是套打,选择第三项,设置高度宽度为册子实际高度和宽度,点击确定。
背景图调整
(3)添加文本项,可以调整高度字体,位置等基本属性。
添加文本项
可以通过选中文本框,对文本框属性进行编辑,如下:
文本框设计
(4) 生成伪代码

LODOP.PRINT_INIT("套打模板设计");
LODOP.ADD_PRINT_SETUP_BKIMG("C:\\Users\\ebonyzhang\\Desktop\\222222222.jpg");
LODOP.ADD_PRINT_TEXT(158,146,250,25,"新加文本1");
LODOP.ADD_PRINT_TEXT(198,146,255,25,"新加文本2");
LODOP.ADD_PRINT_TEXT(235,146,290,25,"新加文本3");
LODOP.ADD_PRINT_TEXT(271,146,290,25,"新加文本4");

至此,界面上的设计就完成了。

获取打印数据
function toPrint(houseNo){
  	var orgId = $("#orgId").val();
   	var url = prefix + '/toPrint?orgId=' +orgId+ '&houseNo=' + houseNo;
   	$.ajax({
		url:url,//地址
		dataType:'json',//数据类型
		type:'POST',//类型
		timeout:3000,//超时
		success:function(res,status){//请求成功
			if(res.code==0){
				//打印输出并预览
				createPrint(res.data);
				LODOP.PREVIEW();
			}					
		},	
		error:function(XMLHttpRequest,textStatus,errorThrown){
			if(textStatus==='timeout'){
				setTimeout(function(){
					alert('重新请求');
				},3000);
			}
		}
	})
}
套打数据匹配
function createPrint(data){
    data = $.parseJSON(data);
    console.log(data);
    LODOP=getLodop();  
    LODOP.SET_SHOW_MODE("BKIMG_WIDTH","184.94mm");
	LODOP.SET_SHOW_MODE("BKIMG_HEIGHT","260.09mm");
	LODOP.ADD_PRINT_TEXT(158,146,250,25, data.represent.name);
	LODOP.SET_PRINT_STYLEA(0,"FontSize",11);
	//顺时针旋转90度
	LODOP.SET_PRINT_STYLEA(0,"AngleOfPageInside", -90);
	LODOP.ADD_PRINT_TEXT(198,146,255,25,data.represent.sex);
	LODOP.SET_PRINT_STYLEA(0,"FontSize",11);
	LODOP.ADD_PRINT_TEXT(235,146,290,25,data.represent.idcard);
	LODOP.SET_PRINT_STYLEA(0,"FontSize",11);
	LODOP.ADD_PRINT_TEXT(271,146,290,25, data.represent.address);
	LODOP.SET_PRINT_STYLEA(0,"FontSize",11);
	//下一页
	LODOP.NewPageA();
	LODOP.ADD_PRINT_TEXT(375,146,290,25, data.represent.mark);
	......
}
预览并打印

打印预览效果

集成中的问题

  1. 打印方向问题
    用户放置册子的方向以及打印输出方向,以实际输出方向为准。
  2. 打印过程中的调整
    设计完成以及数据填充之后,打印到实际册子上需要多次进行微调,相差数值根据实际纸张的高度和宽度与设置值换算下即可。

其他补充学习

指定打印方向

LODOP.SET_PRINT_PAGESIZE(2, 0, 0, “A4”);
第一个参数: 0–可通过打印机选择纵向或横向,1–锁定为纵向打印,2—锁定为横向打印
第二个参数0 打印纸张的宽度 为0 ,可自定义宽
第三个参数0 打印纸张的高度 为 0 ,可自定义高
第四个参数A4 指定用 A4 纸打印
当宽度和高度都设为 0 的时候,才能指定用特定的纸型打印,如:A4 ,B5 等。

横向时的正向显示

LODOP.SET_SHOW_MODE(“LANDSCAPE_DEFROTATED”,1);

设置旋转角度值

通过设置旋转角度值进行控制打印方向:
LODOP.SET_PRINT_STYLEA(1,“AngleOfPageInside”,角度值);
–1 位置可以指定页数使用 1代表是当前页,2代表第二页,0代表所有页。

超文本

ADD_PRINT_HTM超文本的普通模式,输出的是解析后的超文本,ADD_PRINT_HTML输出的是超文本的图形模式,能更好的输出页面样式,但是不如普通模式清晰,ADD_PRINT_TABLE自动分页不切行,等等,有各种语句用来输出超文本,超文本解析需要浏览器引擎,因此可能造成不同客户端效果有差异。

以上

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值