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)); } }
// 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); } }
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); } } }