Forum Stats

  • 3,740,986 Users
  • 2,248,355 Discussions
  • 7,861,559 Comments

Discussions

PrintService in java not doing anything

User_05JKY
User_05JKY Member Posts: 1 Green Ribbon

i trying to print some doc that i have with java application.

but when i choosing the printer its adding the file to the printer queue but nothing happend after the queue cleared.


this is my code:


  import java.io.File;

  import java.io.FileInputStream;

  import java.io.IOException;

  import java.io.InputStream;

  import javax.print.*;

  import javax.print.attribute.HashPrintRequestAttributeSet;

  import javax.print.attribute.PrintRequestAttributeSet;

  import javax.print.attribute.standard.JobName;

   

  public class test {

   

   public static void main(String[] args) throws PrintException, IOException {

   PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();

  

   PrintService[] services = PrintServiceLookup.lookupPrintServices(DocFlavor.SERVICE_FORMATTED.PAGEABLE, attrs);

   PrintService service = PrintServiceLookup.lookupDefaultPrintService();

  

   PrintService selection = ServiceUI.printDialog(null, 200, 200, services, service, null, attrs); 

   if(selection != null)

   {

   String fileName = "C:\\Temp\\test.docx";

   File f = new File(fileName);

  

   InputStream is = new FileInputStream(f);

  

   DocPrintJob job = selection.createPrintJob();

   

   SimpleDoc doc = new SimpleDoc(is, DocFlavor.INPUT_STREAM.AUTOSENSE, null);

  

   PrintRequestAttributeSet jAttrs = new HashPrintRequestAttributeSet();

   jAttrs.add(new JobName(fileName, null));

  

   job.print(doc, jAttrs);

   

   if(is != null)

   is.close();

  

   }

   }

   

  }


this is capture of the printer queue when i choosing printer in the dialog and click "print":

https://i.stack.imgur.com/UgyYR.png


and in my printer there is no information about printing job...


when i print this file from the pc and not from the app its working perfect.

and when i using this java code: 


  Desktop.getDesktop().print(f);


its printing perfect.

but its not what i want, i want that the user will choose printer in the dialog.

Sign In or Register to comment.