Results 1 to 2 of 2

Thread: [Java Printing]

  1. #1
    remnahush is offline Member
    Join Date
    Oct 2007
    Posts
    2
    Rep Power
    0

    Default [Java Printing]

    I'm developing a printing functionality using Java Print Service API.

    I found the way to send escape codes to the printer, but I don't know how to retrieve a printer feedback or how to ask to the printer if it has paper, and other function issues like lost of communication...

    I use the javax.print.event but just the events printDataTransferCompleted and printJobNoMoreEvents works fine. Even when I turn off the printer, disconnect the cable, let it without paper, no other event is fired.

    Does anybody know how to get this kind of response from a printer using java?

    Thank you very much for any help

  2. #2
    made.putrama is offline Member
    Join Date
    Nov 2007
    Location
    Singapore
    Posts
    3
    Rep Power
    0

    Default

    Last time I had a similar requirement to be done in a web application.
    But I couldn't find on how to detect the connection or I/O problem from the printer. But I think the code was able to detect some of the events that you’ve mentioned.

    I used javax.print.DocPrintJob and implement its listener to return a flag whenever the corresponding event occurs upon printing.
    There are some methods that you would want to implement. But it may need to check whether one of the methods is supported by the printer.
    You may want to use javax.print.attribute.* classes in order to know the properties of your printer.

    Here is the chunk of the code:
    static class PrintJobWatcher
    {
    boolean done = true;
    PrintJobWatcher(DocPrintJob job)
    {
    job.addPrintJobListener(
    new PrintJobAdapter()
    {
    public void printJobCanceled(PrintJobEvent pje)
    {
    log.debug("Printing job was cancelled.");
    notDone();
    }
    public void printJobFailed(PrintJobEvent pje)
    {
    log.error("Printing job failed.");
    notDone();
    }
    public void printJobRequiresAttention()
    {
    log.error("Rectifiable problem occured (e.g. printer out of paper).");
    notDone();
    }
    void notDone()
    {
    synchronized (PrintJobWatcher.this)
    {
    done = false;
    PrintJobWatcher.this.notify();
    }
    }
    }
    );
    }
    }


    And here the printing watcher is registered:

    InputStream in = new FileInputStream( <<File instance>> );
    in = new BufferedInputStream(in);

    AttributeSet aset = new HashAttributeSet();
    aset.add( new PrinterName( <<Printer name>>, null ) );
    PrintService[] printers = PrintServiceLookup.lookupPrintServices( null, aset );
    UAssert.check( printers.length > 0, "No printer found." );

    //to use the 1st printer
    PrintService service = printers[0];

    DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
    Doc doc = new SimpleDoc(in, flavor, null);
    DocPrintJob pj = service.createPrintJob();
    PrintJobWatcher prWatcher = new PrintJobWatcher(pj);
    PrintRequestAttributeSet prAset = new HashPrintRequestAttributeSet();
    prAset.add(MediaSizeName.ISO_A4);
    pj.print(doc, prAset);

    in.close();


    Regards,
    Putrama

Similar Threads

  1. Problem after Printing GUI.
    By coldblood22 in forum AWT / Swing
    Replies: 1
    Last Post: 04-05-2008, 02:43 PM
  2. Printing (no dialog)
    By Java Tip in forum Java Tip
    Replies: 0
    Last Post: 02-04-2008, 09:36 AM
  3. Problem in printing java graphics
    By Mahendra in forum Java 2D
    Replies: 0
    Last Post: 01-23-2008, 12:45 PM
  4. Printing using java
    By ramachandran in forum Advanced Java
    Replies: 1
    Last Post: 01-05-2008, 10:16 AM
  5. printing problem
    By ntpl in forum AWT / Swing
    Replies: 0
    Last Post: 11-27-2007, 11:20 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •