比如:
- Java code
BufferedImage img = new BufferedImage(300, 300, BufferedImage.TYPE_INT_RGB); Graphics g = img.createGraphics(); g.setColor(Color.BLACK); g.fillRect(0, 0, 300, 300);
然后,我希望能在打印机上输出1英寸的方块
- Java code
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.JPEG; ByteArrayOutputStream outstream = new ByteArrayOutputStream(); try { ImageIO.write(img, "jpg", outstream); } catch (IOException e) { e.printStackTrace(); } byte[] buf = outstream.toByteArray(); InputStream stream = new ByteArrayInputStream(buf); Doc myDoc = new SimpleDoc(psStream, psInFormat, null); PrinterResolution printerResolution = new PrinterResolution(300, 300, PrinterResolution.DPI); PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet(); attr.add(printerResolution); attr.add(PrintQuality.HIGH); PrintService services = PrintServiceLookup.lookupDefaultPrintService(); DocPrintJob job = services.createPrintJob(); try { job.print(myDoc, aset); } catch (PrintException pe) { pe.printStackTrace(); }
这段代码打印的结果是占据A4纸中央的一个大约2英寸的方块
这种结果是因为图片转换造成的?还是图片的ppi设置的不对?还是打印参数有问题?
------解决方案--------------------
根据API说明上看
你这样设应该就是
1英寸300像素了
------解决方案--------------------
这方面的不懂,帮顶吧。祝你好运....
------解决方案--------------------
PrinterResolution printerResolution = new PrinterResolution(300, 300, PrinterResolution.DPI);
PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
attr.add(printerResolution);
这个属性是用来搜索打印机用,即找出分辨率为300点的打印机。分辨率是打印机的固有属性,不能在打印时设置。
属性有几种类型,一种是可以设置的打印方式,另一种是可以取得的固有属性。
大概是这样。
------解决方案--------------------
楼主敬业!
------解决方案--------------------
楼主敬业