我这个方法有一个问题没解决,客户端访问的时候,调用客户端的打印机打印。 不知道怎么整
页面调用类:
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);
}