-
2021-03-07 09:44:41
importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjavax.print.Doc;importjavax.print.DocFlavor;importjavax.print.DocPrintJob;importjavax.print.PrintException;importjavax.print.PrintService;importjavax.print.PrintServiceLookup;importjavax.print.ServiceUI;importjavax.print.SimpleDoc;importjavax.print.attribute.DocAttributeSet;importjavax.print.attribute.HashDocAttributeSet;importjavax.print.attribute.HashPrintRequestAttributeSet;importjavax.print.attribute.PrintRequestAttributeSet;public classTesta {/*** 调用打印机功能
*@authorAdministrator
**/
public static voidmain(String[] args) {
DocFlavor flavor=DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintRequestAttributeSet aset= newHashPrintRequestAttributeSet();
PrintService []pservices=PrintServiceLookup.lookupPrintServices(flavor, aset);
PrintService defaultService=PrintServiceLookup.lookupDefaultPrintService();
PrintService service= ServiceUI.printDialog(null, 200, 200, pservices,
defaultService, flavor, aset);
String fileName= "D:" + File.separator + "zkyzl.txt";if(service != null){try{
DocPrintJob pj=service.createPrintJob();
FileInputStream fis= newFileInputStream(fileName);
DocAttributeSet das= newHashDocAttributeSet();
Doc doc= newSimpleDoc(fis, flavor, das);
pj.print(doc, aset);
}catch(FileNotFoundException fe) {
fe.printStackTrace();
}catch(PrintException e) {
e.printStackTrace();
}
}else{
System.out.println("打印失败");
}
}
}
更多相关内容 -
java实现打印机打印
2020-10-10 10:48:141.后台控制打印代码 /** @author Stone */ public class GMMSPrinter implements Printable { private static final Logger LOGGER = LoggerFactory.getLogger(GMMSPrinter.class); /** 客户名称 / private ...1.后台控制打印代码
/**-
@author Stone
*/
public class GMMSPrinter implements Printable {private static final Logger LOGGER = LoggerFactory.getLogger(GMMSPrinter.class);
/**
- 客户名称
/
private String customer;
/* - 项目名称
/
private String application;
/* - 成品名称
/
private String production;
/* - 楼层编号
/
private String floorNumber;
/* - 订单序号
/
private String orderNumber;
/* - 长度
/
private double length;
/* - 宽度
/
private double width;
/* - 流程卡号
/
private String apartId;
/* - 片标记
/
private String pieceSign;
/* - 明细备注
/
private String remark;
/* - 生产线
*/
private String line;
public GMMSPrinter(String customer, String application, String production, String floorNumber, String orderNumber,
double length, double width, String apartId, String pieceSign, String remark, String line) {
super();
this.customer = customer;
this.application = application;
this.production = production;
this.floorNumber = floorNumber;
this.orderNumber = orderNumber;
this.length = length;
this.width = width;
this.apartId = apartId;
this.pieceSign = pieceSign;
this.remark = remark;
this.line = line;
}@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {Graphics2D g2 = (Graphics2D) graphics; //设置打印的颜色 g2.setPaint(Color.black); //转换坐标,确定打印边界 g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); String lengthStr = String.valueOf(length).substring(0, String.valueOf(length).indexOf(".")); String widthStr = String.valueOf(width).substring(0, String.valueOf(width).indexOf(".")); //设置打印的字体 Font font = new Font("黑体", Font.BOLD, 11); g2.setFont(font); //获得字体的高度 float height=font.getSize2D(); //得到第一行打印数据 g2.drawString(customer, 30, 20); g2.setFont(font); //得到第一行右边数据 g2.drawString(application, 92, 20); g2.setFont(font); //得到第二行数据 g2.drawString(production, 4, 25+height); Font font1 = new Font("黑体", Font.BOLD, 13); g2.setFont(font1); g2.drawString(floorNumber, 15, 35+height+height); g2.setFont(font1); float height1=font.getSize2D(); g2.drawString(orderNumber+")"+lengthStr+"*"+widthStr, 24, 45+height*3); g2.setFont(font); g2.drawString(apartId+"/"+pieceSign+" "+remark, 15, 50+height*3+height1); return Printable.PAGE_EXISTS;
}
/**
-
打印
-
@throws PrinterException
*/
public void doPrint() {
LOGGER.debug("> Start doPrint");//收到光电信号打印机执行打印
PrinterJob printerJob = PrinterJob.getPrinterJob();
Book book=new Book();//设置成竖打
PageFormat pageFormat=new PageFormat();
pageFormat.setOrientation(PageFormat.PORTRAIT);//设置页面的空白边距和可打印区域
Paper paper=new Paper();
paper.setSize(220, 115);
//设置打印区域
paper.setImageableArea(0, 0, 220,115);
pageFormat.setPaper(paper);//把 PageFormat和 Printable 添加到书中
book.append(new GMMSPrinter(customer, application, production, floorNumber, orderNumber, length, width, apartId, pieceSign, remark, line), pageFormat);
printerJob.setPageable(book);
HashAttributeSet hs = new HashAttributeSet();
String printerName=“ZDesigner ZT410-300dpi ZPL”;
//将当前打印机添加到打印服务
hs.add(new PrinterName(printerName,null));
PrintService [] pss = PrintServiceLookup.lookupPrintServices(null, hs);
LOGGER.debug(“打印机的个数是:” + pss.length);try {
printerJob.print();
}
catch (PrinterException e) {
e.printStackTrace();
}LOGGER.debug("> End doPrint");
}
}
- 客户名称
2.前端控制打印机打印
<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8” isELIgnored=“false”%>首页 .PageNext{page-break-after: always;}
<%-- --%>
起始编号:
结束编号:
<%--
--%>曹杨二中 物理 王思睿 23568307 <%@ page language=“java” contentType=“text/html; charset=utf-8” pageEncoding=“utf-8” isELIgnored=“false”%>
Insert title here .PageNext{page-break-after: always;}
<%-- --%>
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.util.List;import javax.accessibility.AccessibleRelation;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.hibernate.jpa.criteria.Renderable;
import com.google.gson.Gson;
import com.google.gson.JsonArray;import dao.BaseDao;
import model.Exem;
import net.sf.json.JSONArray;
import print.BarcodeUtil;
import util.GridDataModel;public class Barcode extends HttpServlet {
private static final long serialVersionUID = 1L;@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// String servletPath = req.getServletPath();
// String actionName = servletPath.substring(1, servletPath.indexOf("."));String actionName = req.getParameter("method"); try { Method method = this.getClass().getMethod(actionName, HttpServletRequest.class, HttpServletResponse.class); method.invoke(this, req, resp); } catch (Exception e) { e.printStackTrace(); } } public void barcode(HttpServletRequest request, HttpServletResponse response)throws ServletException{ String code = request.getParameter("code"); BarcodeUtil.encode(code, response); } public void getData(HttpServletRequest request, HttpServletResponse response)throws ServletException{ String start = request.getParameter("start"); String end = request.getParameter("end"); System.out.println(start + ", " + end);
// if(“1”.equals(start)){
// start = “2”;
// }BaseDao<Exem> dao = new BaseDao<Exem>(); String hql = "from Exem where id between ? and ?"; List<Exem> list = dao.getList(hql, Integer.parseInt(start), Integer.parseInt(end));
// JSONArray array = JSONArray.fromObject(list);
// String result = “{“success”:true,“items”:” + array.toString() + “}”;
// render(response, result);// String sql = "from Exem where id < " + Integer.parseInt(count);
// List<Object[]> list = dao.queryForList(sql);Gson gson = new Gson(); String result = gson.toJson(new GridDataModel<Exem>(list));
// String result = gson.toJson(list);
render(response, result);
}private void render(HttpServletResponse response, String result){ //设置为text/html,返回的是json字符串,设置为application/json,获取的是对象 response.setContentType("text/html; utf-8"); // Http 1.0 header response.setDateHeader("Expires", 1L); response.addHeader("Pragma", "no-cache"); // Http 1.1 header response.setHeader("Cache-Control", "no-cache, no-store, max-age=0"); //设置中文编码 response.setCharacterEncoding("UTF-8"); response.setContentType("UTF-8"); try { response.getWriter().write(result); response.getWriter().flush(); } catch (IOException e) { throw new RuntimeException(e.getMessage(), e); } }
// private void render(HttpServletResponse response, String result){
// response.setContentType(“text/html; charset=utf-8”);
// response.setHeader(“Cache-Control”, “no-cache”);
// PrintWriter out = null;
// try {
// out = response.getWriter();
// out.write(result);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
}import java.awt.Font;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import javax.servlet.http.HttpServletResponse;import net.sourceforge.jbarcodebean.JBarcodeBean;
import net.sourceforge.jbarcodebean.model.Code128;
public class BarcodeUtil {private static final int IMAGE_WIDTH = 160; private static final int IMAGE_HEIGHT = 34; private static final int BARCODE_HEIGHT = 34; private static final int FONT_SIZE = 12; private static final String FONT_FAMILY = "Consolas"; public static void encode(String str, HttpServletResponse response) { OutputStream os = null; InputStream fis = null; ByteArrayOutputStream bs = null; ImageOutputStream iout = null; try { JBarcodeBean bean = new JBarcodeBean(); bean.setCodeType(new Code128()); bean.setCode(str); bean.setLabelPosition(JBarcodeBean.LABEL_BOTTOM); bean.setShowText(false); //不显示条码字符 bean.setFont(new Font(FONT_FAMILY, Font.PLAIN,FONT_SIZE)); bean.setBarcodeHeight(BARCODE_HEIGHT); bean.setNarrowestBarWidth(2); BufferedImage image = new BufferedImage(IMAGE_WIDTH, IMAGE_HEIGHT, BufferedImage.TYPE_INT_RGB); image = bean.draw(image);
// BarCode barCode = new BarCode();
// barCode.code = str;
// barCode.barType = BarCode.CODE128;
// barCode.resolution = 38;
// barCode.setBarHeightCM(1.1);
// barCode.setShowText(false);
// barCode.setNarrowToWideRatio(2);
//
//
// BufferedImage image = new BufferedImage(IMAGE_WIDTH, IMAGE_HEIGHT, BufferedImage.TYPE_INT_RGB);
// Graphics2D g2 = image.createGraphics();
// barCode.paint(g2);
// barCode.invalidate();
// System.out.println(barCode.getWidth() + ". " + barCode.getHeight());
// g2.dispose();// JBarcode barcode = JBarcodeFactory.getInstance().createCode128();
// barcode.setBarHeight(BARCODE_HEIGHT);
// barcode.setShowText(false);
// barcode.setWideRatio(20);
//
// BufferedImage image = barcode.createBarcode(str);
//
os = response.getOutputStream();
bs = new ByteArrayOutputStream();
iout = ImageIO.createImageOutputStream(bs);
ImageIO.write(image, “jpg”, iout);
fis = new ByteArrayInputStream(bs.toByteArray());//缂撳啿鍖� byte[] b = new byte[1024]; int i = 0; while ((i = fis.read(b)) > 0){ os.write(b, 0, i); } os.flush(); } catch (Exception localException) { localException.printStackTrace(); }finally{ try{ if(iout != null) iout.close(); if(bs != null) bs.close(); if (fis != null) fis.close(); if (os != null) os.close(); }catch (Exception e){ e.printStackTrace(); } } }
}
-
-
java调用打印机打印
2022-04-15 15:13:51打印JPG图片格式的文件,本次采用的Java原生的打印方式。 优点:jdk的原生支持的打印功能,可直接使用,支持设置各项打印参数。 缺点:局限性较大,只能打印一些图片和文本格式的文 package com.my.print.handler; ... -
JAVA针式打印机打印整理
2021-02-26 19:21:06在项目中,经常有可能需要通过针式打印机打印一些票据,如快递单,发票等...之前在做JAVA打印时,也在网上找了好多资料,网上资料太多,讲的也不够详细,走了不少弯路,在做这个之前,连针式打印机都很少接触。...
在项目中,经常有可能需要通过针式打印机打印一些票据,如快递单,发票等...
之前在做JAVA打印时,也在网上找了好多资料,网上资料太多,讲的也不够详细,走了不少弯路,在做这个之前,连针式打印机都很少接触。。。,不多说了,言归正传吧
1、在编写代码之前,最好测试一下在你本机是否可以连接到打印机,正常打印,如果你本机都无法打印,也就不要指望程序可以打印了。
2、本机可以连接到打印机并可以打印后,就可以开始写代码了,首先写一个最简单的程序,打印一句最简单的话,代码如下:
package com.gotomycloud.print;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class Print implements Printable {
private int pageSize;//打印的总页数
private double paperW=0;//打印的纸张宽度
private double paperH=0;//打印的纸张高度
//实现java.awt.print.Printable接口的打印方法
//pageIndex:打印的当前页,此参数是系统自动维护的,不需要手动维护,系统会自动递增
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException {
if (pageIndex >= pageSize)
//退出打印
return Printable.NO_SUCH_PAGE;
else {
Graphics2D g2 = (Graphics2D) graphics;
g2.setColor(Color.BLUE);
Paper p = new Paper();
//此处的paperW和paperH是从目标打印机的进纸规格中获取的,实际针式打印机的可打印区域是有限的,
//距纸张的上下左右1inch(英寸)的中间的距形框为实际可打印区域,超出范围的内容将不会打印出来(没有设置偏移的情况)
//如果设置偏移量,那么超出的范围也是可以打印的,这里的pageW和pageH我是直接获取打印机的进纸规格的宽和高
//也可以手动指定,从是如果手动指定的宽高和目标打印机的进纸规格相差较大,将会默认以A4纸为打印模版
p.setImageableArea(0, 0, paperW, paperH);// 设置可打印区域
p.setSize(paperW,paperH);// 设置纸张的大小
pageFormat.setPaper(p);
drawCurrentPageText(g2, pageFormat);//调用打印内容的方法
return PAGE_EXISTS;
}
}
// 打印内容
private void drawCurrentPageText(Graphics2D g2, PageFormat pf) {
Font font = null;
//设置打印的字体
font = new Font("新宋体", Font.BOLD, 11);
g2.setFont(font);// 设置字体
//此处打印一句话,打印开始位置是(200,200),表示从pf.getPaper()中座标为(200,200)开始打印
//此处200的单位是1/72(inch),inch:英寸,所以这里的长度,在测量后需要进行转换
g2.drawString("打印测试打印测试打印测试打印测试打印测试打印测试打印测试打印测试打印测试打印测试打印测试",200,200);
}
//连接打印机,弹出打印对话框
public void starPrint() {
try {
PrinterJob prnJob = PrinterJob.getPrinterJob();
PageFormat pageFormat = new PageFormat();
pageFormat.setOrientation(PageFormat.PORTRAIT);
prnJob.setPrintable(this);
//弹出打印对话框,也可以选择不弹出打印提示框,直接打印
if (!prnJob.printDialog())
return;
//获取所连接的目标打印机的进纸规格的宽度,单位:1/72(inch)
paperW=prnJob.getPageFormat(null).getPaper().getWidth();
//获取所连接的目标打印机的进纸规格的宽度,单位:1/72(inch)
paperH=prnJob.getPageFormat(null).getPaper().getHeight();
//System.out.println("paperW:"+paperW+";paperH:"+paperH);
prnJob.print();//启动打印工作
} catch (PrinterException ex) {
ex.printStackTrace();
System.err.println("打印错误:" + ex.toString());
}
}
//入口方法
public static void main(String[] args) {
Print pm = new Print();// 实例化打印类
pm.pageSize = 2;//打印两页
pm.starPrint();
}
}
在打印过程中,很可能代码正确,但是打印时,纸上确没打印上,原因很可能是纸张放的位置有偏差,所以打印测试时,可以让测试打印的打印内容多一点,只要能打印出内容就可以了
3、如果可以打印出内容,哪怕是一条线,那么第一步就算好了。下面就是控制打印位置了,打印的位置在纸张上是有一个最左上角点的(0,0),下图是一张类似的快递单打印纸,图上标有打印的起始位置、可打印区域等,可供参考,如下图所示
知道了打印位置的规律,就可以通过测试来设置内容的打印位置了。
4、上面讲的是单张打印,但很多时间需要批量打印,这样可以减少很多重复的工作,如果单张打印可以了,那多张打印也比较简单,首先要设置进纸规格,和偏移量,如果是共享的网络打印机,那么两边都需要设置,最后就是要在代码中设置打印区域和纸张大小了,关键部分代码上面已提到,可参考!
-
java打印html
2017-10-16 15:39:21纯Java API实现HTML(HTML5)打印服务(事先设置好window默认打印机) -
java如何在web页面调用本地安装的打印机打印?
2021-06-15 10:28:30但是我访问web页面的那台电脑必须登录远程桌面,因为远程桌面上的打印机是重定向的,不登录的话,远程桌面就检测不到本地机型,也就不能获取本地打印机,但是客户用的时候肯定不能让他们看到远程桌面, 请问有什么... -
java打印表格到打印机
2021-03-17 19:52:05在这里我我有部分功能是要将一张表格通过java调用打印机打印出来,这里要用到java的Printable接口Printable 接口由当前页面 painter 的 print 方法实现,该方法由打印系统调用,以呈现页面。构建 Pageable 时,使用 ... -
JAVA调用系统打印机打印字符串
2021-03-10 03:05:41用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出直接输出。 下面代码实现了简单的打印功能... -
JAVA实现打印机打印字符串
2016-12-09 16:33:00import java.awt.BasicStroke; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import -
java部署后实现服务端调用客户端打印机打印?
2021-06-17 20:25:51Java web 项目部署在服务器上(云桌面),而我访问网站,点击打印,调用的是服务器(云桌面)的打印设备,不是本地连接的打印机,如果想要打印,就必须在本地电脑上登录云桌面,才可进行打印机的重定向,然后进行... -
java如何调用本地打印机进行图片打印
2021-02-27 08:07:48展开全部用java实现本地e69da5e887aa3231313335323631343130323136353331333337396235打印:java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行... -
java 调用 默认打印机 打印小票
2018-06-08 12:27:04直接上代码参考:java 实现58热敏票据打印 如有侵权,请联系QQ 1450648869package com.example.demo.print; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D;... -
java原生打印实现自动调用系统默认打印机
2022-03-10 23:25:49最近公司项目里要实现一个自动打印的功能,还不让引入网上造好的轮子,所以只能去研究Java自带的打印,网上好多的文章写得都不是很详细,找了很久才找到能够完美实现功能的方法,记录一下 首先是一个继承了... -
java打印功能实现demo
2018-02-25 23:02:40java实现在线打印功能....................................................................................... -
JAVA连接打印机打印小票、产品信息。标签打印机
2016-04-12 21:01:002018年写了一个标签打印机(TSC TX600),标签打印程序,实现功能是通过串口读出设备ID生成二维码和设备信息,用于esp8266 smart config配网。源码和资料:https://download.csdn.net/download/u012854263/12080191 ... -
java多页打印 PrinterJob 多页打印
2016-03-16 07:46:09java多页打印的类,直接可以用,可以选择打印机,可以选择打印存放的地址,可直接使用。 -
javaScript 连接打印机,打印小票的实例
2020-11-29 01:36:16如下所示: <%@ page contentType="text/html;charset=UTF-8"%> <%@ include file="/webpage/include/taglib.jsp"%> <!-- <!DOCTYPE html> --> <html> <...script t -
java实现二维码生成及调用打印机打印
2019-01-10 12:07:00一开始参考其他博主写的文章,有介绍通过编写JAVA后台代码来获取本地默认打印机的驱动实现打印。BUT!这样就导致在本地开发测试时看似一切正常,一旦项目部署到linux环境下,就会完全失效了(JAVA后台代码去获取... -
使用java自带的方式调用打印机打印图片
2018-06-29 19:15:18将打印的设置在java代码中写好,直接调用打印机打印,不需要有打印设置的页面。这里我使用的是Java自带的方式,一开始是打印pdf,但是由于公司的打印机不能识别application/pdf类型,因此最后我打印的是pdf转换的jpg... -
使用打印机打印网页时出现的脚本错误的办法
2021-03-13 12:10:09现在很多打印功能是通过调用java插件来实现的,如果java功能异常,就会导致网页打印的时候出现各种报错。如图所示。1、检查浏览器java控件状态:打开IE浏览器,点击菜单栏的工具,在”工具--管理加载项“里看到。2、... -
Java实现打印Excel工作表
2021-03-24 09:28:35可通过以下方法打印: 1、默认打印机打印 2、指定打印机打印程序环境spire.xls.jarJDK版本要求1.6.0及以上的高版本IDEAJar文件导入方法1:手动下载jar包导入。下载jar包,并解压到指定路径,将该路径下li... -
Java调用不同的打印机实现打印不同小票
2018-08-10 14:46:29Java调用不同的打印机实现打印不同小票 前言,在餐馆中,为了满足商家的需要,当顾客下订单后,前台打印机需要打印出订单的信息给顾客,后台打印机需要打印出菜品分单给厨师。怎么样让一台计算机来控制多台打印机... -
Android下通过wifi调用打印机打印,Java代码片段分享,
2021-03-15 21:03:35Android下通过wifi调用打印机打印chongq 分享于 2小时前 4972阅 0人收藏此代码,好图网图标搜索引擎,提供超过60万的免费图标、PNG图标、ICO图标、ICNS图标、网页图标Android下通过wifi调用打印机打印Java// Code in ... -
java实现的打印机打印1
2021-03-03 10:48:25//设置打印属性 构造一个新的空打印请求属性集。PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();pras.add(new Copies(3));//打印份数,3份//设置打印数据的格式DocFlavor.BYTE_ARRAY.PNG MIME... -
Java获取配置打印机,并(佳博打印机)打印小票
2020-05-06 14:13:42因项目需求,需要打印类似超市的收银小票。 贴上代码,以供记录和参考。 一:获取电脑本地所有的打印服务。 @RequestMapping("/getPrint") @ResponseBody public Object getPrint(){ ... -
Java调用打印机
2020-12-06 15:16:39首先,页面打算使用Java Swing的界面,然后点击打印时候进行调用打印机; package ccu.edu.com; import java.awt.print.Book; import java.awt.print.PageFormat; import java.awt.print.Paper; import java.awt.... -
java调用热敏打印机打印(包含二维码生成)
2016-02-04 10:46:05项目中需要用到热敏打印机,并且在打印的同时,要生成二维码。并且打印,先说说二维码的生成吧 package com.jinke.util; import com.google.zxing.common.BitMatrix; import javax.imageio.ImageIO; import java....