Заполнение штрих-кода на основе пользовательского ввода

#c# #asp.net #barcode

#c# #asp.net #штрих-код

Вопрос:

Я пытаюсь успешно распечатать штрих-код на основе пользовательского ввода, но штрих-код заполняется неправильно. Высота и ширина изображения увеличивается / уменьшается по мере ввода пользователем.

Пожалуйста, посмотрите на приведенное Ниже эталонное изображение.введите описание изображения здесь

Для этого я попробовал приведенный ниже код.

 public void fun()
    {
        string barCode = txtCode.Text;
        System.Web.UI.WebControls.Image imgBarCode = new System.Web.UI.WebControls.Image();
        using (Bitmap bitMap = new Bitmap(Convert.ToInt32(txtW.Text), Convert.ToInt32(txtH.Text)))
        {
            using (Graphics graphics = Graphics.FromImage(bitMap))
            {
                Font oFont = new Font(@"C:Usersbojjaiah.thotiDownloadsIDAutomationCode39IDAutomation.com Free Code 39 FontIDAutomationHC39M.ttf", 16);
                PointF point = new PointF(2f, 2f);
                SolidBrush blackBrush = new SolidBrush(Color.Black);
                SolidBrush whiteBrush = new SolidBrush(Color.White);
                graphics.FillRectangle(whiteBrush, 0, 0, bitMap.Width, bitMap.Height);
                graphics.DrawString("*"   barCode   "*", oFont, blackBrush, point);
            }
            using (MemoryStream ms = new MemoryStream())
            {
                bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                byte[] byteImage = ms.ToArray();

                Convert.ToBase64String(byteImage);
                imgBarCode.ImageUrl = "data:image/png;base64,"   Convert.ToBase64String(byteImage);

            }

            plBarCode.Controls.Add(imgBarCode);
        }
    }
  

Пожалуйста, предложите заполнить штрих-код на основе пользовательских вводов.

Комментарии:

1. Height * 2 , width * 1.5 . Эти значения 1.5 и 2 являются предположительными, вам нужно их вычислить.

2. @VDWWD не работает.

Ответ №1:

Шрифт ID Automation Code 39 — это шрифт, поэтому, насколько я знаю, вам нужно установить размер шрифта для регулировки масштаба (так что ’16’ в конце вашего экземпляра шрифта должно соответствовать пользовательскому вводу). Я не уверен, что шрифт хорошо масштабируется, независимо регулируя вертикальный и горизонтальный масштаб.

Что вы можете захотеть сделать, так это запросить у пользователя ширину в пикселях или дюймах и их строку и рассчитать, какой размер шрифта использовать, исходя из количества символов в их строке. Затем рассчитайте, какой высоты получится штрих-код, и если эта высота больше, чем требуется для пользователя, нарисуйте белый прямоугольник в верхней части штрих-кода, чтобы отрезать полосы на правильной высоте.

 var buttonGen = document.getElementById("btnGen");
buttonGen.onclick = function () {
  var x = document.getElementById("textIn").value;
  var fs;

  // Change the font-size style to match the drop down
  fs = document.getElementsByTagName("option")[document.getElementById("selList").selectedIndex].value;
  document.getElementById("test").style.fontSize = fs    'px';
  
  document.getElementById("test").innerHTML =
    '*'   // Start Code B
    x   // The originally typed string
    '*'; // Stop Code
}  
 <html>
  <head>
  <link rel="stylesheet" media="screen, print" href="https://fontlibrary.org/face/idautomationhc39m-code-39-barcode" type="text/css"/>
    <style>
      td, th {
        text-align: center;
        padding: 6px;
      }
      .ss {
        font-family: "IDAHC39M Code 39 Barcode";
        font-size: 24px;
      }
    </style>
  </head>
  <body>
    amp;nbsp;Font Size:amp;nbsp;
    <select id="selList">
      <option value="12">12px</option>
      <option value="14">14px</option>
      <option value="16">16px</option>
      <option value="18">18px</option>
      <option value="20">20px</option>
      <option value="24" selected>24px</option>
      <option value="30">30px</option>
      <option value="36">36px</option>
      <option value="42">42px</option>
      <option value="48">48px</option>
      <option value="54">54px</option>
      <option value="60">60px</option>
      <option value="66">66px</option>
      <option value="72">72px</option>
      <option value="78">78px</option>
      <option value="84">84px</option>
      <option value="90">90px</option>
      <option value="96">96px</option>
    </select>amp;nbsp;

    <input type="text" id="textIn" value="12587"></input>
    <input type="button" id="btnGen" value="Generate Code 39" tabindex=4/>
    <div id="check"></div><br /><span id="test" class="ss">*12587*</span><br />
    <p>This is a demonstration of use of the Free ID Automation 39 Font.</p>
  </body>
</html>  

Комментарии:

1. Спасибо за ваш ответ. То же самое, что я реализовал. и с учетом пользовательских данных для их корректировки. Если вы найдете решение лучше этого, я имею в виду рассчитать шрифт на основе высоты и ширины, предложите ссылку.

2. Я поработаю над эквивалентом JS и обновлю свой фрагмент.