spring mvc 스프링 바코드 생성 하기 Zxing 사용법

안녕하세요. spring 프로젝트중 바코드를 생성해서 회원에게 날려줘야 할일이 생겼어요. 

그래서 지금 바코드 생성 관련해서 찾아보니 zxing를 사용한 방법이 공개되어 있었어요. 

일단 메이븐에서 라이브러리 다운로드를 위해 설정을 합니다. 

		<!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
		<!-- 구글바코드 오픈소스 -->
		<dependency>
		    <groupId>com.google.zxing</groupId>
		    <artifactId>core</artifactId>
		    <version>3.4.0</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.google.zxing/javase -->
		<dependency>
		    <groupId>com.google.zxing</groupId>
		    <artifactId>javase</artifactId>
		    <version>3.4.0</version>
		</dependency>

그리고나서 컨트롤러 위치한 곳에 바코드 이미지를 받아가는 코딩을 합니다. 

import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;

라이브러리를 import를 하고요. 

@RequestMapping(value = "/get_barcode", method = RequestMethod.GET)
	public ResponseEntity<byte[]> get_partner_image(HttpServletRequest request, Model model) throws Exception {
		 smsp.print_String("get_barcode ==>" + "아악."  );
		String text ="https://digital365365.com";
        String _formatName = text;
        text = new String(text.getBytes("UTF-8"), "ISO-8859-1");
      
 		byte[] imageInByte_re = smsp.getBarCodeImage(text, 840, 160);
 		//smsp.print_String(image.toString());
 		HttpHeaders headers = new HttpHeaders(); 
 		String mt_filename = text+".png";
        String formatName = "png";	      
	      MediaType mType = MediaUtils.getMediaType(formatName);
	      //smsp.print_String(mType.toString());
	      if(mType != null){
		        headers.setContentType(mType);
		      }else{
		    	mt_filename = new String(mt_filename.getBytes("UTF-8"), "ISO-8859-1");
		        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
		        headers.add("Content-Disposition", "attachment;filename=\""+mt_filename+"\";");
		        headers.add("Content-Transfer-Encoding", "binary");
		      }
       
	      return new ResponseEntity<byte[]>(imageInByte_re, headers,HttpStatus.OK);
	}

바코드 생성코드는 이렇게 있습니다. 

public static byte[] getBarCodeImage(String text, int width, int height) {
		try {
			Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<>();
			hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
			Writer writer = new Code128Writer();
			BitMatrix bitMatrix = writer.encode(text, BarcodeFormat.CODE_128, width, height);
			ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
			MatrixToImageWriter.writeToStream(bitMatrix, "png", byteArrayOutputStream);
			return byteArrayOutputStream.toByteArray();
		} catch (Exception e) {
			return null;
		}
	}

이상 정리해보았습니다. 

<img src="${pageContext.request.contextPath}/cp_a/get_barcode" alt="바코드">

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,