Beispiel #1
0
        public ActionResult SendPDF(string formXml, string xsnName, string viewName, string toEmail, string emailBody)
        {
            var spContext = SharePointContextProvider.Current.GetSharePointContext(System.Web.HttpContext.Current);

            using (var clientContext = spContext.CreateUserClientContextForSPHost())
            {
                SP.User spUser = GetSharePointUser(clientContext);

                string internalUserID = null;

                // Store data for processing
                string            tenantID = TokenHelper.GetRealmFromTargetUrl(new Uri(clientContext.Url));
                RequestIdentifier rid      = RequestUtil.AddRequestEntity(PdfRequestType.SendPDF, PdfRequestStatus.InProgress, tenantID, internalUserID);

                PDFRequest response = new PDFRequest();
                response.RequestID   = rid.ID;
                response.RequestType = PdfRequestType.SendPDF;
                response.Status      = PdfRequestStatus.InProgress;
                response.Message     = "";

                BlobUtil bu = null;
                try
                {
                    bu = new BlobUtil();

                    ParameterCollection plist = new ParameterCollection();
                    plist.Add(Parameters.Api, "SendPDF");
                    plist.Add(Parameters.ViewName, viewName ?? "");
                    plist.Add(Parameters.UserID, internalUserID);
                    plist.Add(Parameters.XsnName, xsnName ?? "");
                    plist.Add(Parameters.FromEmail, spUser.Email ?? "");
                    plist.Add(Parameters.ToEmail, toEmail ?? "");
                    plist.Add(Parameters.EmailBody, emailBody ?? "");

                    BlobCollection bc = new BlobCollection();
                    bc.Add("xml", formXml);
                    bc.Add("parameters", plist);
                    bu.StoreRequestArguments(rid.ID, bc);

                    // post to queue
                    PdfServiceQueues.XmlToHtmlClient.AddMessage(rid.ID, internalUserID);
                }
                catch (Exception ex)
                {
                    // Update request status
                    response.Status  = PdfRequestStatus.Error;
                    response.Message = ex.Message;
                    RequestUtil.UpdateRequestStatus(rid.ID, PdfRequestStatus.Error, ex.Message);
                    //PdfServiceQueues.EmailSendClient.AddErrorMessage(requestID, internalUserID.Value, ex.Message);
                }
                finally
                {
                }
                return(new ObjectResult <PDFRequest>(response));
            }
        }
Beispiel #2
0
        // POST: api/PDF
        //public void Post([FromBody]string value)
        //{

        //}

        // POST: api/PDF

        public string Post([FromBody] PDFRequest objPDFRequest)
        {
            if (objPDFRequest == null)
            {
                return("Web API Request Exception:- Bad Request");
            }

            string strResult = null;

            try
            {
                if (!objPDFRequest.ValidRequest())
                {
                    return("Web API Request Exception:- Bad Request(Invalid)");
                }

                HTML2PDF obj        = new HTML2PDF();
                string   strHTMLURL = objPDFRequest.HTMLURL;
                string   fileName   = obj.CreateHTML2PDF(strHTMLURL, objPDFRequest.HTMLContents, objPDFRequest.PageSize);

                if (!string.IsNullOrEmpty(fileName))
                {
                    string file = fileName;
                    if (File.Exists(file))
                    {
                        strResult = fileName;

                        var openFile = File.OpenRead(file);
                        // copy the stream (thanks to http://stackoverflow.com/questions/230128/best-way-to-copy-between-two-stream-instances-c)
                        byte[] buffer = new byte[32768];
                        while (true)
                        {
                            int read = openFile.Read(buffer, 0, buffer.Length);
                            if (read <= 0)
                            {
                                break;
                            }
                            //Response.OutputStream.Write(buffer, 0, read);
                        }
                        openFile.Close();
                        openFile.Dispose();

                        // File.Delete(file);
                    }
                }

                return(strResult);
            }
            catch (Exception ex)
            {
                return("Web API Request Exception:- " + ex.Message);
            }
        }
Beispiel #3
0
    public static void Main(string[] args)
    {
        string token      = "TU_TOKEN";
        string xmlPath    = "IngresoV2_DEMO.xml";
        string pdfPath    = xmlPath.Replace(".xml", ".pdf");
        string xmlb64     = Convert.ToBase64String(File.ReadAllBytes(xmlPath));
        var    PDFRequest = new PDFRequest()
        {
            xml = xmlb64, primaryColor = "#1599BF", secundaryColor = "#E7A201"
        };

        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("https://api.sifei.com.mx/cfdipdf/api/v2/");
            client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", token);
            var postTask = client.PostAsJsonAsync <PDFRequest>("pdf", PDFRequest);
            postTask.Wait();

            var result = postTask.Result;
            if (result.IsSuccessStatusCode)
            {
                var readTask = result.Content.ReadAsAsync <PDFResponse>();
                readTask.Wait();

                var insertedPDFRequest = readTask.Result;

                Console.WriteLine("Extrayendo pdf de respuesta a archivo", insertedPDFRequest.code, insertedPDFRequest.status);

                byte[] pdfbytes = Convert.FromBase64String(insertedPDFRequest.data);
                File.WriteAllBytes(pdfPath, pdfbytes);
                Console.WriteLine("PDF generado en:{0} de cfdi:{1}", pdfPath, insertedPDFRequest.uuid);
            }
            else
            {
                Console.WriteLine("Error en peticion:{0}, description:{1}", (int)result.StatusCode, result.StatusCode);

                var readTask = result.Content.ReadAsAsync <PDFResponse>();
                readTask.Wait();

                var insertedPDFRequest = readTask.Result;
                Console.WriteLine("Error exacto:[{0}]", insertedPDFRequest.message);
                switch (result.StatusCode)
                {
                case HttpStatusCode.BadRequest:
                    break;

                case HttpStatusCode.Unauthorized:
                    //aqui puedes agregar una alerta
                    break;

                case HttpStatusCode.NotFound:
                    break;

                case HttpStatusCode.InternalServerError:
                    //error en el servidor
                    break;

                default:
                    break;
                }


                Console.WriteLine(result.Content.ReadAsStringAsync().Result);
            }
        }
    }