javaweb 通过servlet 实现批量打印。

java通过servlet返回的页面实现批量打印

实现的原理为: 给div标签加上STYLE="page-break-before:always"样式实现分页。页面加载完成后用js调用打印

package com.fehorizon.erp.pda.utils;

import java.io.OutputStreamWriter;

import javax.servlet.ServletOutputStream;

import com.bokesoft.myerp.common.rowset.BKRowSet;
import com.fehorizon.erp.pda.base.BaseService;

public class BatchpltServiceImpl extends BaseService {
	public void batchplt() {
		init(false);
		try {
			String cond = strRequiredParam("cond", "条件");
			int type = intRequiredParam("type", "类型", false);
			BKRowSet rs = null;
			String  barcode="-1";
			String desc="标签错误";
			//更具参数查询数据库,得到需要打印的内容
			if(type == 1) {
				rs = ctx.getResultSet("select billdtlid barcode,sp_bin codeDesc from CP_HX00_Warehouse_StPosition where billdtlid in ("+cond+")");
			}else if(type == 2){
				rs = ctx.getResultSet("select (select name from CP_HX00_SparePartHead where id = goodsid) codeDesc, sn barcode from stockin where seqid in ("+cond+")");
			}else {
				rs = ctx.getResultSet("select (select name from CP_HX00_SparePartHead where id = goodsid) codeDesc, sn barcode from posn where seqid in ("+cond+")");
			}
			if(!rs.bkFirst())return;
			response.setContentType("text/html; charset=UTF-8");
			ServletOutputStream out = response.getOutputStream();
			OutputStreamWriter ow = new OutputStreamWriter(out,"UTF-8"); 
			ow.write("<html>");
			ow.write("<head>");
			ow.write("<meta charset=\"utf-8\">");
			ow.write("<meta  content=\"text/html; charset=utf-8\" />");
			ow.write("<title>批量打印</title>");
			//此处为页面加载结束 自动打印
			ow.write("<script>window.οnlοad=window.print();</script>");
			ow.write("<head>");
			ow.write("<body style=\"zoom:0.85;padding:0;margin:0\">");
			String url = request.getRequestURL().toString().replace("batchplt","barCodeGenera");
			rs.bkBeforeFirst();
			//循环结果,调用之前的服务(上一篇文章)得到需要打印的二维码
			while(rs.bkNext()) {
				barcode = rs.bkGetString("barcode");
				desc = rs.bkGetString("codeDesc");
				ow.write("<DIV STYLE=\"page-break-before:always\"><img  src=\""+url+"?barcode="+barcode+"&desc="+desc+"\"/></DIV>");
			}
			ow.write("</body>");
			ow.write("</html>");
			ow.flush();  
			ow.close(); 
		} catch (Throwable e) {
			e.printStackTrace();
		}
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值