AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte [Bibliothek] Barcode für Delphi (Zint)

[Bibliothek] Barcode für Delphi (Zint)

Ein Thema von chaosben · begonnen am 27. Nov 2009 · letzter Beitrag vom 24. Okt 2020
Antwort Antwort
Seite 5 von 14   « Erste     345 67     Letzte » 
Benutzerbild von chaosben
chaosben
Registriert seit: 27. Apr 2005
Geschichte & Hintergrund
Ende 2009 entstand hier und im TUO-Repository die TZintBarcode-Komponente. Das war ein Compilat der Zint-Bibliothek als 32bit-Windows-DLL und die dazu passenden Delphi Wrapper-Klassen und Komponenten.
Zint ist ein C-Projekt von Robin Stuart, einem sehr netten Entwickler aus UK.
Nach einer Weile starb das original Zint-Projekt (und damit auch die Weiterentwicklung unserer Komponente) weil Robin das Projekt nicht mehr unterstützte.
Ende Mai 2012 kam wieder frischer Wind in das Zint-Projekt, auch durch den Fork (was auch gleichzeitig der aktuelle Stand der Dinge ist) von Ismael Luceno auf github.
Da wir externe Abhängigkeiten(in diesem Fall die zint.dll) nicht gern haben, entschieden wir uns (nach Absprache mit Robin), den originalen C-Code nach Pascal zu übersetzen.
Dabei gelten 2 Regeln:
  1. So nah wie möglich am originalen C-Code bleiben, damit Bugfixes und Features möglichst einfach übernommen werden können
  2. So Pascal wie möglich, damit auch die FreePascal-Gemeinde (und damit möglichst viele Plattformen) etwas davon hat.
Und damit sind wir im Heute angekommen. Die Übersetzung ist vollständig erledigt und nun warten wir auf euer Feedback.

Was es ist
Dies ist eine native Pascal-Implementation der Zint-Bibliothek zur Erstellung von verschiedenen 1D- und 2D-Barcodes.

Download
Den Code gibts per SVN.
Lizenz
Apache License 2.0

Was im Moment geht
Zur Zeit sind folgende Codes verfügbar:
  • 2of5Matrix, 2of5Industrial, 2of5Interleaved, 2of5IATA, 2of5Datalogic
  • Deutsche Post Leitcode, Deutsche Post Identcode
  • EAN128, Code128, Code128B, NVE18, ITF14, EAN14
  • Datamatrix
  • Maxicode
  • Code 11, Code 39, Pharmacentral (PZN), Extended Code39, Code93
  • Pharmacode, 2-Track-Pharmacode, Codabar, Code32
  • Australia Post Code, Australia Post Reply Code, Australia Post Route Code, Australia Post Redirect Code
  • Aztec, Azrunes
  • Code16k
  • Code49
  • Composites: EAN128
  • QR-Code, MicroQR-Code
  • Gridmatrix
  • Plessey, MSI-Plessey
  • EAN13, EAN5, EAN2, UPCA, UPCE, ISBN
  • Telepen,
  • [Korea|Dutch|Japan]Post
  • GS1-Databar
Folgende Rendering-Ziele werden im Moment unterstützt:
  • TCanvas (Delphi, FMX, Lazarus)
  • TMetafile (Delphi)
  • TlmfImage (Lazarus)
  • TBitmap (Delphi, FMX, Lazarus)
  • SVG nativ (Delphi, FMX, Lazarus)

Was noch fehlt
  • Firebird-UDF (man darf doch mal träumen, oder?)

Danke für die Mitarbeit (Ideen, Bugs, ...)
Fragen, Anregungen, Issues
Falls ihr dergleichen habt, schreibt sie bitte in den Issue-Tracker oder auch in diesen Thread (falls eine akute Google-Allergie besteht ). In der Regel sollte sich eine Lösung finden lassen.
Wünsche, die in Form einer PayPal-Zahlung ankommen, werden bevorzugt bearbeitet.

Viel Spass!
Angehängte Grafiken
 
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)

Geändert von chaosben ( 9. Feb 2014 um 07:45 Uhr)
 
0815achim
 
#41
  Alt 23. Aug 2013, 09:13
Hallo

Ich wollte soeben voller Erwartung ZINT auch mal ausprobieren.
Leider fehlt mir aber zum compilieren die "zint_metafile.pas"

Viele Grüße... 0815achim
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

 
Delphi 10.1 Berlin Professional
 
#42
  Alt 23. Aug 2013, 09:37
Major UPDATE

ab heute wird's wohl nicht mehr funktionieren - aber zumindest compiliert es

Wir haben den Code jetzt insoweit angepasst, daß er jetzt keinerlei AnsiString und AnsiChar Code mehr enthält. Das heißt alle "Strings" sind intern jetzt 0-basierende Byte oder Char Arrays. Das liegt näher am C Code und sollte jetzt kompatibel mit den mobilen Plattformen sein.

Es wäre nett, wenn das jemand verifizieren könnte (iOS oder Android) - auch, ob sich diese erstellten Barcodes auch scannen lassen (nicht alles was dicke und dünne Striche hat ist ein lesbarer Barcode )

Außerdem werden jetzt die Gs1 Composite Barcodes unterstützt (zumindest EAN128) http://www.dlsoft.com/barcode_types/...de_symbols.htm

schönes Wochenende
Marco

