如何生成可读的条形码

本文关键字:条形码 何生成 | 更新日期: 2023-09-27 18:08:11

我想生成条形码,为此我使用以下代码

protected void Button3_Click(object sender, EventArgs e)
    {
        string barCode = TextBox1.Text;
        System.Web.UI.WebControls.Image imgBarCode = new System.Web.UI.WebControls.Image();
        using (Bitmap bitMap = new Bitmap(barCode.Length * 40, 80))
        {
            using (Graphics graphics = Graphics.FromImage(bitMap))
            {
                Font oFont = new Font("IDAutomationHC39M", 16);
                //Font oFont = new Font(Server.MapPath("~''Fonts''IDAutomationHC39M.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);
        }
}

如果我在系统中安装字体"IDAutomationHC39M"并试图生成条形码,则此代码可以正常工作。但它是不工作,如果我保持这个字体在特定的文件夹和传递字体路径的字体对象在代码。例如Font oFont = new Font(Server.MapPath("~''Fonts''IDAutomationHC39M.ttf"), 16);在这种情况下,没有生成条形码,无论我在Textbox中传递的文本是什么,都是原样打印的。

所以我想知道有必要在系统中安装字体,是否有可能在特定文件夹中保留条形码字体,并可以从中生成条形码。

谁能给我一个解决这个问题的办法

我在Asp.net, c#工作

如何生成可读的条形码

你读过这个吗?

它解释了如何创建一个私有字体集合并将文件字体添加到其中。

private FontFamily LoadFontFamily(string fileName, out PrivateFontCollection _myFonts)
        {
            //IN MEMORY _myFonts point to the myFonts created in the load event 11 lines up.
            _myFonts = new PrivateFontCollection();//here is where we assing memory space to myFonts
            _myFonts.AddFontFile(fileName);//we add the full path of the ttf file
            return _myFonts.Families[0];//returns the family object as usual.
        }

,然后你可以用

    Font theFont = new Font(family, 20.0f);
    //HERE WE SET THE LABEL FONT PROPERTY TO THE ONE WE JUST LOADED
    label1.Font = theFont;