Exemplo n.º 1
0
        public CSDocument OpenDocument(string label)
        {
            CSDocument result = new CSDocument();

            //result.Load(label);
            try
            {
                Document apiDoc = CodeSoftApi.Documents.Open(label, true);
                result.Load(apiDoc, label);
                apiDoc.Close(false);
                apiDoc.Dispose();
            }
            catch (Exception err)
            {
                string sessionId = string.Empty;
                if (SessionManager.GetSession() != null)
                {
                    sessionId = SessionManager.GetSession().ID;
                }
                APIEvent(this, new CSNetAppEventArgs()
                {
                    DocFail = true, SessionId = sessionId
                });
                _NetApp = null;
                log4net.LogManager.GetLogger("ERROR").Error(new Exception("Failed to open Document for label " + label + " : " + err.Message));
                /*Can one really error handle a  COM++ ?*/
            }

            return(result);
        }
Exemplo n.º 2
0
        private void PrintForm_Load(object sender, EventArgs e)
        {
            //context = new DataModelContext();
            // 通过代码初始化数据库 -- 方法1
            //System.Data.Entity.Database.SetInitializer(new DataModelInitializer());
            // 通过代码初始化数据库 -- 方法2

            /*IDatabaseInitializer<DataModelContext> dbInitializer = null;
             * // 如果数据库已经存在
             * if (context.Database.Exists())
             *  dbInitializer = new DropCreateDatabaseIfModelChanges<DataModelContext>();
             * else // 创建数据库
             *  dbInitializer = new CreateDatabaseIfNotExists<DataModelContext>();
             *
             * dbInitializer.InitializeDatabase(context);*/

            _csApp = new Tkx.Lppa.Application();
            //_csApp = Tkx.Lppa.Application.SelectApplication();
            UpdatePrinterList();

            Text += string.Format(Resources.DEVICE_NAME, ConfigurationManager.AppSettings["device"]);

            // 加载制品信息
            UpdateTreeView();
        }
Exemplo n.º 3
0
 public void OpenAPIDocument(string label, out Document result, out Tkx.Lppa.Application NetApp)
 {
     result = null;
     NetApp = CodeSoftPreViewApi;
     try
     {
         result = NetApp.Documents.Open(label, true);
     }
     catch (Exception err)
     {
         log4net.LogManager.GetLogger("ERROR").Error(new Exception("Failed to open Document for label " + label + " : " + err.Message));
         /*Can one really error handle a  COM++ ?*/
     }
     //return result;
 }
Exemplo n.º 4
0
 private void ClearInstances()
 {
     //This needs special permissions to work with IIS_USR
     try
     {
         foreach (System.Diagnostics.Process myProc in System.Diagnostics.Process.GetProcesses())
         {
             if (myProc.ProcessName.ToLower() == "lppa")
             {
                 myProc.Kill();
             }
         }
         _NetApp = null;
     }
     catch (Exception err) {
         /*This is a system process and may have permission issues at times.*/
         log4net.LogManager.GetLogger("ERROR").Error(new Exception("Failed to kill process: " + err.Message));
     }
 }
Exemplo n.º 5
0
 public void Dispose()
 {
     // This API is a share resources. A number of users may be getting labels from the same instance.
     // All Document requests are closed by the caller, so we let the caller with the last Document kill the API process.
     try
     {
         if (CodeSoftApi != null)
         {
             if (CodeSoftApi.Documents != null &&
                 CodeSoftApi.Documents.Count() == 0)
             {
                 //CodeSoftApi.Documents.CloseAll(false);
                 _NetApp.Quit();
                 _NetApp = null;
             }
         }
     }
     catch (Exception err) {
         /* External process. Not much control over this */
         log4net.LogManager.GetLogger("ERROR").Error(new Exception("CodeSoft API dispose faile :" + err.Message));
     }
 }
