public async Task <IActionResult> GerarDanfe(IFormFile file) { try { if (file == null) { return(NoContent()); } try { using (var outputStream = new MemoryStream()) { await file.CopyToAsync(outputStream); var bytes = outputStream.ToArray(); var xmlText = Encoding.UTF8.GetString(bytes); var modelo = ZionDanfe.Modelo.DanfeViewModelCreator.CriarDeStringXml(xmlText); var pdfStream = new MemoryStream(); using (var danfe = new ZionDanfe.Danfe(modelo)) { danfe.ViewModel.DefinirTextoCreditos("Impresso por AlgoPlus.com.br / (21)99770-6037"); danfe.Gerar(); var bytesPdf = danfe.ObterPdfBytes(pdfStream); return(File(bytesPdf, "Application/pdf", $"{modelo.ChaveAcesso}.pdf")); } } } catch { var result = new FileUploadResult() { Name = file.FileName, Length = file.Length, Success = false, Message = "Ocorreu um erro" }; return(BadRequest(result)); } } catch { return(BadRequest()); } }
public DanfePagina(Danfe danfe) { Danfe = danfe ?? throw new ArgumentNullException(nameof(danfe)); PdfPage = new Page(Danfe.PdfDocument); Danfe.PdfDocument.Pages.Add(PdfPage); PrimitiveComposer = new PrimitiveComposer(PdfPage); Gfx = new Gfx(PrimitiveComposer); if (Danfe.ViewModel.Orientacao == Orientacao.Retrato) { Retangulo = new RectangleF(0, 0, Constantes.A4Largura, Constantes.A4Altura); } else { Retangulo = new RectangleF(0, 0, Constantes.A4Altura, Constantes.A4Largura); } RetanguloDesenhavel = Retangulo.InflatedRetangle(Danfe.ViewModel.Margem); RetanguloCreditos = new RectangleF(RetanguloDesenhavel.X, RetanguloDesenhavel.Bottom + Danfe.EstiloPadrao.PaddingSuperior, RetanguloDesenhavel.Width, Retangulo.Height - RetanguloDesenhavel.Height - Danfe.EstiloPadrao.PaddingSuperior); PdfPage.Size = new SizeF(Retangulo.Width.ToPoint(), Retangulo.Height.ToPoint()); }