바코드 제작하게 된 계기를 작성하기 전
QR코드를 제작하게 된 이유를 설명하고 싶어서 우선 위에 QR코드 제작한 방법을 확인하고 보는걸 추천!
인턴할 때 바코드를 찍었을 때 테이블 형태로 나왔으면 좋겠다고 팀장님께서 말씀하셨고
이는 바코드를 제작하게 되는 배경이 되었다.
하지만 바코드에 관련된 레퍼런스를 찾아보면서 답답함이 몰려오기 시작했다
바코드는 일차원적인 그림으로 테이블을 담기에는 무리였다.
결국에 고민하던 끝에 2D인 QR코드를 제작하게 되었구
QR코드를 제작했을 때 팀장님과 담당자분들은 QR코드를 스캔했을 때 테이블을 수정했으면 좋겠다고 하셨을 때
나의 제안은 URL로 넘겨서 수정 페이지를 제작하면 될것이라고 말했고
이는 보류상태로 끝나게 되었다.
사실상 바코드 -> QR로 넘어왔으나
바코드를 제작했었더라도 스캔 시 수정이 가능하도록 하는건 쉽지 않았을것이다.
엑셀로는 스캔 시 직접 수정이 가능하지만
QR이나 바코드는 스캔용도로 사용해서 페이지를 넘어간 후 수정하도록 만들려고 했었다.
TMI였으나 무튼 QR코드나 바코드를 제작하게 된 배경을 길게 설명했는데.....
결론적으로 바코드를 제작하는 과정에서 많은 것들을 학습했다.
barbecue.sourceforge.net/apidocs/net/sourceforge/barbecue/BarcodeFactory.html
우선 바코드를 사용하기 위해서 이용했던 레퍼런스 사이트인데 이거는 필수로 확인하는 것을 추천한다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript"
src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath}/resources/js/jquery-barcode.js"></script>
</head>
<body>
<script type="text/javascript">
function bar(){
$("#bcTarget").barcode("sg-moomin.tistory", "code128");
}
</script>
<table>
<tr>
<td id="bcTarget">
<script>bar()</script>
</td>
</tr>
</table>
</body>
</html>
우선 JSP를 이용해서 제작했던 것을 확인해보자
위의 코드는 사용했던 코드인데 코드를 돌리면!
위의 바코드처럼 제작이 된다.
내가 이것을 이용해서 테이블형식은 아니지만 실제로 등록번호를 이용해서
반복문을 통해 등록번호를 호출해주면 대량의 바코드를 출력 가능하다.
<c:forEach var="wealth" items="${wealthclass}" varStatus="sts">
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/jquery-barcode.js"></script>
<script type="text/javascript">
function bar() {
$("#bcTarget${wealth.wealthDno}").barcode("${wealth.wealthDno}","Code128" );
}
</script>
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<tr>
<th>바코드</th>
<th id="bcTarget${wealth.wealthDno}">
<script>bar()</script></th>
<td><img src="${pageContext.request.contextPath}/img/${wealth.wealthDno}.PNG"
width=200 height=200></img></td>
</tr>
</table>
</c:forEach>
위의 코드는 실제로 바코드를 등록번호로 여러개 출력했을 때 사용했었던 JSP 코드인데
사실 Ajex를 사용한다면 Script로 function을 생성해주고
데이터도 Json -> Text로 변환해서
해당 테이블에 Function만 호출해주면 된다.
회사 내부 데이터가 존재하지 않아서 실행은 하지 않았다.
사실 JSP로 호출하는 것도 좋지만 Controller나 Service에서 직접 바코드를 File 형태로 제작하는 것을 고려했기에
JSP에서는 저 코드를 이용했었는데 출력시에는 Java에서 바코드를 파일 형태로 제작했었다.
바코드를 제작하는 것도 QR코드와 동일하다.
public void makeBCode(int width, int height, String file_path, String file_name, WealthDevelop wealth) {
try {
// BarcodeWriter wirter = new ZXing.Mobile.BarcodeWriter;
String url = wealth.getWealthDno();
url = new String(url.getBytes("UTF-8"), "ISO-8859-1");
Barcode barcode = null;
barcode = (Barcode) BarcodeFactory.createCode128B(url);
barcode.setLabel(wealth.getWealthDno());
barcode.setName(wealth.getItemName());
// barcode.add(wealth.WealthDno, making(wealth));
// System.out.println("barcode get : " + barcode.getData());
Code128Writer code128Writer = new Code128Writer();
FileOutputStream fileStream = new FileOutputStream(file_path + File.separator + file_name);
BarcodeImageHandler.writePNG(barcode, fileStream);
} catch (Exception e) {
e.printStackTrace();
}
}
QR코드와 동일하게 파일 제작하는 경로와 Code128로 제작을 해주는데
Code128로 제작하는 이유는 바코드의 타입은 QR코드와 달리 정해져있다.
바코드 타입으로 codabar, code11, code39, code93, code128, ean8..... 등등 다양하기 때문에
저는 회사에서 필요로 하는 코드를 이용했다.
그렇게 code128로 제작해서 File을 생성하면 된다.
해당 파일들은 인턴했을 때 사용했던 노트북에 있는데.... 포멧.....ㅠㅠ
즉 QR코드처럼 바코드를 생성 -> 파일로 변환!
@RequestMapping(value = "departList.do")
public String departList(Model model, HttpServletRequest request,@RequestParam("PurchaseMangeDepartMent")
String DepartMent, @RequestParam("DepartSearch") String location) throws IOException {
Barcode barcode = null;
ArrayList<WealthDevelop> wealth = new ArrayList<WealthDevelop>();
wealth = Wservice.departAllSelect(DepartMent, location);
File file = new File(request.getContextPath());
String file_path = "C:" + File.separator + "Users" + File.separator + "dt2001329" + File.separator + "Desktop"
+ File.separator + "barcode" + File.separator;
System.out.println("get file " + file.getCanonicalPath());
for (int i = 0; i < wealth.size(); i++) {
String str = wealth.get(i).getWealthDno();
String file_name = str + ".PNG";
makeBCode(150, 150, file_path, ("B" + file_name), wealth.get(i));
}
model.addAttribute("wealthclass", wealth);
return "wealthList/depart/departList";
}
위의 컨트롤러는 QR코드 제작 시 보여줬던 컨트롤라와 동일하다.
여기서 보는 것처럼 바코드를 반복문으로 생성해줬다.
반복문으로 생성했던 이유는 QR코드 제작 시 설명했기에 이 부분은 생략
추후에는 데이터 추가 시 생성하는 방향으로 제작하기에 반복문이 아닌
생성하는 부분에서 바코드를 만들어주면 된다.
오늘 포스팅은 바코드를 생성하는 과정에 대해서 설명했는데
다음에는 더 발전된 포스팅으로 찾아오겠습니다.
'Programing > Java & Spring' 카테고리의 다른 글
Spring MVC를 이용하여 웹 페이지 제작 vo2 : spring 초기 설정을 해보자 (0) | 2021.01.06 |
---|---|
Spring MVC를 이용하여 웹 페이지 제작 vo1 : Spring MVC을 이해하자 (0) | 2021.01.06 |
IT세무민의 코딩일기 : QR코드 제작하기 (2) | 2021.01.04 |
IT세무민의 코딩일기 : JqGrid를 이용해서 테이블을 손쉽게 만들어봅시다 (2) | 2020.12.16 |
웹 페이지 프로젝트 일기 : Ajax 부시다가 내가 털렸당...ㅎㅎ (Ajax - Json - Table) (0) | 2020.12.14 |