Javascript로 유효한 코드 128 바코드 생성

유효한 Code 128 바코드를 생성하려면 몇 가지 규칙을 따라야 합니다. 표시하려는 문자 집합을 나타내는 시작 문자를 포함해야 합니다. 데이터 문자, 인코딩될 문자; 오류 검사를 위한 단일 문자인 체크섬; 마지막으로 바코드의 끝을 나타내는 정지 문자입니다.

the ID Automation Code 128 Barcode Font User Manual
에서 해당 문자(시작 및 중지)에 대한 자세한 지침과 인코딩하려는 데이터의 체크섬을 생성하는 방법을 찾을 수 있습니다.

대부분의 애플리케이션에서 세트 B 또는 C가 원하는 것입니다. 세트 B에는 숫자, 대문자 및 소문자, 일부 특수 문자가 포함됩니다. 세트 C는 00에서 99까지의 숫자를 나타내는 데 사용되며, 이는 거대한 숫자 문자열을 표현하려는 경우에 유용합니다. 세트 A에는 일부 특정 응용 프로그램에서 유용할 수 있는 숫자, 대문자 및 여러 제어 문자가 포함되어 있습니다.

또한 각 세트에는 해당 목적을 위한 제어 문자가 있으므로 동일한 바코드에서 세 개의 코드 세트 간에 전환할 수 있습니다. 그러나 이 게시물에서는 다루지 않습니다.

유효한 코드를 생성하려면 인코딩할 텍스트를 encodeToCode128 함수에 전달해야 합니다.

const checkbox = document.getElementById('withtext')

function checkSum128(data, startCode) {
  var sum = startCode;
  for (var i = 0; i < data.length; i++) {
    sum += (i + 1) * (data.charCodeAt(i) - 32);
  }
  return String.fromCharCode((sum % 103) + 32);
}

function encodeToCode128(text, codeABC = null) {
  var stop = String.fromCharCode(206);
  var startCode =
    codeABC == "A" ?
    String.fromCharCode(203) :
    codeABC == "C" ?
    String.fromCharCode(205) :
    String.fromCharCode(204);

  var check = checkSum128(text, startCode.charCodeAt(0) - 100);

  return startCode + text + check + stop;
}

function renderBarcodes(withText = true) {
  var barcodeElements = document.querySelectorAll(".barcode");
  var codes = [];
  barcodeElements.forEach((e) => {
    var code = e.attributes["data-barcode"].value;
    e.innerHTML = encodeToCode128(code);
    e.classList.toggle('with-text', withText)
  });
}

renderBarcodes();

checkbox.addEventListener('change', (event) => {
  renderBarcodes(event.currentTarget.checked)
});


유효한 바코드를 생성하려면 barcode 클래스를 빈div에 추가하고 원하는 데이터와 함께 data-barcode 특성을 전달합니다. 이것은 완전히 임의의 매개변수 이름이지만 renderBarcodes 함수가 찾을 매개변수입니다.

   <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Libre+Barcode+128">

   <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Libre+Barcode+128+Text">

   <input type="checkbox" id="withtext" name="Show Barcode With Text" checked>
   <label for="withtext">Show Barcode With Text</label>
   <br /> <br />

   <div class="barcode" data-barcode="https://dev.to/saulodias"></div>


다음은 사용된 Libre Barcode 글꼴을 올바르게 적용하기 위한 CSS입니다.

.barcode {
  font-family: "Libre Barcode 128", "Courier New", Courier, monospace;
  font-weight: normal;
  font-size: 52px;
  white-space: nowrap;
}

.with-text {
  font-family: "Libre Barcode 128 Text";
}


JS Fiddle Example here을 참조하십시오.

원하는 경우 예제에 사용된 글꼴을 여기에서 다운로드할 수 있습니다.
  • Libre Barcode 128
  • Libre Barcode 128 Text

  • 스택 오버플로 Tawimplemented this in C# . 나는 그의 구현을 참조로 사용했습니다. 그러나 그가 설명한 몇 가지 주의 사항이 있습니다. 또한 Set B로 예제를 테스트했으며 체크섬 기능이 정확하더라도 숫자를 그룹화해야 하므로 Set C 변환을 올바르게 처리하지 못한다고 생각합니다.

    추신 서버 측 PDF를 생성할 때 글꼴 및/또는 CDN 글꼴에 문제가 있는 경우 서버에 글꼴을 설치해야 할 수 있습니다. 어쨌든 저는 이 게시물의 범위를 벗어난 몇 가지 이유로 CDN 글꼴을 사용하는 것을 좋아하지 않습니다.

    좋은 웹페이지 즐겨찾기