2008-11-17 95 views
3

首先,我對條形碼格式有所瞭解,以及我所知道的,我從維基百科學到的。問題匹配Code128A使用iTextSharp與Barcode生成的條碼.4NET

我們有一些條形碼由使用Barcode.4NET庫的現有應用程序生成。條碼採用Code 128A格式。生成它們的代碼非常簡單,看起來像這樣:

// Create the barcode 
Code128ABarcode c128A = new Code128ABarcode("045746201627080857"); 

沒有其它參數設置爲它 - 設置數據後,我們剛剛得到的條形碼的GIF版本從圖書館回來。

我正在研究一個使用iTextSharp進行PDF生成的新應用程序,並且我認爲不是使用兩個庫,而是使用iTextSharp的條形碼生成庫,因爲它支持Code128條形碼。它具有Code 128的幾種不同的變體,但它們都不是「Code 128A」。

下面是代碼是什麼樣子吧:

Barcode128 code128 = new Barcode128(); 
code128.CodeType = Barcode.CODE128; 
code128.ChecksumText = true; 
code128.GenerateChecksum = true; 
code128.StartStopText = true; 
code128.Code = "045746201627080857"; 

下圖顯示了我迄今所取得的最好的。

alt text

在頂部的圖像通過iTextSharp的產生,並且通過Barcode4Net產生底部的一個。顯然,它們不一樣(不僅僅是大小和字體 - 條形碼數據是非常不同的)。

是否有人對iTextSharp(或iText本身)條形碼組件或Code 128A條形碼足夠熟悉,告訴我如何使iTextSharp看起來與Barcode.4NET一模一樣?

回答

3

他們真的有必要看起來完全一樣嗎?即使條碼本身看起來完全不同,Code 128的不同版本也都可以編碼。讀者應該把它全部整理出來。

我更喜歡B變體,因爲除了大寫字母外,它還有小寫字母。您可以在http://www.barcodeisland.com/code128.phtml

之間看到詳細的差異表格iTextSharp看起來像它正在生成變體C,如果文本僅爲十進制數字,則它是最緊湊的。它在與其他編碼中的單個字符相同的空間中編碼2個數字。

3

數量應該是:

*045746201627080857* 

您需要將星號添加到這樣的條形碼可以readed,你需要在組件文檔女巫一個需要這個角色來檢查的開始和結束。

掃描儀需要這種類型的BC上的前導和後綴星號。

什麼,我可以在你的代碼中看到,該行

code128.StartStopText = true; 

自動添加它,試圖將此屬性設置爲false,你最終會用相同的條形碼。在第一個代碼,你應該使用

Code128ABarcode c128A = new Code128ABarcode("*045746201627080857*"); 

嘗試自己:)

編輯:

正確的條形碼是:

alt text http://www.bcgen.com/demo/linear-dbgs.aspx?D=045746201627080857&S=13&CS=1

從下面的鏈接(使用ID Automation free service):

http://www.bcgen.com/demo/linear-dbgs.aspx?D=045746201627080857&S=13&CS=1 

你所擁有的是:

alt text http://www.bcgen.com/demo/linear-dbgs.aspx?D=045746201627080857&S=13&CS=3

,這是Code128C,而不是Code128A,你可以檢查網絡連接(我改變了barcode properties到Code128C)

http://www.bcgen.com/demo/linear-dbgs.aspx?D=045746201627080857&S=13&CS=3

+0

Code128ABarcode行顯然是*正確*(這是我試圖匹配的那一行)。我嘗試過的星號和改變的StartStopText的任何組合仍然不匹配。 – CMPalmer 2008-11-17 03:23:58

+0

我剛編輯並添加了正確的代碼。 Barcode.4NET庫爲您提供Code128C代替Code128A。 – balexandre 2008-11-17 04:05:13

+0

星號只對代碼3爲9而非代碼128需要。 – 2008-11-17 04:33:40

1

雖然我認爲balexandre有混合發電機,他的建議是好的。

很明顯Barcode.4NET正在正確生成我試圖模擬的Code 128A條形碼。

iTextSharp正在生成一個Code 128C條形碼,根據Mark Ransom的說法,除了用戶和用戶可能會看它並說「太短了,應該看起來像其他的!

所以,很好的建議,但我仍然回到「我如何使用iTextSharp生成Code 128A條形碼?」