我现在用的barcode4j只能生成128Auto的条形码,但需求是必须是128B的,求教怎么设置至声称128B的
FUNCTION get_char(char_code IN PLS_INTEGER) RETURN VARCHAR2 IS
LANGUAGE JAVA NAME 'xxfnd.XxfndBarcodeUtil.getChar(int) return String';
FUNCTION code128b(data_to_encode IN VARCHAR2) RETURN VARCHAR2 IS
v_c128_start VARCHAR2(3 );
v_c128_end VARCHAR2(3 );
n_checksum PLS_INTEGER := 104 ;
n_data_length PLS_INTEGER;
n_curr_char_code PLS_INTEGER;
BEGIN
-- Save the length of the content to cache.
n_data_length := length(data_to_encode);
fnd_message.set_name( 'CUX', 'CUX_FND_BARCODE_001' );
v_c128_start := fnd_message.get;
fnd_message.set_name( 'CUX', 'CUX_FND_BARCODE_002' );
v_c128_end := fnd_message.get;
FOR i IN 1 .. n_data_length LOOP
n_curr_char_code := ascii(substr(data_to_encode, i, 1));
IF n_curr_char_code >= 32 THEN
n_checksum := n_checksum +
(i * (ascii(substr(data_to_encode, i, 1)) - 32 ));
ELSE
n_checksum := n_checksum +
(i * (ascii(substr(data_to_encode, i, 1)) + 64 ));
END IF ;
END LOOP ;
n_checksum := MOD(n_checksum, 103 );
IF n_checksum < 95 THEN
n_checksum := n_checksum + 32;
ELSE
n_checksum := n_checksum + 100;
END IF ;
RETURN v_c128_start || data_to_encode || get_char(n_checksum) || v_c128_end;
END code128b;
借鉴一下
http://blog.csdn.net/chicet/article/details/61925700 借鉴一下咯
最后解决了 上面代码就可以实现
@RequestMapping("getImg2")
public synchronized void usingBarbecueAsSwingComponent(HttpServletResponse response, String msg, int height, int dpi, int Width) throws BarcodeException, IOException {
Barcode barcode = null;
barcode = BarcodeFactory.createCode128(msg);
barcode.setBarHeight(height);
barcode.setBarWidth(Width);
barcode.setDrawingText(false);
barcode.setResolution(dpi);
barcode.setDrawingQuietSection(false);
BufferedImage bi = new BufferedImage(barcode.getWidth(), barcode.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = bi.createGraphics();
barcode.paint(g2d);
response.reset();
response.setContentType("image/png");
OutputStream os = response.getOutputStream();
ImageIO.write(bi, "PNG", os);
logger.info("打印单号条形码为:" + msg);
}