2

jasperreportsを使用してJavaでバーコード画像を作成する必要があります。現在、画像ファイルをディスクに保存していますが、画像をディスクに保存せずに作成する必要があります。メモリ内にバーコード画像を作成し、それをパラメータとしてiReportに送信する必要があります。

これは私がしたことです:

Map<String, Object> parameters = new HashMap<String, Object>();
String imagePath = "\\\\netw\\barCode.jpg";
parameters.put("rutaCodigoBarrasVal", imagePath);

Barcode barCode = BarcodeFactory.createPDF417("1234567890");
barCode.setDrawingText(false);
barCode.setBarHeight(33);
barCode.setBarWidth(207);

FileOutputStream fOS = new FileOutputStream(imagePath);
BarcodeImageHandler.writeJPEG(barCode, fOS);
fOS.close();

私に何ができる?

4

2 に答える 2

1

ライブラリのドキュメントを見て、最初にバーコードをバイト配列またはInputStreamに書き込んでみてください。JasperReportsは、画像をInputStreamパラメーターとして渡し、それをレポートに描画することをサポートしています。

InputStream imageStream = ...;
parametros.put("image", imageStream );

JasperReportsから、そのパラメーターをjava.io.InputStreamとして受け取り、画像ウィジェットと次のプロパティを使用して描画します。画像式:$ P {image}式クラス:java.io.InputStream

お役に立てば幸いです。

于 2013-01-17T17:22:11.727 に答える
1

最後に、これはbarcode4jライブラリを使用して行ったことです:

ByteArrayOutputStream os = new ByteArrayOutputStream();
PDF417Bean barCode = new PDF417Bean();
boolean antiAlias = false;
int orientation = 0;
int dpi = 300;

BitmapCanvasProvider canvas = new BitmapCanvasProvider(dpi, BufferedImage.TYPE_BYTE_BINARY, antiAlias, orientation);

BarcodeDimension dim = new BarcodeDimension(207, 42);
canvas.establishDimensions(dim);
barCode.setColumns(7);
barCode.generateBarcode(canvas, codeToConvert);
canvas.finish();

String mime = MimeTypes.MIME_JPEG;
os = new ByteArrayOutputStream();

final BitmapEncoder encoder = BitmapEncoderRegistry.getInstance(mime);
encoder.encode(canvas.getBufferedImage(), os, mime, dpi);
fis = new ByteArrayInputStream(os.toByteArray());
于 2013-10-01T13:00:01.743 に答える