예제 #1
0
    void ReaderCallback(string evnt, Object value, Object obj)
    {
        if (value == null)
        {
            return;
        }
        switch (evnt)
        {
        case "error":
            // throw new Exception(value.ToString());  // TEMP TEST - Goes nowhere
            errors++;
            WAUtils.printLine();
            WAUtils.printLine("ERROR: " + value.ToString());
            break;

        case "barcodes":
            count++;
            if (showBarcodes != null)
            {
                showBarcodes((WABarcode[])value);
            }
            break;

        default:
            DiagCallback(evnt, value, obj);
            break;
        }
    }
예제 #2
0
    static void Main(string[] args)
    {
        WAUtils.fncPrintLine = AppendTextBox;

        // Configure server
        string          authorization = "";
        string          serverUrl     = "";
        WABarcodeReader reader        = new WABarcodeReader(serverUrl, authorization);

        // Configure test
        Test test = new Test();

        // test.showBarcodes = null;                    // suppress show barcodes
        reader.diagCallback = test.DiagCallback;        // Enable display processing status

/*
 *          test.bTestDropBox = false;
 *          test.bTestBase64 = false;
 *          test.bTestSamplesLocal = false;
 *          test.bTestSamplesWeb = false;
 *          test.bTestUtf8 = false;
 *          test.bTestUtf8Names = false;
 */

        // Test asynchronous API
        test.Run(reader, true);

        // Test synchronous API
        test.Run(reader, false);

        WAUtils.printLine("DONE!");
        Console.Write("Hit Enter> "); Console.ReadLine();
    }
예제 #3
0
파일: wabr.cs 프로젝트: Inlite/wabr-net
    internal void ReadAsync(string image, delReaderCallback callback, Object obj, string types = "", string directions = "", uint tbr_code = 0)
    {
        _barcodes = new WABarcode[] { };
        _error    = "";

        WACallback cb = new WACallback();

        if (callback != null)
        {
            cb.callback = callback;
            cb.obj      = obj;
            cb.isAsync  = true;
        }
        else
        {
            cb.callback = _ReaderCallback;
            cb.obj      = this;
            cb.isAsync  = false;
        }
        _image = image;
        cb.call("image", image);

        string[]      names = image.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
        List <string> urls = new List <string>(), files = new List <string>(), images = new List <string>();

        foreach (string name1 in names)
        {
            string name = name1.Trim();
            string s    = name.ToLower();
            if (s.StartsWith("http://") || s.StartsWith("https://") || s.StartsWith("ftp://") || s.StartsWith("file://"))
            {
                urls.Add(name);
            }
            else if (File.Exists(name))
            {
                files.Add(name);
            }
            else if (name.StartsWith("data:") || WAUtils.isBase64(name))
            {
                images.Add(name);
            }
            else
            {
                throw new Exception("Invalid image source: " + name.Substring(0, Math.Min(name.Length, 256)));
            }
        }



        ReadLocal(urls, files, images, types, directions, tbr_code, cb);
    }
예제 #4
0
 internal static void ShowBarcodes(WABarcode[] barcodes)
 {
     foreach (WABarcode barcode in barcodes)
     {
         WAUtils.printLine();
         WAUtils.printLine("Barcode Type:" + barcode.Type + "  File:" + barcode.File + "   Page:" + barcode.Page.ToString());
         WAUtils.printLine(barcode.Text);
         if (barcode.Values.Count > 0)
         {
             WAUtils.printLine("\n VALUES:");
             foreach (string key in barcode.Values.Keys)
             {
                 WAUtils.printLine(key + " : " + barcode.Values[key]);
             }
         }
     }
 }