PS @ achim - das zint_metafile war deprecated... in der aktuellen revision ist es nicht mehr dabei ... war noch eine Leiche .. danke fürs bescheid geben
Marco Warm
  Mit Zitat antworten Zitat
0815achim
 
#43
  Alt 23. Aug 2013, 11:02
OK!

Danke für die schnelle Antwort.

Gruß... 0815achim
  Mit Zitat antworten Zitat
0815achim
 
#44
  Alt 26. Aug 2013, 12:11
Hallo

Ich schon wieder.
Erst mal mein Lob für die klasse Arbeit und die Muhe.

Ich habe beim rumprobieren noch einen kleinen Fehler entdeckt.
Beim erzeugen von DataMatrix wird in der generierten Grafik immer ein "@" angehängt.

Den Fehler selber habe ich im zint_dmatrix.pas Teil gefunden.
Dort steht in Zeile 479 "while (sp <= inputlen) do".
Richtig wäre aber "while (sp < inputlen) do".

Viele Grüße... 0815achim
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

 
Delphi 10.1 Berlin Professional
 
#45
  Alt 26. Aug 2013, 13:10
uuuuuuuuuuuuuuuuuuuuuund gefixt

und als Belohnung für's Fehlerfinden gibts jetzt gratis den QR Code encoder obendrauf

Gruß
Marco
Marco Warm
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#46
  Alt 27. Aug 2013, 15:31
Update 27.08.13: wer hat einen Scanner der Gridmatrix lesen kann?

Seit heute sind folgende neue Codes verfügbar: MicroQR und Gridmatrix.
Außerdem haben wir intern (TEncoding, StrtoArrayOfByte, ...) ein wenig auf-/umgeräumt. Hoffentlich läuft es jetzt noch auf allen System sauber.
Benjamin Schwarze
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

 
Delphi XE2 Professional
 
#47
  Alt 28. Aug 2013, 16:30
Update 28.08.13: Neue Codes und ein paar Helper

Neu hinzugekommen sind EAN-Codes, einige Plessey's und ein paar Helper um die Optionen eines Symbols besser zu setzen (TZintSymbol.???Options)
Benjamin Schwarze
  Mit Zitat antworten Zitat
Furtbichler
 
#48
  Alt 29. Aug 2013, 07:12
..auch, ob sich diese erstellten Barcodes auch scannen lassen (nicht alles was dicke und dünne Striche hat ist ein lesbarer Barcode )
Wenn ihr pixelgenau rendert, dann solltet ihr doch einen Unittest schreiben können, denn bitmapbasierte Barcodeencoder APIs sollte es doch geben, oder? Nur so ne Idee.

Und falls ihr wider erwarte nicht pixelgenau rendert (also die Strich- und Zwischenraumdicken auf pixel herunterrechnet und ggf. anpasst), dann garantiere ich euch, das eure Barcodes nicht immer lesbar sind (genaugenommen nur mit hochauflösenden Druckern).

Und leider bzw. gott-sei-dank gibt es auch bei Scannern gute und schlechte (wobei die schlechten nach Spec decoden, was ja nicht gerade 'schlecht' ist) und die guten eine Art Fuzzy Logic haben ('sieht am ehesten nach EAN aus, ist zwar außerhalb der Spec, aber lesbar')

Nur die 'guten' lesen auch schlecht gerenderte Barcodes (d.h. nicht pixelgenau) und das auch nicht immer. Leider. Ich kenne ein Gerät von SICK, welches neben dem Lesen auch eine Analyse der Barcodegüte ausspuckt. Aber das kostet ne Ecke.

Das war mein Senf zum Donnerstag.
  Mit Zitat antworten Zitat
weisswe
 
#49
  Alt 29. Aug 2013, 07:41
[QUOTE=Furtbichler;1226571]
Und leider bzw. gott-sei-dank gibt es auch bei Scannern gute und schlechte (wobei die schlechten nach Spec decoden, was ja nicht gerade 'schlecht' ist) und die guten eine Art Fuzzy Logic haben ('sieht am ehesten nach EAN aus, ist zwar außerhalb der Spec, aber lesbar')
Ich habe einmal auf einem Whiteboard händisch einen Barcode gemalt - auch dieser konnte von unseren Barcodescannern gelesen werden. Die waren wirklich "fuzzy"..
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

 
Delphi 10.1 Berlin Professional
 
#50
  Alt 29. Aug 2013, 08:38
Also,

um der, zu befürchtenden Diskussion ("Ihr malt eure Barcodes ja schlimmer als ein Kleinkind mit dem Fuss") hier mal den Wind aus den Segeln zu nehmen:

Wir (besser gesagt zint) rendert den Barcode, so genau es die entsprechende Canvas zulässt. Das ist im Falle eines Bitmaps/Printers Pixelgenau, bei WMF/LMF/SVG etc. Fließkommagenau!

Zu meiner Aussage
Zitat:
..auch, ob sich diese erstellten Barcodes auch scannen lassen (nicht alles was dicke und dünne Striche hat ist ein lesbarer Barcode )
bezieht sich vielmehr auf die Logik der Barcodeerstellung. Da wir von 1 auf 0 basierte Strings/Arrays gewechselt haben kann es durchaus sein, daß wir dabei einen Encoder "zerschossen" haben (Endbedingungen von for-Schleifen etc.). Und es war auch ein wenig Ironie dabei

Gruß
Marco
Marco Warm
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz