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.