javaWeb怎么连接热敏打印机直接打印?

javaWeb怎么连接热敏打印机直接打印?采纳重赏
2025-05-21 07:09:41
推荐回答(1个)
回答1:

参考 javax.print.*

大致过程是这样的:
写一个servlet,专门实现打印服务

这个servlet内是这样处理的:
1.获取打印机对象printer
通过枚举 PrintService printservices[] = PrintServiceLookup.lookupPrintServices(...)

2.生成DocPrintJob job=PrintService.createPrintJob();

3.生成文档 Doc doc = new SimpleDoc(...);
需要3个参数
第一个是打印的数据,可以根据条码,生成一幅图像,然把图像作为输入流,作为第一个参数
第二个参数用一个 DocFlavor.INPUT_STREAM 对象
DocFlavor类有相应的静态变量,你根据图像的mime类型选择
第三个参数是一个DocAttributeSet对象
4.打印
job.print(doc, pras);

这是我以前写的练习:
-----------------------------------------------------------------------
package printtest;

import java.io.*;
import javax.print.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;

public class Application1
{
public static void test(String code)
{
try{
DocFlavor flavor=DocFlavor.INPUT_STREAM.JPEG;

//get a printer
PrintService[] printers=PrintServiceLookup.lookupPrintServices( flavor, null);
for( int i=0; iPrintService printer=printers[0];

//job
DocPrintJob job=printer.createPrintJob();

//document
BufferedImage img=new BufferedImage( 400,300, BufferedImage.TYPE_USHORT_555_RGB );
Graphics g=img.getGraphics();
g.drawString(code, 100,100);
ByteArrayOutputStream outstream=new ByteArrayOutputStream();
ImageIO.write( img, "jpg", outstream);
byte[] buf=outstream.toByteArray();
InputStream stream=new ByteArrayInputStream(buf);
Doc doc=new SimpleDoc(stream,flavor,null);

//print
job.print(doc, null);
}
catch(Exception e)
{
e.printStackTrace();
}