将iText条形码图像从CCITT格式转换为PNG

时间:2011-08-16 12:42:44

标签: java jasper-reports itext

我正在使用iText创建一个像这样的PDF417条形码:

private InputStream getBarcode() throws Exception {

BarcodePDF417 barcode = new BarcodePDF417();
barcode.setText("Sample bar code text");

Image image = barcode.getImage();
image.scalePercent(50, 50 * barcode.getYHeight());

return new ByteArrayInputStream(image.getRawData());

BarcodePDF417 barcode = new BarcodePDF417(); barcode.setText("Sample bar code text"); Image image = barcode.getImage(); image.scalePercent(50, 50 * barcode.getYHeight()); return new ByteArrayInputStream(image.getRawData());

我需要将} 返回的CCITT格式转换为JPG,GIF或PNG,以便将其包含在我在JasperReports中创建的文档中。

2 个答案:

答案 0 :(得分:4)

这样的事情怎么样?

    BarcodePDF417 barcode = new BarcodePDF417();
    barcode.setText("Bla bla");
    java.awt.Image img = barcode.createAwtImage(Color.BLACK, Color.WHITE);
    BufferedImage outImage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
    outImage.getGraphics().drawImage(img, 0, 0, null);
    ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
    ImageIO.write(outImage, "png", bytesOut);
    bytesOut.flush();
    byte[] pngImageData = bytesOut.toByteArray();
    FileOutputStream fos = new FileOutputStream("C://barcode.png");
    fos.write( pngImageData);
    fos.flush();
    fos.close();

答案 1 :(得分:1)

我提出的解决方案:

private Image getBarcode() throws Exception {

    BarcodePDF417 barcode = new BarcodePDF417();

    barcode.setText("Sample bar code text");
    barcode.setAspectRatio(.25f);

    return barcode.createAwtImage(Color.BLACK, Color.WHITE);
}

JasperReports支持报告中使用的图像的java.awt.Image类型。