回覆列表
  • 1 # 待花開影紫薄荷微

    參考javax.print.*

    大致過程是這樣的:

    寫一個servlet,專門實現列印服務

    這個servlet內是這樣處理的:

    1.獲取印表機物件printer

    透過列舉PrintServiceprintservices[]=PrintServiceLookup.lookupPrintServices(...)

    2.生成DocPrintJobjob=PrintService.createPrintJob();

    3.生成文件Docdoc=newSimpleDoc(...);

    需要3個引數

    第一個是列印的資料,可以根據條碼,生成一幅影象,然把影象作為輸入流,作為第一個引數

    第二個引數用一個DocFlavor.INPUT_STREAM物件

    DocFlavor類有相應的靜態變數,你根據影象的mime型別選擇

    第三個引數是一個DocAttributeSet物件

    4.列印

    job.print(doc,pras);

    這是我以前寫的練習:

    -----------------------------------------------------------------------

    packageprinttest;

    importjava.io.*;

    importjavax.print.*;

    importjava.awt.*;

    importjava.awt.image.*;

    importjavax.imageio.*;

    publicclassApplication1

    {

    publicstaticvoidtest(Stringcode)

    {

    try{

    DocFlavorflavor=DocFlavor.INPUT_STREAM.JPEG;

    //getaprinter

    PrintService[]printers=PrintServiceLookup.lookupPrintServices(flavor,null);

    for(inti=0;i<printers.length;i++)System.out.println(printers[i].getName());

    PrintServiceprinter=printers[0];

    //job

    DocPrintJobjob=printer.createPrintJob();

    //document

    BufferedImageimg=newBufferedImage(400,300,BufferedImage.TYPE_USHORT_555_RGB);

    Graphicsg=img.getGraphics();

    g.drawString(code,100,100);

    ByteArrayOutputStreamoutstream=newByteArrayOutputStream();

    ImageIO.write(img,"jpg",outstream);

    byte[]buf=outstream.toByteArray();

    InputStreamstream=newByteArrayInputStream(buf);

    Docdoc=newSimpleDoc(stream,flavor,null);

    //print

    job.print(doc,null);

    }

    catch(Exceptione)

    {

    e.printStackTrace();

    }

    }

    //Mainmethod

    publicstaticvoidmain(String[]args)

    {

    test("12345");

    }

    }

  • 中秋節和大豐收的關聯?
  • 發動機油耗怎麼算?