Exemplo n.º 6
0
        public string GetPreview(string jsonDTO)
        {
            string result    = "";
            string requestID = Guid.NewGuid().ToString();
            //These are static references so the original values will need to be reset.
            List <VariableStore> originVariables = new List <VariableStore>();
            Document             doc             = null;

            Tkx.Lppa.Application NetApp = null;
            try
            {
                CodeSoftDTO csObject = JsonConvert.DeserializeObject <CodeSoftDTO>(jsonDTO);
                //log4net.LogManager.GetLogger("DEBUG").Error(new Exception(requestID + ": csObject: " + jsonDTO));
                Image        img       = null;
                SessionStore csSession = SessionManager.GetSession(csObject.SessionId);
                //log4net.LogManager.GetLogger("DEBUG").Error(new Exception(requestID + ": csSession: " + csSession.ID));

                CSNetApp.Instance.OpenAPIDocument(csObject.Label, out doc, out NetApp);
                //using (var doc = CSNetApp.Instance.OpenAPIDocument(csObject.Label))
                {
                    if (doc == null)
                    {
                        //if (NetApp != null)
                        //NetApp.Quit();
                        return("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s80IatLvkobsgcCmIczsBAEE2lXgpZdeis+M2No//fTTm/3228+Wrab3FVyNHDnSPP300zVtp1xhnQUaPny4ufvuu80BBxxgevbsWS5rQ16/7rrrzDvvvGPdl+qpwIaUDQGuispGP9IKBBAIUOC3336LAwmXqm2xxRamR48eLlm98kyYMMHstttuqQU1hZV67rnn4jM3Tz75ZOHLDX0+efJkc+WVVzrtUwGlAktSNgQIbLLRj7QCAQQCFLjxxhvNm2++aa3ZPPPMY7bZZhtrPt8MGiYaMmSI0dBzo9LPP/8cz2154YUXGrXLDvs566yznNq7+uqrm969e3coyw+tLUBg09r9R+0RQCBQgU8//dRcdtllTrXbd999zQwzzOCUt9pM7777rjnyyCONLt9udFIgddRRRzkFd/Ws2yOPPBJf4WXbpi5d15wgUrYECGyy1Z+0BgEEAhE4++yznYKJlVZayay44oqp1Frr0OgqK98LBBRszTfffPEQmS7z9km6EuyII44wn3zyiU/xqsvoMnWdrXFJgwcPNl27dnXJSp4WEmDycAt1FlVFAIHWENDckocffthaWQULugw8raSrsXTmyDWpPquuuqoZOHCgWXjhhc3vfve7DkU1Ofitt94yd911l3nwwQfLrnXToVD0gwKs8847Lz57U/xevX/WvJr//Oc/1s326tXLbLzxxtZ8ZGg9AQKb1uuzptTY99taLZVN69R8LXWiLAI2gZ9++ileD8WWT+9vt912qS1u98orr8QBiEs9lOcvf/mL2X777c2ss85atsjss89ulllmmfifhs/+9a9/Oa+DpUBoww03jMuW3UGNb+gKKF0J5ZJ01dY00zBo4WLVankIbFqtx5pQXy1cdcsttzRhz+wSgdYTuOqqq5zWrJl//vlTu8RY6666DscokDnkkEPiBfaq0dbfhV122cUstdRS8UKaLutOqU5aPyetgEKXsv/666/WZqy99tpmySWXtOYjQ2sKEK62Zr9RawQQCFDg/fffN9dee61TzXSJ8XTTpfPd8p577jE6Y2NLCjBOOumkqoOawu3++c9/jrcx7bTTFr5c8rmuENNqx2kkDY89//zz1k3rrJMueydlV4DAJrt9S8sQQKDBAlrlVpc529Iaa6xhll12WVs27/evv/56p7K77rprXc5cLLHEEmbnnXd22qfrUJHTxv6b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acoFL5qn1K9fP/Pggw9WrJrW6EnjsmVdJn/fffdV3LfeXGGFFeJFH0tl1BWBadrrasKffvqp1K7zr+kKv3LGzAvKMwX7hMAm2K6hYu0uoGDh4osvrsigCcQ333yz2XzzzSvm83lTcyUuu+wya1ENm7msoWLdUEAZlltuOXP99denViNN4D3qqKMqbl8BypAhQyrmKfWm7rdlC2z0wa727bLLLqU24f2atvnrr79ay6uO5dL2229v9C+tpBWl9YWgUtp1113NRhttVCkL7wUswFBUwJ1D1dpboFevXsblKpdLLrnEvPLKK3XHct3uwIED675vNugvoJuWupzxuO6665zOxrnWRMfgjTfeaM2us1A6G0lCIC0BApu0ZNkuAnUQ0DdHW9Iqr8cee6yp140otT994x89erRt16Zr167cWdmq1NgMGsJyCTY1HHb88cebb775puYK6l5hJ554otPZmjXWWCO1odOaG8IGMiFAYJOJbqQRWRXQt+/evXtbm6egZr/99qvL0v6aWHrSSSdZ96kMmqeR1vwepwqQqaTAtttu67SukK6qGzp0qNNVTCV3FL2owOi4444zH3/8cbks+dd1tkbHDAmBNAUIbNLUZdsI1EHA5ayNdvPJJ5+YAw880OgmgpofU23SInzDhw83Z511llP5nj17mrXXXrva3ZC/AQK6qm7HHXd02tOECRPMXnvtVfamj5U2ohWGVfaZZ56plC3/3nbbbWdc1mjKF+AJAh4CTB72QGu3IrqKQN8Am5F0ybNtkmUz6tXIfepO4YMHD3aayKu+OuOMM4zmT6jPNAHVtqKv1sO5++6748mkrvef0lUjf/vb31g5tpEHQpX7Wn/99c2tt95q3nrrLWtJ3XjyoIMOMqusskocrOosYbmrf7QS9XPPPWfGjh1rHnroIaOhUJfUo0cPhi1doMhTswCBTc2E7bGBau64W0+RrF1t42ujb7paVO3+++932sT7779vhg0bFn84LbXUUkarvOqbsu4Irg8inZ3R8NXEiRONAptq0+GHHx5vs9py5G+cgAKTfffd1xxyyCFGwYgt6WqmBx54IP7XrVs3o0UX55prrvifyupSbv17++23ne7cXby/ffbZx7C6dLEKP6chQGCThirbRCAFAX1AadVYl3Vlkt1rSOr555+P/yWv1fqoIY6VV1651s1QvgECyyyzTBzc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HjFiROxZr52OGjXKvPTSS/nNFW6/8Hk+Q41P7rvvPnPZZZd12IrLflzydNhohn547LHHpjILpXmffvpph9/tUv2bRl2rOR4aVac02sk26ydAYFM/y8xvab311jP33nuv+fnnn/NtnWeeecxss81mnnrqqfi1sWPHmn79+uXf15Pnn3/efPfdd6Z///4dXueH5goceOCBZuGFF06tEp9//rn56KOPqt5+2vWqukIUiAVmmGEG88c//jGv4du/+Q04PqnmeGhUnRyrTrYmCRDYNAm+FXe72GKLme7du5vx48d3qP66665r7rzzzjjg0VmZQYMGdXj/jjvuiF+bfvrpO7zOD80VWHrppc3ss8/e3EqU2Huo9SpR1bZ6ac455zQHHXRQw9vM8dBw8pbf4XQt3wIa0FABnbXRWZkBAwbk97vaaqvFwzQKbhZffHHTtWvX/HvffvutGTdunDn33HPzr+mJhqwuvvhio/Hzzp07m1VWWcVst912ZrrpOh6SLvmOOuoos99++5knn3zS3HXXXeb999+Pv1nuvvvupkePHvn9athMQ0pvvfWW0fBYr169zK677mp69uyZz1PrE5f6ah+u+Yrro/Y988wz5tBDDzWffPJJTe2R27bbbmuWWGKJ4t3EPxfua9ppp83XWXWfZZZZzIorrmh22mkno2/yxUlDULfccksc7CqPgt2tt946n01n8W644QYzYcIEs9BCC5nDDz/czD333PH7hfWqts9cjwUNq1xxxRXx2UTNY1pggQXMXnvtNdUZLJ2JvOqqq+JjRmcrNtlkEyOLBx98MD7mkgYl/elik5TRsJO2reN1ueWWM5tttlnyVofHZNuuvyvl6mCzlN0+++xjPvzwQ3P55ZfHc330+6O+UR8VJlv/FuZN6l+qXjfffLN577334v0WltGQt34vN9xwQ+N6PFRTp8J98TyDAtEfeBICzgLR5MHcBhtskJs8eXKHMtE4eC4KenLR2ZwOr9966625v/71rx1ee+6553IbbbRR7vrrr89FH865V155JXfwwQfnog/rXDRXJ5/XNV80xyd36qmn5kaOHJmL/ijnoj+UuegPYy76EMq9++67+e3ttttuuXvuuSf++ddff8098cQTuWjeUP79Sk/OPvvs3HnnnVcpS861vq751K5nn302v8/obFhu5513zn3xxRfxa9W2Z9999809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AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX8BAht/O0oigAACCCCAQGACBDaBdQjVQQABBBBAAAF/AQIbfztKIoAAAggggEBgAgQ2gXUI1UEAAQQQQAABfwECG387SiKAAAIIIIBAYAIENoF1CNVBAAEEEEAAAX+B/wOjO3D4UpiVRwAAAABJRU5ErkJggg==");
                    }
                    //log4net.LogManager.GetLogger("DEBUG").Error(new Exception(requestID + ": doc: " + doc.Name));
                    foreach (Tkx.Lppa.Variable LppaVar in doc.Variables)
                    {
                        CodeSoftDTO.Variable csVar = csObject.Variables.Where(p => p.Name == LppaVar.Name).FirstOrDefault();
                        if (csVar != null)
                        {
                            LppaVar.Value = csVar.Value;
                        }
                    }
                    img = doc != null ? (Image)doc.GetPreview(true, true, 200) : null;

                    if (img != null)
                    {
                        using (MemoryStream ms = new MemoryStream())
                        {
                            // Convert Image to byte[]
                            img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                            byte[] imageBytes = ms.ToArray();

                            // Convert byte[] to Base64 String
                            result = Convert.ToBase64String(imageBytes);
                        }
                    }
                }
            }
            catch (Exception err)
            {
                log4net.LogManager.GetLogger("ERROR").Error(new Exception("GetPreview Failed: " + err.Message));
            }
            finally
            {
                doc.Close(false);
                doc.Dispose();
                //NetApp.Quit();
            }

            return(result);
        }