[C#] BarcodeLib -- 一個精簡而不失優雅的條形碼生成庫

来源:http://www.cnblogs.com/liqingwen/archive/2017/05/19/6876392.html
-Advertisement-
Play Games

BarcodeLib -- 一個精簡而不失優雅的條形碼生成庫 引言 在百度進行“C# 條形碼”等類似關鍵字搜索的時候,基本上是使用 ZXing 類庫進行條形碼的生成。今天我所介紹的是另一款類庫 Barcode,一起來共同見證它的強大之處。 目錄 插曲 官方介紹 Nuget 安裝 支持的類型 簡單使用 ...


BarcodeLib -- 一個精簡而不失優雅的條形碼生成庫

 

引言

  在百度進行“C# 條形碼”等類似關鍵字搜索的時候,基本上是使用 ZXing 類庫進行條形碼的生成。今天我所介紹的是另一款類庫 Barcode,一起來共同見證它的強大之處。

 

目錄

  • 插曲
  • 官方介紹
  • Nuget 安裝
  • 支持的類型
  • 簡單使用

 

插曲

  請先允許我娓娓道來一個凄美的故事。

  有一對情侶,男的非常懦弱,做什麼事情之前都讓女友先試。女友對此十分不滿。一次,兩人出海,返航時,颶風將小艇摧毀,幸虧女友抓住了一塊木板才保住了兩人的性命。女友問男友:“你怕嗎?”男友從懷中掏出一把水果刀,說:“怕,但有鯊魚來,我就用這個對付它。”女友只是搖頭苦笑。不久,一艘貨輪發現了他們,正當他們欣喜若狂時,一群鯊魚出現了,女友大叫:“我們一起用力游,會沒事的!”男友卻突然用力將女友推進海裡,扒著木板朝貨輪游去,並喊道:“這次我先試!”女友驚呆了,望著男友的背影,感到非常絕望。鯊魚正在靠近,可鯊魚對女友不感興趣而徑直向男友游去,男友被鯊魚凶猛地撕咬著,他發瘋似地沖女友喊道:“我愛你!”女友獲救了,甲板上的人都在默哀,船長坐到女友身邊說:“小姐,他是我見過最勇敢的人。我們為他祈禱!”“不,他是個膽小鬼。”女友冷冷地說。“您怎麼這樣說呢?剛纔我一直用望遠鏡觀察你們,我清楚地看到他把你推開後用刀子割破了自己的手腕。鯊魚對血腥味很敏感,如果他不這樣做來爭取時間,恐怕你永遠不會出現在這艘船上。”“什麼?”女友聽到真相如同晴天霹靂,她悲痛欲絕,傷心無比,但她突然想到男友是學C#的。只有學C#的程式員才有這麼高的覺悟, C#是目前使用最為廣泛的網路編程語言之一,它具有簡單,面向對象,穩定,與平臺無關,多線程,動態等特點。學C#的同學品質優異,有強大的博學雅正融合的意識,並具備強大的心理承受能力,人文情懷,領袖氣質,個個都是老師的好助手,同學的好伙伴。選擇C#,就是選擇成功!(來源於互聯網)

 

官方介紹

  • 在ASP.NET,Windows,Reporting Service,Crystal Reports 和 RDLC Reports應用程式中輕鬆生成條形碼
  • 生成準確的條形碼圖像,並可以保存為 C# 和 VB.NET 類中的 JPEG,GIF 或 PNG 圖像文件
  • 相容 C# 和 VB.NET
  • 由 .NET 程式員廣泛使用
  • 符合最新的條形碼符號體系標準,如 ISO / IEC,GS1
  • 創建線性條形碼,包括 Code39,Code128,GS1-128,Interleaved 2 of 5,EAN / UPC
  • 創建 2d 條形碼圖像,包括數據矩陣,PDF-417 和 QR 碼

 

Nuget 安裝

 

支持的類型

  類型很多,這裡演示使用的是 TYPE.CODE128B。

    public enum TYPE
    {
        UNSPECIFIED = 0,
        UPCA = 1,
        UPCE = 2,
        UPC_SUPPLEMENTAL_2DIGIT = 3,
        UPC_SUPPLEMENTAL_5DIGIT = 4,
        EAN13 = 5,
        EAN8 = 6,
        Interleaved2of5 = 7,
        Standard2of5 = 8,
        Industrial2of5 = 9,
        CODE39 = 10,
        CODE39Extended = 11,
        CODE39_Mod43 = 12,
        Codabar = 13,
        PostNet = 14,
        BOOKLAND = 15,
        ISBN = 16,
        JAN13 = 17,
        MSI_Mod10 = 18,
        MSI_2Mod10 = 19,
        MSI_Mod11 = 20,
        MSI_Mod11_Mod10 = 21,
        Modified_Plessey = 22,
        CODE11 = 23,
        USD8 = 24,
        UCC12 = 25,
        UCC13 = 26,
        LOGMARS = 27,
        CODE128 = 28,
        CODE128A = 29,
        CODE128B = 30,
        CODE128C = 31,
        ITF14 = 32,
        CODE93 = 33,
        TELEPEN = 34,
        FIM = 35,
        PHARMACODE = 36
    }

 

簡單使用

  Barcode 是核心類,它擁有 3 個構造函數,並且它實現了 IDisposable 介面,所以我們應該使用 uisng 關鍵字在執行完畢後進行資源的釋放。

        public Barcode();
        public Barcode(string data);
        public Barcode(string data, TYPE iType);

 

  Encode() 是用來進行編碼操作的方法,調用完畢後會生成一張點陣圖。

        public Image Encode(TYPE iType, string StringToEncode);
        public Image Encode(TYPE iType, string StringToEncode, Color ForeColor, Color BackColor);
        public Image Encode(TYPE iType, string StringToEncode, int Width, int Height);
        public Image Encode(TYPE iType, string StringToEncode, Color ForeColor, Color BackColor, int Width, int Height);

 

  當然,它也自帶了對應的保存到文件中的方法 SaveImage。

        public void SaveImage(string Filename, SaveTypes FileType);
        public void SaveImage(Stream stream, SaveTypes FileType);

 

  預設支持保存的文件類型:

    public enum SaveTypes
    {
        JPG = 0,
        BMP = 1,
        PNG = 2,
        GIF = 3,
        TIFF = 4,
        UNSPECIFIED = 5
    }

 

  這是一個較為簡單的用法:

        /// <summary>
        /// 生成條形碼
        /// </summary>
        /// <param name="content">內容</param>
        /// <returns></returns>
        public static Image GenerateBarCodeBitmap(string content)
        {
            using (var barcode = new Barcode()
            {
                IncludeLabel = true,
                Alignment = AlignmentPositions.CENTER,
                Width = 250,
                Height = 100,
                RotateFlipType = RotateFlipType.RotateNoneFlipNone,
                BackColor = Color.White,
                ForeColor = Color.Black,
            })
            {
                return barcode.Encode(TYPE.CODE128B, content);
            }
        }

  【備註】我在 IncludeLabel 屬性中對它進行了賦值 true 操作。如果不進行參數指定的話,就只能夠生成條形碼,而不會在底部顯示數據。

  你也可以進入 http://www.fanguzai.net/#/code 自己手動進行測試。

 

 


【博主】反骨仔

【原文】http://www.cnblogs.com/liqingwen/p/6876392.html

【參考】https://www.codeproject.com/Articles/20823/Barcode-Image-Generation-Library

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實在受不了在Windows下編程,所以自己就安裝了一個Ubutun,公司用的翻牆軟體shadowsocks在Windows上用起來很簡單很爽,但是在Ubutun上的安裝和配置就沒那麼簡單了,寫下這篇文章,希望需要的朋友能簡單快速的搞定shadowsocks的安裝和配置 1.安裝 在命令行執行上面的三 ...
  • 8.1 實例構造器和類(引用類型) 構造引用類型的對象時,在調用類型的實例構造器之前,為對象分配的記憶體總是先被歸零 。沒有被構造器顯式重寫的所有欄位都保證獲得 0 或 null 值。 構造器不能被繼承。不能使用以下修飾符: virtual,new,override,sealed和abstract. ...
  • IDE:VisualStudio 2017 Language:VB.NET/C# 圖形API:Win2D 游戲引擎:ExperDot.EDGameEngine 本文將向你介紹一種粒子系統(Partical System)模擬植物的簡單方法。 第一節 移動 粒子將按照某種規則移動,且始終保留移動軌跡。 ...
  • 本文內容是本人參考多本經典C 書籍和一些前輩的博文做的總結 儘管.NET運行庫負責處理大部分記憶體管理工作,但C 程式員仍然必須理解記憶體管理的工作原理,瞭解如何高效地處理非托管的資源,才能在非常註重性能的系統中高效地處理記憶體。 C 編程的一個優點就是程式員不必擔心具體的記憶體管理,垃圾回收器會自動處理所 ...
  • redis 介紹和常用命令 redis簡介 Redis 是一款開源的,基於 BSD 許可的,高級鍵值 (key-value) 緩存 (cache) 和存儲 (store) 系統。由於 Redis 的鍵包括 string,hash,list,set,sorted set,bitmap 和 hyperl ...
  • 此貼為本人原創,轉載請註明出處 序 前幾天更新了被打入冷宮很久的酷狗,等進入之後就感覺菊花一緊————試 聽 居 然 都 要 開 通 音 樂 包(高品和無損)才行了,WTF! 這意味著以前緩存的都聽不了了,本著好馬不吃回頭草的原則,不打算去降級了,下載PJ版的又擔心被植入惡意代碼,心好累╮(╯▽╰) ...
  • 在部署IIS環境中,偶爾會遇到 404 錯誤,就算以前遇到過,也因為時間久了導致大概知道是什麼錯了,具體解決方案覺忘了,所以留下一個記錄,留給自己,也是給大家一點提醒。(註:錯誤信息也懶得截圖了,希望大家諒解) 1.百度看到好多人說在web.config文件中添加modules runAllMana ...
  • 背水一戰 Windows 10 之 控制項(集合類): Pivot, Hub ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...