2012-02-10 52 views
0

我需要一个免费 C#库允许创建PDF-417条形码。然而,我遇到的所有网站都是商业产品。你能推荐一个免费的图书馆吗?哪个免费的C#库可以生成PDF-417条形码?

+1

谷歌打开了这个SourceForge的打击:http://sourceforge.net/projects/pdf417lib/files/pdf417lib/0.91/Pdf417lib-csharp-0.91.zip/download – millimoose 2012-02-10 22:31:51

+0

谢谢,这可能工作。 – 2012-02-11 09:33:15

+0

实际上我在使用上述库时遇到了一些麻烦,因为没有有用的示例或文档。有没有人成功使用过这个库? – 2012-02-14 19:28:38

回答

-1

您可以使用SharpPDF417 nuget包。它是完全免费的。但是,我们需要编写一点包装代码来获取生成的字节[]或条形码流。

private byte[] GenerateBarCode(string data) 
{ 
    Pdf417Generator gen = new Pdf417Generator(data); 
    int bw = 2; 
    int bh = 2; 
    var barcode = gen.Encode(); 
    var width = barcode.Columns * bh; 
    var height = barcode.Rows * bh; 
    Byte[] imgData; 
    using (MemoryStream stream = new MemoryStream()) 
    { 
     using (System.Drawing.Image bmp = new Bitmap(width, height)) 
     { 
      using (Graphics graphics = Graphics.FromImage(bmp)) 
      { 


       int y = 0; 
       for (int r = 0; r < barcode.Rows; ++r) 
       { 
        int x = 0; 
        for (int c = 0; c < barcode.Columns; ++c) 
        { 
         if (barcode.RawData[r][c] == 1) 
         { 
          graphics.FillRectangle(Brushes.Black, x, y, bw, bh); 
         } 
         x += bw; 
        } 
        y += bh; 
       } 
      } 
      bmp.Save(stream, ImageFormat.Png); 
     } 

     imgData = stream.ToArray(); 
    } 
    return imgData; 
} 

您可以使用我的上述方法来获取生成的条码的字节数组。

+0

这不起作用。它产生的条形码看起来很好,但我无法用我的手机,在线条形码识别器或摩托罗拉扫描仪读取它。 ZXing.net包我可以读,但我有一个噩梦得到的纵横比正确 – 2017-08-09 01:07:27

+0

同上,生成它与级别0(不可扫描),级别4(文本被复制)和级别8(文本被截断) 。如果要将生成的条形码与其中一个在线扫描仪进行比较,则不会生成有效的pdf417条形码。 – user1361991 2017-11-21 23:17:32

3

您还可以使用ZXing.net nuget包,这将更加简单和易于使用。

private byte[] GenerateBarCodeZXing(string data) 
{ 
    var writer = new BarcodeWriter 
    { 
     Format = BarcodeFormat.PDF_417, 
     Options = new EncodingOptions { Width = 200, Height = 50 } //optional 
    }; 
    var imgBitmap = writer.Write(data); 
    using (var stream = new MemoryStream()) 
    { 
     imgBitmap.Save(stream, ImageFormat.Png); 
     return stream.ToArray(); 
    } 
} 
相关问题