在一些生產制造行業條形碼是必不可少的。比如,打印工作單、原材料出入庫、成品出庫發貨等都需要掃描條形碼進行數據采集。最近發現公司打印出的工作單上出現了條碼,打印工單的程序是用PHP寫的,於是乎看看源代碼是怎麼實現的。原來是通過一個生成Barcode的類將相應的數據轉給該程序並生成JPG文件。
自己在網上搜了搜實現Barcode的其他方法,找到一個國外的開源程序專門用來生成“一維條形碼”。首先,復習一下條形碼的相關知識。
條形碼分類
一、按碼制分類
1.UPC碼
1973年,美國率先在國內的商業系統中應用於UPC碼之後加拿大也在商業系統中采用UPC碼。UPC碼是一種長度固定的連續型數字式碼制,其字符集為數字0~9。它采用四種元素寬度,每個條或空是1、2、3或4倍單位元素寬度。IPC碼有兩種類型,即UPC-A碼和UPC-E碼。
2.EAN碼
1977年,歐洲經濟共同體各國按照UPC碼的標准制定了歐洲物品編碼EAN碼,與UPC碼兼容,而且兩者具有相同的符號體系。EAN碼的字符編號結構與UPC碼相同,也是長度固定的、連續型的數字式碼制,其字符集是數字0~9。它采用四種元素寬度,每個條或空是1、2、3或4倍單位元素寬度。EAN碼有兩種類型,即EAN-13碼和EAN-8碼。
3.交叉25碼
交叉25碼是一種長度可變的連續型自校驗數字式碼制,其字符集為數字0~9。采用兩種元素寬度,每個條和空是寬或窄元素。編碼字符個數為偶數,所有奇數位置上的數據以條編碼,偶數位置上的數據以空編碼。如果為奇數個數據編碼,則在數據前補一位0,以使數據為偶數個數位。
4.39碼
39碼是第一個字母數字式碼制。1974年由Intermec公司推出。它是長度可比的離散型自校險字母數字式碼制。其字符集為數字0—9,26個大寫字母和7特殊字符(-、。、Space、/、%、¥),共43個字符。每個字符由9個元素組成,其中有5個條(2個寬條,3個窄條)和4個空(1個寬空,3個窄空),是一種離散碼。
5.庫德巴碼
庫德巴碼(Code Bar)出現於1972年,是一種長度可變的連續型自校驗數字式碼制。其字符集為數字0—9和6個特殊字符(-、:、/、。、+、¥),共16個字符。常用於倉庫、血庫和航空快遞包裹中。
6.128碼
128碼出現於1981年,是一種長度可變的連續型自校驗數字式碼制。它采用四種元素寬度,每個字符由3個條和3個空,共11個單元元素寬度, 又稱(11,3)碼。它由106個不,同條形碼字符,每個條形碼字符有三種含義不同的字符集,分別為A、B、C。它使用這3個交替的字符集可將128個ASCII碼編碼。
7.93碼
93碼是一種長度可變的連續型字母數字式碼制。其字符集成為數字。0-9,26個大寫字母和7個特殊字符(-、。、Space、/、+、%、¥)以及4個控制字符。每個字符由3個條和3個罕,共9個元素寬度。
8.49碼
49碼是一種多行的連續型、長度可變的字母數字式碼制。出現於1987年,主要用於小物品標簽上的符號。采用多種元素寬度。其字符集為數字0-9,26個大寫字母和7個特殊字符(-、。、Space、%、/、+、%、¥)、3個功能鍵(F1、 陀、F3)和3個變換字符,共49個字符。
9.其他碼制
除上述碼外,還有其他的碼制,例如25碼出現於1977年,主要用於電子元器件標簽;矩陣25碼是11碼的變形;Nixdorf碼已被EAN碼所取代Plessey碼出現於1971年5月主要用於圖書館等。
二、按維數分類
1.普通的一維條碼
普通的一維條碼自本問世以來,很快得到了普及並廣泛應用。但是由於一維條碼的信息容量很小,如商品上的條碼僅能容13位的阿拉伯數字,更多的描述商品的信息只能依賴數據庫的支持,離開了預先建立的數據庫,這種條碼就變成了無源之水,無本之木,因而條碼的應用范圍受到了一定的限制。
2.二維條碼
除具有普通條碼的優點外,二維條碼還具有信息容量大、可靠性高、保密防偽性強、易於制作、成本低等優點。<BR>美國Symbol公司於1991年正式推出名為PDF417的二維條碼,簡稱為PDF417條碼,即“便攜式數據文件”。FDF417條碼是一種高密度、高信息含量的便攜式數據文件,是實現證件及卡片等大容量、高可靠性信息自動存儲、攜帶並可用機器自動識讀的理想手段。
3.多維條碼
進入20世紀80年代以來,人們圍繞如何提高條形碼符號的信息密度,進行了研究工作。多維條形碼和集裝箱條形碼成為研究、以展與應用的方向。<BR>信息密度是描述條形碼符號的一個重要參數據,即單位長度中可能編寫的字母個數,通常記作:字母個數/cm。影響信息密度的主要因素是條、空結構和窄元系的寬度。<BR>128碼和93碼就是人們為提高密度而進行的成功的嘗試。128碼城1981年被推薦應用;而93碼於1982年投入使用。這兩種碼的符號密度均比39碼高將近30%。<BR>隨著條形碼技術的發展和條形碼三制的種類不斷增加,條形碼的標准化顯得愈來愈重要。為此,曾先後制定了軍用標准1189;交叉25碼、39碼和Coda Bar碼ANSI標准MH10.8M等。同時,一些行業也開始建立行業標准,以適應發展的需要。此後,戴維·阿利爾又研制出49碼。這是一種非傳統的條形碼符號,它比以往的條形碼符號具有更高的密度。特德·威廉姆斯(Ted Williams)GFI988推出16K碼,該碼的結構類似於49碼,是一種比較新型的碼制,適用於激光系統。
出處: (http://www.cnblogs.com/gnielee/)