2011-04-21 122 views
1

如何從使用itext的barcode39類生成的圖像獲取字節?我有:從iText的Barcode39獲取字節圖像

Document document = new Document(new Rectangle(340, 842)); 
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename)); 
PdfContentByte cb = writer.getDirectContent(); 
Barcode39 code39ext = new Barcode39(); 
code39ext.setCode("Testing Text"); 
code39ext.setStartStopText(false); 
code39ext.setExtended(true); 
Image img = code39ext.createImageWithBarcode(cb, null, null); 

現在我需要幫助從img獲取字節,以便通過電子郵件發送並將其保存到文件中。

在此先感謝。

+1

createImageWithBarcode創建一個封裝在itextpdf.Image中的PdfTemplate。目前沒有像素信息......但請參閱jCoder對「做的方法」的回答。 – 2011-04-21 23:55:07

回答

6

假設你其實並不需要的PDF文件,但只有條形碼圖像,那麼你可以嘗試:

Barcode39 code39ext = new Barcode39(); 
code39ext.setCode("Testing Text"); 
code39ext.setStartStopText(false); 
code39ext.setExtended(true); 
java.awt.Image rawImage = code39ext.createAwtImage(Color.BLACK, Color.WHITE); 
BufferedImage outImage = new BufferedImage(rawImage.getWidth(null), rawImage.getHeight(null), BufferedImage.TYPE_INT_RGB); 
outImage.getGraphics().drawImage(rawImage, 0, 0, null); 
ByteArrayOutputStream bytesOut = new ByteArrayOutputStream(); 
ImageIO.write(outImage, "png", bytesOut); 
bytesOut.flush(); 
byte[] pngImageData = bytesOut.toByteArray(); 

這應該只是創建條碼圖像,它渲染到內存並將其保存到一個流/ byte []以供進一步使用。

+0

嗨,上面的代碼工作正常,但無法獲取圖像下方的文本。可以告訴我任何其他解決方案,以顯示圖像下方的文本 – 2013-06-05 10:15:53

+0

@SundarG'outImage'實際上是一個普通的圖像畫布條碼被塗在上面,所以你可以創建一個更大的畫布,然後在上面畫上條形碼和文字,代碼示例如下:http://pastebin.com/qzdybgYy – jCoder 2013-06-08 13:30:30