如何将用g2d绘制的BufferedImage实例精确打印,求教比如:Java codeBufferedImage img new BufferedImage(
如何将用g2d绘制的BufferedImage实例精确打印,求教
比如:
- 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点的打印机。分辨率是打印机的固有属性,不能在打印时设置。
属性有几种类型,一种是可以设置的打印方式,另一种是可以取得的固有属性。
大概是这样。
[解决办法]
楼主敬业!
[解决办法]
楼主敬业
