import java.util.Arrays;
import java.awt.Image;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import javax.print.attribute.standard.MediaPrintableArea;
import javax.print.attribute.standard.MediaSizeName;
import javax.print.attribute.standard.OrientationRequested;
import javax.print.attribute.standard.PrintQuality;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.DocFlavor;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.DocPrintJob;
import javax.print.Doc;
import javax.print.SimpleDoc;
import javax.print.PrintException;
public class PrintGraphics {
PageFormat pageFormat;
Paper paper;
public static void main(String args []) {
// new PrintGraphics();
}
public PrintGraphics(Image image) {
final String sErrNoPrintService = "Es ist kein passender Print-Service installiert.";
String s2ndParm = null;
int idxPrintService = -1;
DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.ISO_A4);
aset.add(OrientationRequested.LANDSCAPE);
aset.add(PrintQuality.HIGH);
aset.add(new MediaPrintableArea(10, 10, 190, 277, MediaPrintableArea.MM));
try {
PrintService prservDflt = PrintServiceLookup.lookupDefaultPrintService();
PrintService[] prservices = PrintServiceLookup.lookupPrintServices(flavor, aset);
if (null == prservices || 0 >= prservices.length) {
if (null != prservDflt) {
prservices = new PrintService[] { prservDflt };
} else {
System.err.println(sErrNoPrintService);
System.exit(3);
}
}
PrintService prserv = null;
if (0 <= idxPrintService && idxPrintService < prservices.length) {
prserv = prservices[idxPrintService];
} else {
if (!Arrays.asList(prservices).contains(prservDflt)) {
prservDflt = null;
}
prserv = ServiceUI.printDialog(null, 50, 50, prservices, prservDflt, null, aset);
}
if (null != prserv ) {
pageFormat = new PageFormat();
paper = new Paper();
paper.setSize(594.936, 841.536);
paper.setImageableArea(100, 100, 594.836, 841.436);
pageFormat.setOrientation(PageFormat.LANDSCAPE);
pageFormat.setPaper(paper);
if (null == s2ndParm || !s2ndParm.equalsIgnoreCase("np")) {
DocPrintJob pj = prserv.createPrintJob();
Doc doc = new SimpleDoc(new MyPrintableObject(image), flavor, null);
pj.print(doc, aset);
}
}
} catch (PrintException pe) {
System.err.println(pe);
}
}
}