示例#1
0
        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());
            }
        }
示例#2
0
        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());
        }