2012-01-17 18 views
6

Biblioteki/Narzędzia używane: Raporty 1) Jasper 2) iReport 3) JavaJasper Reports - Niestandardowe Generation kreskowy

Ja już wygenerowane jakieś standardowe kody kreskowe w raportach, ale tym razem jestem próbując wygenerować niestandardowy kod kreskowy, dla którego mam plik czcionki custom-barcode.ttf. Od tej chwili iReport obsługuje 2 biblioteki kodów kreskowych - Barcode4j i Barbecue, które nie obsługują niestandardowego kodu kreskowego, który jest mi potrzebny. Wszelkie pomysły na rozpoczęcie, bez większego nakładu pracy przy użyciu nowej biblioteki (używam już Barcode4j)?

BTW, jestem świadomy, że podobne pytanie (custom barcode font) istnieje już na tej stronie.

+0

Jeśli masz własny-barcode.ttf, to czy jest to tak proste, jak umieszczenie elementu tekstowego w raporcie i użycie tej czcionki? – mdahlman

+0

mdahlman, zajrzałem do tego wcześniej, instalując czcionkę za pomocą projektanta iReport i przeciągając pole tekstowe do raportu i ustawiając właściwość pdfEmbedded. Moja próba nie była kompletna, ale jakoś nie miało to sensu. Tak czy siak, spróbuję jeszcze raz i wrócę do ciebie. – bchetty

Odpowiedz

2

Po prostu wypróbowałem odpowiedź @ mdahlmana i zadziałało. Wygenerowałem wartość "CODE123" przy użyciu barcode39 font (bezpłatnie) i Jaspersoft Barbecue. Sample Barcode

Ustawienie rozmiaru nie jest łatwe przy użyciu czcionki, ale wynik jest taki sam. Zweryfikowałem kod kreskowy za pomocą czytnika kodów kreskowych na moim telefonie z Androidem (widzę, że jest on również podobny wizualnie). Powód, dla którego to zadziałało dla mnie, prawdopodobnie ten sam powód testu @ bchetty nie zadziałał, jest taki, że Barcode39 nie ma cyfry kontrolnej. Jest to tłumaczenie 1-do-1, z wyjątkiem wiodącej i końcowej gwiazdki (*) dołączonej do danych. Jeśli chcesz użyć ttf do wygenerowania kodu kreskowego, który ma cyfrę kontrolną, będziesz potrzebować funkcji (zewnętrznego słoika, o którym wspomniałeś), aby ją zakodować. Kod kreskowy39 nie potrzebuje funkcji, ponieważ jest to tylko "*" + V${data} + "*".

+0

Nie zweryfikowałem Twojej odpowiedzi, ale wiem, co powiedziałeś jest poprawne. Dlatego wybierając odpowiedź jako odpowiedź. Dziękuję Ci. :) – bchetty

1

Biorąc pod uwagę, że masz niestandardowy kod kreskowy.ttf, naprawdę można go traktować jak tekst. Tak więc twoje kroki są następujące:

  1. Utwórz rozszerzenie czcionki w iReport dla custom-barcode.ttf.
  2. Utwórz pole tekstowe w raporcie z odpowiednim wyrażeniem.
  3. Ustaw czcionkę pola tekstowego na "niestandardowy kod kreskowy" (lub jakkolwiek inaczej nazwiesz rozszerzenie czcionki). Graj z rozmiarem czcionki, aby uzyskać pożądane wyniki.

Używanie niestandardowej czcionki do kodu kreskowego może być uznane za hak. Ale brakuje jej elastyczności, którą nadrabia w prostocie.

+0

mdahlman, wymagania mojego klienta uległy zmianie. Więc nie mogłem nad tym popracować. Tak, przepraszam za spóźnioną reakcję. Tak czy inaczej, chciałem odpowiedzi na to, a co za tym idzie nagrodę. Właśnie próbowałem tego i to działało. Dziękuję bardzo za odpowiedź. Próbowałem go, zanim wrzuciłem nagrodę za to pytanie, ale jakoś nie mogłem zobaczyć kodu kreskowego w podglądzie, bo to byłby podgląd HTML. Zmieniłem go na podgląd PDF i zadziałało. :) – bchetty

+0

mdahlman, mam możliwość przetestowania go za pomocą skanera kodów kreskowych i kodu kreskowego generowanego przy użyciu powyższej logiki, jest niezrozumiały. Tak więc to nie jest odpowiedź. Zawsze zastanawiałem się nad tym, jak gdyby tak łatwo było wygenerować kod kreskowy, dlaczego ktoś używałby mnóstwa plików słoików jako zależności, aby generować kody kreskowe? W każdym razie powyższa logika generuje jakiś kod kreskowy (ze względu na czcionkę), ale nie jest tak naprawdę czytelny dla maszyny. – bchetty

+0

Używanie czcionki do generowania kodów kreskowych jest rzeczywiście hack (jak wspomniałem pierwotnie). Co zrobić, jeśli tekst zostanie pogrubiony lub pochyły? Nie ma to znaczenia dla kodów kreskowych. Co zrobić, jeśli klient HTML nie ma tej czcionki (co będzie prawie zawsze prawdziwe)?Wtedy nie możesz tego użyć w HTML. O wiele czystszym rozwiązaniem jest generowanie obrazu. Właśnie dlatego robi to barcode4j, grill i ZXing. Ale to inny poziom pracy (kodowanie Java). Biorąc pod uwagę, że masz plik .ttf, który twierdzi, że generuje kody kreskowe ... musisz zastosować go do pola tekstowego. – mdahlman

Powiązane problemy