예제 #5
0
    internal void DiagCallback(string evnt, Object value, Object obj)
    {
        string image = "";

        if (value == null)
        {
            return;
        }
        if (!bShowDiag)
        {
            return;
        }
        switch (evnt)
        {
        case "image":
            image = value.ToString();
            WAUtils.printLine("================= PROCESSING:  " + WAUtils.signature(image));
            break;

        case "response":
            image = (string)obj;
            if (value.GetType() == typeof(string))
            {
                WAUtils.printLine("\n ==== > " + "ERROR: " + value.ToString() + WAUtils.signature(image));
            }
            else
            {
                System.Net.HttpWebResponse result = (System.Net.HttpWebResponse)value;
                if ((int)result.StatusCode == 200)
                {
                    WAUtils.printLine(" ==== > " + "SUCCESS - status: " + ((int)result.StatusCode).ToString() + "  " + result.StatusDescription
                                      + WAUtils.signature(image));
                }
                else
                {
                    WAUtils.printLine(" ==== > " + "ERROR   - status: " + ((int)result.StatusCode).ToString() + "  " + result.StatusDescription
                                      + WAUtils.signature(image));
                }
            }
            break;
        }
        return;
    }
예제 #6
0
파일: wabr.cs 프로젝트: Inlite/wabr-net
 internal static string FileToBase64(string file)
 {
     try
     {
         FileStream fs        = new FileStream(file, FileMode.Open, FileAccess.Read);
         byte[]     filebytes = new byte[fs.Length];
         fs.Read(filebytes, 0, Convert.ToInt32(fs.Length));
         string base64 = Convert.ToBase64String(filebytes, Base64FormattingOptions.InsertLineBreaks);
         string ext    = Path.GetExtension(file).Replace(".", "");
         base64 = "data:image/" + ext + ";base64," + base64;
         // Optionally attach suffix with reference file name to be placed in Barcode.File property
         base64 = base64 + ":::" + Path.GetFileName(file);
         return(base64);
     }
     catch (Exception ex)
     {
         WAUtils.printLine();
         WAUtils.printLine(ex.Message);
         return("");
     }
 }
예제 #7
0
파일: wabr.cs 프로젝트: Inlite/wabr-net
    public static WABarcode[] ParseResponse(string txtResponse)
    {
        List <WABarcode> barcodes = new List <WABarcode>();

        if (txtResponse.StartsWith("<"))
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(txtResponse);
            foreach (XmlNode nodeBarcode in doc.DocumentElement.SelectNodes("//Barcode"))
            {
                WABarcode barcode = new WABarcode();
                barcode.Text   = WAUtils.nodeValue(nodeBarcode, "Text", "");
                barcode.Left   = WAUtils.nodeValue(nodeBarcode, "Left", 0);
                barcode.Right  = WAUtils.nodeValue(nodeBarcode, "Right", 0);
                barcode.Top    = WAUtils.nodeValue(nodeBarcode, "Top", 0);
                barcode.Bottom = WAUtils.nodeValue(nodeBarcode, "Bottom", 0);
                barcode.Length = WAUtils.nodeValue(nodeBarcode, "Length", 0);
                barcode.Data   = WAUtils.decodeBase64(WAUtils.nodeValue(nodeBarcode, "Data", ""));
                barcode.Page   = WAUtils.nodeValue(nodeBarcode, "Page", 0);
                barcode.File   = WAUtils.nodeValue(nodeBarcode, "File", "");
                barcode.Meta   = WAUtils.nodeToXmlDocument(nodeBarcode, "Meta");

                barcode.Type     = WAUtils.nodeValue(nodeBarcode, "Type", "");
                barcode.Rotation = WAUtils.nodeValue(nodeBarcode, "Rotation", "");

                XmlDocument docValues = WAUtils.nodeToXmlDocument(nodeBarcode, "Values");
                if (docValues != null)
                {
                    foreach (XmlNode node in docValues.DocumentElement.ChildNodes)
                    {
                        barcode.Values.Add(node.Name, node.InnerText);
                    }
                }

                barcodes.Add(barcode);
            }
        }
        return(barcodes.ToArray());
    }
