2011-04-21 76 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