Barcode generierung mit ZXing

olgunk

Grünschnabel
Hallo zusammen,

Ich möchte ein GS1 Databar Expanded BarCode generieren .
Habe bei google gesucht konnte aber nicht nützliches finden können.
Bei XZing gibt es die möglichkeit mehrere Barcode Formate zu generieren, lediglich konnte ich kein Databar Expanded Barcode finden/generieren.
1) gibt es die möglichkeit überhaupt dies zu generieren?
2) wie könnte ich dies machen?
3) Bzw. kann man dieses Problem in einer anderen Programiersprache realisieren.

Hier mein Code:

Code:
package de.olgun.barcodee128;
import java.io.File;
import java.io.FileOutputStream;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.oned.Code128Writer;
import com.google.zxing.oned.Code39Writer;
import com.google.zxing.oned.OneDimensionalCodeWriter;
import com.google.zxing.oned.rss.expanded.decoders.AbstractExpandedDecoder;

public class barcode128 {
	public static void main(String[] args) {
       
           int width = 440; 
           int height = 48;
            
              
           BitMatrix bitMatrix;
        try {
            bitMatrix = new Code128Writer().encode("10400550006232515201231",BarcodeFormat.RSS_EXPANDED,width,height,null);
        	MatrixToImageWriter.writeToStream(bitMatrix, "png", new FileOutputStream(new File("C:\\Users\\fecub\\Desktop\\zxing_barcode.png")));
        } catch (WriterException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

    }

}

Freue mich für jede Hilfe.Danke im voraus.

Gruß
 
Soll das für mein Praktikumsbetrieb machen und die wollen dafûr nichts zahlen.
Mit PostScript möchte die Firma nicht weil das eine ausführbare Java Datei sein
 
Welche Version von ZXing setzt du ein? Laut einem Commit (http://code.google.com/p/zxing/source/detail?r=1350) sollte der Typ eigentlich unterstützt werden. Anscheinend liegt es daran, wie man die Barcode-Daten an den Renderer übergibt. Versuch mal deinen String so aufzubauen:

(11)100224(17)110224(3102)000100

Bzw. was kommt bei dir eigentlich raus, das du meinst, es funktioniert nicht?
 
Ich benutze die aktuelle Version.
Es gibt keine Data Bar Expended.
Hast du vielleicht ein Exempel Code. Weil ich alles schon ausprobiert habe.
 
Wenn du den Sourcecode von ZXing runter lädst, bekommst du in core/test/src/com/google/zxing/oned/rss/expanded Test-Fälle. In denen sollten einige Beispiele drin sein.
 
Es gibt für z.B. für Ean128 eine Klasse Code128Writer oder Ean39 eine klasse Code39Writer um barcodes zu generieren. Aber ich finde keine writer klasse für rss expanded. Habe mir auch die Beispiele angesehen in denen existieren eigentlich nur klassen die relevant für das Lesen von barcodes sind.

Das sind die files die als Tests zur verfügung stehen:

BitArrayBuilder.java
ExpandedPair.java
RSSExpandedReader.java
 
Sorry, wenn ich da falsche Hoffnungen geweckt habe, war ein Recherche-Irrtum meinerseits. Da du die gleiche Frage - wie ich schon bei der Suche nach einer Lösung entdeckt habe - in anderen Foren ohne Lösung gestellt hast, bin ich mittlerweile der Auffassung, das es einfach noch keine Lösung gibt. Die einzige Möglichkeit wäre, sich selbst ran zu setzen und einen Encoder zu schreiben.

Meine Experimente mit MultiFormatWriter brachten keine funktionierende Applikation zustande:

Java:
import java.io.File;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;


public class Rss14 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int width = 200;
		int height = 90;
		
		MultiFormatWriter writer = new MultiFormatWriter();
		try {
			//BitMatrix matrix = writer.encode("123456789", BarcodeFormat.RSS_14, width, height);
			BitMatrix matrix = writer.encode("123456789", BarcodeFormat.RSS_EXPANDED, width, height);
			MatrixToImageWriter.writeToFile(matrix, "PNG", new File("test.png"));
		} catch (Throwable e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

Code:
java.lang.IllegalArgumentException: No encoder available for format RSS_EXPANDED
	at com.google.zxing.MultiFormatWriter.encode(MultiFormatWriter.java:84)
	at com.google.zxing.MultiFormatWriter.encode(MultiFormatWriter.java:45)
	at Rss14.main(Rss14.java:20)

Tut mir leid. Leider verstehe ich davon nicht genug, das ich weiterhelfen könnte einen Encoder zu schreiben. Dafür muss man sich wohl tief in die Sources von ZXing einarbeiten.
 
Zurück