예제 #8
0
    internal void Run(WABarcodeReader reader, bool async)
    {
        count     = errors = 0;
        bUseAsync = async;
        // Read from image in DropBox
        if (bTestDropBox)
        {
            Read(reader, "https://www.dropbox.com/s/qcd8zfdvckwwdem/img39.pdf?dl=1");
        }

        // Read local files
        if (bTestSamplesLocal)
        {
            Read(reader, samplesLocal + "1d.pdf");
        }

        // Read from Web-located files
        if (bTestSamplesWeb)
        {
            Read(reader, samplesWeb + "1d.pdf");
            // Read 2D barcodes
            Read(reader, samplesWeb + "2d.pdf");
            // Read specifying type
            Read(reader, samplesWeb + "postal.pdf", "postal");
            // Read Driver License (TBR code)
            Read(reader, samplesWeb + "drvlic.ca.jpg");

            // Read from multiple images in a single call
            Read(reader, samplesWeb + "1d.pdf" + " | " + samplesWeb + "2d.pdf");
            // Read from multi-page TIF file
            Read(reader, samplesWeb + "c39.multipage.tif");


            // Read specifying Target Barcode Reader (TBR code)
            Read(reader, samplesWeb + "I25.tbr132.jpg", "", "", 132);

            // Read Adobe® LiveCycle® barcodes and decompress.  (UTF-8 incorrectly displayed by echo(barcode.Text))
            Read(reader, samplesWeb + "pdf417.adobe.pdf");
        }

        // Read UTF8-encoded values (UTF-8 incorrectly displayed by echo(barcode.Text))
        if (bTestUtf8)
        {
            Read(reader, samplesWeb + "pdf417.utf8.pdf");
        }

        // Read from UTF8-named files
        if (bTestUtf8Names)
        {
            Read(reader, samplesWeb + "pdf417.ЙшзщЪфг_Russian.pdf");
            Read(reader, samplesWeb + "pdf417.بساطة لأنه الأل_Arabic.pdf");
        }

        // Read from Base64-encoded image
        string base64 = "SUkqAAgAAAANAP4ABAABAAAAAAAAAAABAwABAAAA1AIAAAEBAwABAAAAawEAAAIBAwABAAAAAQAAAAMBAwABAAAABAAAAAYBAwABAAAAAAAAABEBBAABAAAAvgAAABYBAwABAAAAawEAABcBBAABAAAAsBIAABoBBQABAAAArgAAABsBBQABAAAAtgAAACgBAwABAAAAAgAAADEBAgAtAAAAbhMAAAAAAAAAAAAALAEAAAEAAAAsAQAAAQAAAP/////lnFOWgJn2R85HGaM2KbCIOWUhGYzSOM2zjNiIGhadrfybgaIPNGcj2Tim2bENs2Immtpr3ffrJsoRhERHo0ZmwRFsnAdphBpp2mq3f/X/vLdIikjgpm4gzZppqmq///fXf///K75Qj5n40ZxmbNkEGfM2ad2n2t//69df////OwpFGejjMzNxozQ0RIBoGnad/+v+69/a/+/////yNZPHBTxHmbFNiBBoNB3p2v9//evv6vf1vvr+CKHfX///Qd2g1v/q/////f/33/q9f1x3//6/6drf60v//X//v////+7+1//7ev//77////////p++t76ftet+vw/X/X/f/v/q//9f9Vev/0/p/6761+0vX767/X33X/+/////fta//6f/V/f13///7/9ev6//+qf933v6a/u/6+////1/+/e/9L///fr1/a//3366/v/ruq/v61/t//fv/9P3q//f/////9f///7//r/pf+v2//6///uv//v/////3f6///1//3///X/331/////drr/f7bv7//r///7///36+//+63/9/1//3+tf/3////////611/1/9f+v/f//+l33/rvXv/+/f/p+7rX9ev/9/1v////9df//X/v/evv3/7/9f/+u31/+//rv/+v0/9Jr/19etfvf3//1/v/9/1X/f/S/v/+/v3v//9f/v//7/v/++//+r0/637//9fXf/1669X/19/v/6vf/Wv/1///7/v/997uv/7/1r/f9a3/vX9df/9f///rX//9ff/9rW/3v+/7//uv3+//////q96rrv/+3/3//3/X9v/X2///////3/v769//3//vvVa/r/9r77/W//t//1//f////XbXf9////X7//173+6/1S1///uuvf///9///ev+/9/+/7f9//9X9Wv/9f9r1//3/0utff10//r///v9f/v66ev370v+/v0v//////+/7tf/X33t3////9VdrX/+t/////1/+7/11qv///+/d73+////X33//9V/7q93/7/r/X/6f9//1+/r6fe97/7/9pr/19X77/+63/b/7///f9fX/X/6f//vvvV6/t6/pV/+//S/Xv27//dV//611r6r+kv/u//17//v0t9V9f07//+///7/vX1///X/X7/+/v9vX/3v/ve7rX9brf/7/9//9+t/7///91f9a1v+///e/X//+uq6f/+tU/7/uv//v//+/1//1//f/+/39b9f///0l///9b//+n3v/1r/X/dfr6f/+9vr/VfCKH/f/+7v/97fr/1fV//tf7+rrb/d71j/3X//r/+vev/+v3/+//V9a678b9e///f+/f7/3p3///1/71vb/+SHrr///116/vr/+9vb///+/df/r3f///1////76d1pdfX+/7//X67uu9f/+///X/13r//Xf1/9d6///+1/v//99P/7/f/v3r7/f693vt///31+t//v/f9Lvv/9/362nf6///+9r/3+/X//++q////+v///1//p76//////93/Xf//3/W/63vv99rT//3//X/+v///696fvX9/9fpd//7qv/q+//r9X/X/1V///16//rrf9X////3/+v7/3tPX/f/1f33++uqv/9d//r/3///T//6167//11/3//vf1/7f+///TT9//r3//tb9771/v1/9e/3/v1/a0///Df//9/1/31/3r/f//1/f+/X/+v/7//7////66//6+///9P9r3a/11/9///f/9+9df/+v/17/r/f/3/+re////3/+/9d//+/XXv/X//X//v///+//////v/79b9Prvv/71/////Xv/7v/99dbf+9e/f9d6/9a//r//7/9Vr//79a7/6///fqu/v/3///////W3rq99f//66/3v//9r/9rr/2/X//fr////+/r//9NX//9//+9v/6X7/v9f7ft16/rr1u/T//Xvr/XX/7/T//v/rv6//3/rX//1pd/77///tda9/fr197f/////+33////9/Xq/6r//rd/Sv/////3//6//br73//f//+v3//+//////f/9X9+/f6/3+/+63/////////6//QVf/7/1/++na//9f/r13/+v7/r27/X3/7//X3///3//v//r///1/v/6//9v9f/////9f/f/9b/1/fX3v/+l//+///3/////7///r+/X/6///1//7/Xf/7///73+v/+n/3fpf7///16+v/1/39f/9/6///rvb/X/6//f3///////r3/7X97+39f6733////X//el//+u//+v3/vf3pf//f/+7/6+2/39//////pf/3vr/3///X9/69uvq/6///XX//+13/6X1/+/6v/69/Xf9//e/7//1v7X+///X/f1v66//+v/f1//7//X///96/r///7fX/r31q9d/r9/99+tv/93+////67r/f/371//r/rr/X/1/7///+vX//9/1X///q/79b/7//1///////9d//6f/f/33X//+u//e3973f9/+3rf///6v6/v7/////6+tPf/66/ff/v//X/1/X////b6+/60/X/1r1/0v/33/+//X9//qv//fX+++1////+v//X/ve0vv/f/f9X9//76f/v/99d+//16//3177/06f/69/f977/39//9////X1/Vb/av/p/+vt///7a0uv/3/337//7/////X///+//99//9//p//fpb/1+/X7Xqv7766+//r/6X/632v+9L1v9V/7+n1///f/X9a+36/ff//37/+/v/3/rr7/+v7e/9f/a////frr+9f//3v/3/fb61tv//9///v//v/f/+//+6r33/vrt//6///9f/Xr//9f+tff+vvX+q7/////v/797//e+v3+6///9ff///r/r+///1/9f+tVVv/rr+9f/Xr/db9//f9fv+k/9fv6X/677Xa9f7fT+/616v1/X/fV/v3/vr731hFD+19+/ra+v73+v+//9//f3fa/uv3j/a//QT/+//W9rf9////X/dP///9P//YfX7r8Iof/p/////vT6//f33//f//2/rXx99666//X91uv///6+v6/6/71e/9//f//v9r97S//6Xf2v//+uu///1/7/X639/0/V/+7W+v4IqP/1+v/rf7/X/v9/X/v7r/9PXb/H/37///qv/v/f/136/b//p/f4W/////v3/1v/9f/9f76//v1/3r333f/+v///////r/qu//+vsua/X+l9//+vv/rrpf7+/1u/9f794X16/T/W/////1v3//S6v///3/9q73+//+v+/Tr////6f1/X/f6et3//9/6+/7Xv/t//1/D7/9/fXq/9319dV////6//+////6/67r6/hf////3//03//3///3//797/91v/+/+v+/1/r+vvX7r1f/2la9L/r1//3/a/1/+///7/V+//3pft/wu/7/1/7/p+/6/v//f7//+n/Xf5Q67/+//CX/v6/9+uv/vetd/7933/u3r9f7/Df/r7/vX/9fX7/Vda/+v6f/+/r3//frf3///fWv/vvr/+u///13X9f/+vq3//f7wih6S///r/+q//1fX/+v/v6r/h+tW+O27//vvrf/r/v/3r+79d6/rquv+q+rX/V/X/f/37+v3ferUL7W6av7trf/9+v9///1/fX/v/+7Qj9P2G++tX///2t+nX+Ov3f36+v8H+5EHKHJDwmE0NYRH9e70K////waav+iT9p////p4T19Y4YZHDxI3fjhen37tfr/8Ij4TCKHDQavbX/XX/+/2oL6ccUyTqL1D9+yI/X/T73oU4aFimCI6VrfuCLq9f+/Tv9PVuQj5CP3knq7/X/giP//quo8m8fD/8f9f/+nd/wrfr12tev/aHf/d+yMf7gmEUPCX9f3f/3/7/11+Hr//t/r9+031/WPf3f////XS//uCKf/7/////67///r/f7//9f9r139/X//v///vr/6//+v//3//uP0v6/1+609f+vfX9//////d/1/rT/3/39P////b/f/////f/9/+7+/f/9PffX3+//77/q/1/rX/r/9fX/1/9fv/9f9df/f+/77X/f/7+/X7+/v/9fhvv/r/+1/+vf//76//9/36//f4S//fX/V//3///////r6+//////f////+v///f1f+nv//3/v1///r9X9e///////99df/rf1t//r//vvv177ff//99/1vb//6+/en/f//9f9f0v/2v///1r9f//qv7//fuq/+//1////+u9/v+7/+9LXr/////Xv+/X/6/31+//Vf9Pd0/e/+v////+/671/6/XX/+vvr9f//r///6//fa1v399///9/X/b/r////7779f1f7/6ev6///7v9f33+/9f/VPtdfv2////39//X/7/rr7/79+r+vf/3WtfbX//qv++v////e//99+v+/rp/uvf//f//X/+//XW/v1///9fff6//v97/9f/9fXT//r//9/7/X6//6Xev/tu//+wt9/1vXv/vr/+/1vb+/v///2rv/4///X/9dPr/6W3v+61/63/r69f6yY7//9///ff/7/r//9P//9L1/W3g///+/+//6v10v717//r/f//+uv////+/T9tb3//7//9/+3X/3//X3/////11rvv////7/q3v/7/7+v///9//v/X7rW99v/v2/////3///X///X+3pd/X/3rXS+v///Wv1////7//63/e/10v+/////v/9r/fX//d/66//11v/9f//v/vv3p/6//6/e+/v9fv9f+r3f/9f////339f///f/1/7//qv///+/////X/r6/36////7d+////dd/f9/+3///9ff/7/X19f/6/+rqv/6/+v//9/r/6//719f//9f3+v/////f//v/3//9//7fvuu61p/v67/3/r//+/6+2/r+v/91/9//1/1f/v/X/6933rVPv//+v//9/+33//XX+++/eq/+1T0///dr//X//X////fr/33+vf/+7f/+v/v///+//36///r+tr/+l/9d///a/+vf///+//S3+3//9//67//6b/99evr///6//////r/3///1///f3b///3////Xv//////v/td+v///6/t661//9e//+v/199+/9/6/3/a/r//bX9b9P/33+9/r/r/////6//769N77X////1r6//6X/0/////3/+v7/r//v1/t/r/v/7W/a/t/r6+/3//v/69e/9XXf+///6p/0v/f79a/+6T/9//+/v/////f/3/96/3bd//336/ff//X+v/163/3/v9/+uv0r/q/+v/uv////6f///9a17Wq/3vX1v///f////v9f/9f//+v9r9//3/f6//2v/1v///+u/9+//fp/r/pa7V//9//f/+v//fv1//ul2v/7/9P/7////vvv+9f/7V2v/vf/9rv//b///f//W/+73X/te7+tdPXf+//+k/9f///v///d/7u//tfb//3///r////+ut/7r/r+v/pqrv6f//73+//vf/99/Xf7rr//96f////9af6//r//3+/7SV+9e/vre+v1////ve/6///1/17vf/9/9r99///T3/Vdd9//f3T+vpq/tr1/7//6/Xf7X///6//+v/3rS+n/1f3/69++v//3d3/f/9f/v7f1rXf/pf//////1//rvX7+7//d7Vu+vr2//97///9bVV/319//1+tL71/9963/+l////7v1/v0v/r///6/363r/9v///33//33/66d/////X9f//X///+r//+n/+n//9+/+/17///3///1Xv9fvXv/+/9f99e7fX//+u//+////7/6r///+tPrp////b//1//X9erW9NMJ/66/r/f11////////X1W7TTCFhCIiP/tvfv/X///9/+v6+mqaoRDPJK/vrT69////6pf92qac+i6DCERERr//X+u+//9Pu00wmClRYQiIiI3/133ffpqnaaaYQtMEIiIiIj/reuumqYTCKEIiIiI96doGEGCYTQiIiI2EIiIiIx//JuLMqxZNkiI+CBhBy3OKhJGQMJwQeCaDgg9NOgfpwnaadOvhPX32iFt75DvoPCIL36f6BBsqizqJXXhBzqEIMTTBr706DQwgYa9vWCahMUtfUNU+/sEFTsEuqjaqla6QaSaUMJ9ZCZkJjdiuiHvh0nT/Ta9PDfpN0/bv6dLsxhW29b+hGDb7/93//th+v35LheU7r/d9oN/8lxdLw0/9czHW7fvkLBQm1C9wul7jra77V14aS+19vzQ44qwYSbW1tEIIT2O0tWN+0xx9NaadoNNXp2mqtNO1TChhU7QaatBhbBBhAwrCaBkXIMIM7lNy0GgYQiIjBlMlB//////ABABSW5saXRlIFJlc2VhcmNoLCBJbmMuIFRpZmYgV3JpdGVyIDIuMDAuMDAuMDAA";

        if (bTestBase64)
        {
            Read(reader, base64);
        }

        //  Read from Base64-encoded local image file
        if (bTestBase64)
        {
            base64 = WAUtils.FileToBase64(samplesLocal + "2d.pdf");
            if (base64 != "")
            {
                Read(reader, base64);
            }
        }
    }
예제 #9
0
 static void ShowError(Exception ex)
 {
     WAUtils.printLine();
     WAUtils.printLine("EXCEPTION: " + ex.Message);
 }