2012-01-17 43 views
6

庫/工具使用: 1)碧玉報告 2)iReport的 3)的Java碧玉報告 - 自定義條碼生成

我已經產生了一些標準條碼爲我的報告,但這個時候,我試圖生成一個自定義條形碼,爲此我有一個字體文件custom-barcode.ttf。截至目前,iReport支持2個條形碼庫 - Barcode4j和Barbecue,它們不支持我需要的自定義條形碼。任何想法開始,沒有太多的開銷使用一些新的庫(我已經使用Barcode4j)?

順便說一句,我知道類似的問題(custom barcode font)已經在這個網站上。

+0

如果您有custom-barcode.ttf,那麼就像在報告中使用文本元素並使用此字體一樣簡單? – mdahlman 2012-01-17 19:02:11

+0

mdahlman,我通過iReport設計器安裝字體並將文本字段拖放到報告並設置pdfEmbedded屬性之前查看了此內容。我的嘗試並不完整,但不知何故,這沒有意義。無論如何,我會再試一次並回復你。 – bchetty 2012-01-17 19:17:04

回答

2

剛剛嘗試@ mdahlman的答案,它的工作。我使用barcode39 font(免費)和Jaspersoft燒烤產生值"CODE123"Sample Barcode

使用字體設置大小不是很容易,但結果是相同的。我使用我的Android手機上的條碼掃描器驗證了條碼(可以看到它在視覺上也類似)。這個原因對我有用,可能同樣的原因@ bchetty的測試不起作用,是因爲Barcode39沒有檢查位。這是一個1對1的翻譯,除了在數據後面加上前導和尾隨星號(*)。如果你想使用ttf來生成一個帶有校驗位的條形碼類型,那麼你需要一個函數(如你所提到的外部jar)來對它進行編碼。 Barcode39不需要功能,因爲它只是"*" + V${data} + "*"

+0

我沒有驗證你的答案,但我知道你說的是正確的。所以,選擇你的答案作爲答案。謝謝。 :) – bchetty 2012-05-11 22:39:43

1

鑑於您有自定義barcode.ttf,它可以被視爲文本。所以,你的步驟是這樣的:

  1. 創建iReport的字體擴展定製barcode.ttf。
  2. 使用相關表達式在報告中創建文本字段。
  3. 將文本字段的字體設置爲「自定義條形碼」(或任何您稱之爲字體擴展名)。播放字體大小以獲得所需的輸出。

對條形碼使用自定義字體可能被認爲是一種黑客行爲。但它在簡單性方面缺乏靈活性。

+0

mdahlman,我的客戶的要求已更改。所以,我無法開始工作。所以,對於遲到的迴應感到抱歉。無論如何,我想要這個答案,因此賞金。我只是試過這個,它的工作。所以,非常感謝你的答案。我在嘗試這個問題之前就試過了,但不知何故,我無法在預覽中看到條形碼,因爲我預覽了HTML。我將其更改爲PDF預覽,並且工作正常。 :) – bchetty 2012-02-13 20:17:19

+0

mdahlman,我有機會使用條形碼掃描儀測試它,並使用上述邏輯生成的條形碼無法識別。所以,這不是答案。我一直想知道這一點,就好像生成條形碼很容易,爲什麼有人會使用大量的jar文件作爲依賴關係來生成條形碼?無論如何,上面的邏輯會生成某種條形碼(因爲字體),但它不是真的可以被機器讀取。 – bchetty 2012-02-17 11:37:17

+0

使用字體生成條形碼確實是一種破解(正如我之前提到的)。如果您將文本設爲粗體或斜體怎麼辦?這對條形碼沒有意義。如果HTML客戶端沒有這種字體(幾乎總是這樣),該怎麼辦?那麼你不能在HTML中使用它。更清潔的解決方案是生成圖像。這就是barcode4j和燒烤和ZXing這樣做的原因。但這是一個不同的工作級別(Java編碼)。考慮到你有一個聲稱生成條形碼的.ttf的起點......那麼你需要將它應用到文本字段。 – mdahlman 2012-02-20 15:29:34