java 客户端打印_java客户端打印

我这个方法有一个问题没解决,客户端访问的时候,调用客户端的打印机打印。 不知道怎么整

页面调用类:

package com.task;

import

java.awt.print.Book;

import java.awt.print.PageFormat;

import java.awt.print.Paper;

import java.awt.print.PrinterException;

import java.awt.print.PrinterJob;

import java.util.Map;

import

javax.print.Doc;

import javax.print.DocFlavor;

import javax.print.DocPrintJob;

import javax.print.PrintException;

import javax.print.PrintService;

import javax.print.PrintServiceLookup;

import javax.print.SimpleDoc;

import javax.print.attribute.DocAttributeSet;

import javax.print.attribute.HashDocAttributeSet;

import javax.print.attribute.HashPrintRequestAttributeSet;

import javax.print.attribute.PrintRequestAttributeSet;

import

org.zkoss.apis.CompTarget;

import org.zkoss.comp.ui.wnd.RecWnd;

import org.zkoss.comp.ui.zul.RLabel;

import org.zkoss.zk.ui.Component;

import org.zkoss.zk.ui.Executions;

import org.zkoss.zul.Bandbox;

import org.zkoss.zul.Include;

import

com.domain.task.TaskItems;

import com.util.PrintTest;

public class

TaskhuoRecWnd extends RecWnd {

TaskItems taskitems;

public void anniu(){

PrinterJob

job = PrinterJob.getPrinterJob();

PrintService

defaultService = PrintServiceLookup.lookupDefaultPrintService();

//默认的PrintService

//获取客户端默认的打印机 这里就不知道怎么整了,求高手,

// PrintService kfdService =

PrintServiceLookup.lookupMultiDocPrintServices(flavors,

attributes);

// PrintServiceLookup.lookupPrintServices(flavor,

attributes) try {job.setPrintService(defaultService);

} catch (PrinterException e1)

{e1.printStackTrace();}

Book book = new Book();

PageFormat pf = new PageFormat();

pf.setOrientation(PageFormat.PORTRAIT);

Paper p = new Paper();

p.setSize(590,840);

p.setImageableArea(10,10, 590,840);

pf.setPaper(p);

book.append(new PrintTest(), pf);

try {

job.setPageable(book);job.print();

} catch (PrinterException e)

{

e.printStackTrace();

}

}

}

PrintTest()类

package com.util;

import 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.print.Book;

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;

import java.text.SimpleDateFormat;

import java.util.Date;

import org.zkoss.bind.SimpleForm;

import com.domain.code.CodeCountry;

import com.domain.task.TaskGoods;

import com.domain.task.TaskItems;

import com.domain.task.TaskMedicines;

public class PrintTest implements Printable{

public int print(Graphics gra,

PageFormat pf, int pageIndex) throws PrinterException {

//转换成Graphics2D

Graphics2D g2 = (Graphics2D) gra;

//设置打印颜色为黑色

g2.setColor(Color.black);

//打印起点坐标

double x = pf.getImageableX();

double y = pf.getImageableY();

switch(pageIndex){

case 0:

//设置打印字体(字体名称、样式和点大小)(字体名称可以是物理或者逻辑名称)

//Java平台所定义的五种字体系列:Serif、SansSerif、Monospaced、Dialog 和

DialogInput

Font font = new Font("新宋体", Font.PLAIN, 11);

g2.setFont(font);//设置字体

//BasicStroke bs_3=new BasicStroke(0.5f); //float[] dash1 = {2.0f};

//设置打印线的属性。

//1.线宽 2、3、不知道,4、空白的宽度,5、虚线的宽度,6、偏移量

// g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f)); //g2.setStroke(bs_3);//设置线宽

float heigth = font.getSize2D();//字体高度

TaskItems items=

helpd.backTaskItems();

if(items.getDeclarationNumber()!=null){g2.drawString(items.getDeclarationNumber(),

460, 112);}

g2.drawString("***", 172,

183);

if(items.getOwnerAgents()!=null){g2.drawString(items.getOwnerAgents(),

170, 207);}

TaskGoods

goods=helpd.backTaskGoods(items.getRelationcole());

g2.drawString(goods.getGoodsName(),

133, 240);

CodeCountry

code=helpd.backCodeCountry(items.getFromPort());

if(code.getCountry()!=null){

g2.drawString(code.getCountry(),

390, 235);

}

code=helpd.backCodeCountry(goods.getOrigin());

if(code.getCountry()!=null

&& code.getCountry()!=""){

g2.drawString(code.getCountry(),

133, 298);

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值