ClearImage COM is integrated with Java suing Java-to-COM bridge. Bridges are available from several sources:Jawin, JCom, Jacob Project, J-Integra and EZJCOM.
The following example demonstrates use with Jawin bridge.
Barcode Recognition in Java with Jawin Bridge | Copy Code |
---|---|
import org.jawin.COMException; import org.jawin.win32.Ole32; import java.io.*; import myProject.jawin.EBoolean; import myProject.jawin.ICiBarcodePro; import myProject.jawin.ICiBarcodes; import myProject.jawin.ICiServer; public class BarcodeReader { public static void readFile (String fileName) throws COMException { Ole32.CoInitialize(); ICiServer ciServer = new ICiServer("ClearImage.ClearImage"); ICiBarcodePro reader = ciServer.CreateBarcodePro(); reader.getImage().Open(filename, 1); reader.setAutoDetect1D(EBoolean.ciTrue); reader.Find(0); ICiBarcodes barcodes = reader.getBarcodes(); int count = barcodes.getCount(); for(int i=0; i<count; i++) { System.out.println(barcodes.getItem(i).getText()); } System.gc(); } } |
The following example demonstrates use with Jacob bridge.
Barcode Recognition in Java with Jacob bridge | Copy Code |
---|---|
import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import java.io.*; public class BarcodeReader { static ActiveXComponent ci = null; static Dispatch image = null; static Dispatch reader = null; public static void readFile (String fileName) { ComThread.InitSTA(); ci = new ActiveXComponent("ClearImage.ClearImage"); try { image = ci.invoke("CreateImage").toDispatch(); reader = ci.invoke("CreateBarcodePro").toDispatch(); Dispatch.put(reader, "Image", image); Dispatch.put(reader, "AutoDetect1D", new Integer(65535)); // ciTrue = 65535 //Dispatch.put(reader, "Directions", new Integer(1)); // cibHorz = 1 //Dispatch.put(reader, "Type", new Integer(2)); // cibfCode39 = 2 Object[] args = new Object[2]; args[0] = fileName; args[1] = new Integer(1); // page 1 Dispatch.call(image, "Open", args[0], args[1]); Dispatch.call(reader, "Find"); Dispatch barcodes = Dispatch.get(reader, "Barcodes").toDispatch(); int count = Dispatch.get(barcodes, "Count").toInt(); for(int i=1; i<=count; i++) { index[0] = new Integer(i); Dispatch barcode = Dispatch.invoke(barcodes, "Item", Dispatch.Get, index, new int[1]).toDispatch(); System.out.println(Dispatch.get(barcode, "Text").toString()); } System.gc(); } catch (Exception e) { e.printStackTrace(); } finally { Dispatch.call(image, "Close"); ComThread.Release(); } } } |