From 584034b26888cd17bc34716de71e4516773b5c00 Mon Sep 17 00:00:00 2001 From: ROBERTO ALVES PEREIRA Date: Thu, 2 Nov 2023 19:30:01 -0300 Subject: [PATCH] feat: convertendo imagem do danfe nativo em pdf byte --- NFe.AppTeste/MainWindow.xaml.cs | 6 +-- NFe.Danfe.Nativo/NFCe/DanfeNativoNfce.cs | 51 +++++++++++++++++++++++- NFe.Danfe.Nativo/NFe.Danfe.Nativo.csproj | 1 + 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/NFe.AppTeste/MainWindow.xaml.cs b/NFe.AppTeste/MainWindow.xaml.cs index ec6b5a633..2a913aa5d 100644 --- a/NFe.AppTeste/MainWindow.xaml.cs +++ b/NFe.AppTeste/MainWindow.xaml.cs @@ -1767,9 +1767,9 @@ private void BtnCupom_Click(object sender, RoutedEventArgs e) - //impr.Imprimir(salvarArquivoPdfEm: fileDialog.FileName.Replace(".pdf", "") + ".pdf"); - var bytes = impr.GerarImagem(); - var base64 = Convert.ToBase64String(bytes); + impr.Imprimir(salvarArquivoPdfEm: fileDialog.FileName.Replace(".pdf", "") + ".pdf"); + //var bytes = impr.PdfBytes(); + //var base64 = Convert.ToBase64String(bytes); } catch (Exception ex) { diff --git a/NFe.Danfe.Nativo/NFCe/DanfeNativoNfce.cs b/NFe.Danfe.Nativo/NFCe/DanfeNativoNfce.cs index 6854668a0..2640ce3f1 100644 --- a/NFe.Danfe.Nativo/NFCe/DanfeNativoNfce.cs +++ b/NFe.Danfe.Nativo/NFCe/DanfeNativoNfce.cs @@ -53,6 +53,8 @@ using NFe.Utils; using NFe.Utils.InformacoesSuplementares; using NFe.Utils.NFe; +using PdfSharpCore.Drawing; +using PdfSharpCore.Pdf; using NFeZeus = NFe.Classes.NFe; namespace NFe.Danfe.Nativo.NFCe @@ -165,6 +167,48 @@ public byte[] GerarImagem() } } + public Func ConverterBytesParaFuncStream(byte[] bytes) + { + Func funcStream = () => + { + MemoryStream stream = new MemoryStream(bytes); + // Certifique-se de que a posição do stream esteja no início. + stream.Position = 0; + return stream; + }; + + return funcStream; + } + + public byte[] ConverterImagemParaPdfBytes(byte[] imagemBytes) + { + using (MemoryStream stream = new MemoryStream()) + { + using (PdfDocument pdf = new PdfDocument()) + { + PdfPage page = pdf.AddPage(); + XGraphics gfx = XGraphics.FromPdfPage(page); + + XImage image = XImage.FromStream(ConverterBytesParaFuncStream(imagemBytes)); + + page.Width = image.PointWidth; + page.Height = image.PointHeight; + + + gfx.DrawImage(image, 0, 0); + + pdf.Save(stream); + } + + return stream.ToArray(); + } + } + + public byte[] PdfBytes() + { + return ConverterImagemParaPdfBytes(GerarImagem()); + } + public void GerarJPEG(string filename) { GerarImagem(filename, ImageFormat.Jpeg); @@ -262,7 +306,12 @@ private void GerarNfCe(Graphics graphics) #region preencher itens foreach (det detalhe in det) { - AdicionarTexto codigo = new AdicionarTexto(g, detalhe.prod.cProd, 7); + var codigoXml = detalhe.prod.cProd; + + if (detalhe.prod.cProd.Length > 7) + codigoXml = detalhe.prod.cProd.Remove(7); + + AdicionarTexto codigo = new AdicionarTexto(g, codigoXml, 7); codigo.Desenhar(x, _y); AdicionarTexto nome = new AdicionarTexto(g, detalhe.prod.xProd, 7); diff --git a/NFe.Danfe.Nativo/NFe.Danfe.Nativo.csproj b/NFe.Danfe.Nativo/NFe.Danfe.Nativo.csproj index 273a9e270..679c41079 100644 --- a/NFe.Danfe.Nativo/NFe.Danfe.Nativo.csproj +++ b/NFe.Danfe.Nativo/NFe.Danfe.Nativo.csproj @@ -20,6 +20,7 @@ +