从iText的Barcode39图像中获取字节

时间:2011-04-21 21:15:25

标签: java image itext barcode

如何从使用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 个答案:

答案 0 :(得分: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();

这应该只创建条形码图像,将其渲染到内存并将其保存到流/字节[]以供进一步使用。