public static byte[] generateHTML(string uuid, string pathStyle, ApplicationDbContext _context, IWebHostEnvironment _environment) { CFDIDatos datos = new CFDIDatos(); datos = _context.CFDIs.FirstOrDefault(d => d.CfdUUID == uuid); var XSLpath = Path.Combine(_environment.WebRootPath, pathStyle); //var XSLpath = Path.Combine(_environment.WebRootPath, "images", "CFDI33_Pagos_Nomina.xsl"); var XMLpath = Path.Combine(_environment.WebRootPath, "images", uuid + ".xml"); using (FileStream fs = System.IO.File.Create(XMLpath)) { fs.Write(datos.CfdXml, 0, datos.CfdXml.Length); } string resultname = "CFDI-" + uuid + ".html"; var result = Path.Combine(_environment.WebRootPath, "images", resultname); XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load(XSLpath); xslt.Transform(XMLpath, result); byte[] buffer = null; using (FileStream fs = new FileStream(result, FileMode.Open, FileAccess.Read)) { buffer = new byte[fs.Length]; fs.Read(buffer, 0, (int)fs.Length); } return(buffer); }
public FileResult GetXMLFile(string uuid) { CFDIDatos datos = new CFDIDatos(); string resultname = "CFDI-" + uuid + ".xml"; datos = _context.CFDIs.FirstOrDefault(d => d.CfdUUID == uuid); return(new FileContentResult(datos.CfdXml, "text/xml")); //return File(datos.CfdXml, "text/xml", uuid.TrimStart().TrimEnd() + ".xml"); //esto si funciona.. }
public static byte[] generatePDF(string uuid, string pathStyle, ApplicationDbContext _context, IWebHostEnvironment _environment) { List <string> rutasDelete = new List <string>(); CFDIDatos datos = new CFDIDatos(); datos = _context.CFDIs.FirstOrDefault(d => d.CfdUUID == uuid); var XSLpath = Path.Combine(_environment.WebRootPath, pathStyle); //var XSLpath = Path.Combine(_environment.WebRootPath, "images", "CFDI33_Pagos_Nomina.xsl"); var XMLpath = Path.Combine(_environment.WebRootPath, "temp", uuid + ".xml");//eliminar rutasDelete.Add(XMLpath); using (FileStream fs = System.IO.File.Create(XMLpath)) { fs.Write(datos.CfdXml, 0, datos.CfdXml.Length); } var pathPDF = Path.Combine(_environment.WebRootPath, "temp", "CFDI-" + uuid + ".pdf"); //eliminar string resultname = "CFDI-" + uuid + ".html"; var result = Path.Combine(_environment.WebRootPath, "temp", resultname); //eliminar XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load(XSLpath); xslt.Transform(XMLpath, result); rutasDelete.Add(result); byte[] buffer = null; using (FileStream fs = new FileStream(result, FileMode.Open, FileAccess.Read)) { buffer = new byte[fs.Length]; fs.Read(buffer, 0, (int)fs.Length); } string contenido = System.IO.File.ReadAllText(result); var textReader = new StringReader(contenido); // instantiate the html to pdf converter HtmlToPdf converter = new HtmlToPdf(); // convert the url to pdf SelectPdf.PdfDocument doc = converter.ConvertHtmlString(contenido); byte[] pdf = null; // save pdf document doc.Save(pathPDF); // close pdf document doc.Close(); using (FileStream documentStream = new FileStream(pathPDF, FileMode.Open, FileAccess.Read)) { pdf = new byte[documentStream.Length]; documentStream.Read(pdf, 0, (int)documentStream.Length); } return(pdf); }
public IActionResult Zip(string ids, string algo = "") { Paramaters paramaters = new Paramaters(_context); string pathStyle = paramaters.getEmpParam(simplifile.Services.ParamsKeys.E18, "", ""); List <string> lista = new List <string>(); var separados = ids.Split(','); lista = separados.ToList(); List <FileBasic> sourceFiles = new List <FileBasic>(); List <CFDIDatos> datos = new List <CFDIDatos>(); foreach (var uuid in lista) { CFDIDatos dato = _context.CFDIs.FirstOrDefault(d => d.CfdUUID == uuid); if (dato != null && dato.CfdXml != null) { datos.Add(dato); } } //los adjunto como xml string extension = "xml"; foreach (var item in datos) { sourceFiles.Add(new FileBasic { FileStream = item.CfdXml, filename = item.CfdUUID, extension = extension }); } //los adjunto como pdf... extension = "pdf"; foreach (var item in datos) { sourceFiles.Add(new FileBasic { FileStream = FilesTransform.generatePDF(item.CfdUUID, pathStyle, _context, _environment), filename = item.CfdUUID, extension = extension }); } string password = Guid.NewGuid().ToString("d").Substring(1, 6); var response = FilesTransform.GetZIPStream(sourceFiles, password); SendPasswordEmail(User.Identity.Name, User.Identity.Name, password); return(File(response, "application/zip", DateTime.Now.ToShortDateString() + ".zip")); }
public IActionResult XMLZip(string ids, string algo = "") { List <string> lista = new List <string>(); var separados = ids.Split(','); lista = separados.ToList(); List <FileBasic> sourceFiles = new List <FileBasic>(); List <CFDIDatos> datos = new List <CFDIDatos>(); foreach (var uuid in lista) { CFDIDatos dato = _context.CFDIs.FirstOrDefault(d => d.CfdUUID == uuid); if (dato != null && dato.CfdXml != null) { datos.Add(dato); } } string extension = "xml"; foreach (var item in datos) { sourceFiles.Add(new FileBasic { FileStream = item.CfdXml, filename = item.CfdUUID, extension = extension }); } string password = Guid.NewGuid().ToString("d").Substring(1, 6); byte[] fileBytes2 = FilesTransform.GetZIPStream(sourceFiles, password); SendPasswordEmail(User.Identity.Name, User.Identity.Name, password); return(File(fileBytes2, "application/zip", "Archivos.zip")); }