Skip to content

Commit 0234d89

Browse files
committed
feat: convertendo imagem do danfe nativo em pdf byte
1 parent eb28cc7 commit 0234d89

File tree

3 files changed

+54
-4
lines changed

3 files changed

+54
-4
lines changed

NFe.AppTeste/MainWindow.xaml.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1767,9 +1767,9 @@ private void BtnCupom_Click(object sender, RoutedEventArgs e)
17671767

17681768

17691769

1770-
//impr.Imprimir(salvarArquivoPdfEm: fileDialog.FileName.Replace(".pdf", "") + ".pdf");
1771-
var bytes = impr.GerarImagem();
1772-
var base64 = Convert.ToBase64String(bytes);
1770+
impr.Imprimir(salvarArquivoPdfEm: fileDialog.FileName.Replace(".pdf", "") + ".pdf");
1771+
//var bytes = impr.PdfBytes();
1772+
//var base64 = Convert.ToBase64String(bytes);
17731773
}
17741774
catch (Exception ex)
17751775
{

NFe.Danfe.Nativo/NFCe/DanfeNativoNfce.cs

+50-1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@
5353
using NFe.Utils;
5454
using NFe.Utils.InformacoesSuplementares;
5555
using NFe.Utils.NFe;
56+
using PdfSharpCore.Drawing;
57+
using PdfSharpCore.Pdf;
5658
using NFeZeus = NFe.Classes.NFe;
5759

5860
namespace NFe.Danfe.Nativo.NFCe
@@ -165,6 +167,48 @@ public byte[] GerarImagem()
165167
}
166168
}
167169

170+
public Func<Stream> ConverterBytesParaFuncStream(byte[] bytes)
171+
{
172+
Func<Stream> funcStream = () =>
173+
{
174+
MemoryStream stream = new MemoryStream(bytes);
175+
// Certifique-se de que a posição do stream esteja no início.
176+
stream.Position = 0;
177+
return stream;
178+
};
179+
180+
return funcStream;
181+
}
182+
183+
public byte[] ConverterImagemParaPdfBytes(byte[] imagemBytes)
184+
{
185+
using (MemoryStream stream = new MemoryStream())
186+
{
187+
using (PdfDocument pdf = new PdfDocument())
188+
{
189+
PdfPage page = pdf.AddPage();
190+
XGraphics gfx = XGraphics.FromPdfPage(page);
191+
192+
XImage image = XImage.FromStream(ConverterBytesParaFuncStream(imagemBytes));
193+
194+
page.Width = image.PointWidth;
195+
page.Height = image.PointHeight;
196+
197+
198+
gfx.DrawImage(image, 0, 0);
199+
200+
pdf.Save(stream);
201+
}
202+
203+
return stream.ToArray();
204+
}
205+
}
206+
207+
public byte[] PdfBytes()
208+
{
209+
return ConverterImagemParaPdfBytes(GerarImagem());
210+
}
211+
168212
public void GerarJPEG(string filename)
169213
{
170214
GerarImagem(filename, ImageFormat.Jpeg);
@@ -262,7 +306,12 @@ private void GerarNfCe(Graphics graphics)
262306
#region preencher itens
263307
foreach (det detalhe in det)
264308
{
265-
AdicionarTexto codigo = new AdicionarTexto(g, detalhe.prod.cProd, 7);
309+
var codigoXml = detalhe.prod.cProd;
310+
311+
if (detalhe.prod.cProd.Length > 7)
312+
codigoXml = detalhe.prod.cProd.Remove(7);
313+
314+
AdicionarTexto codigo = new AdicionarTexto(g, codigoXml, 7);
266315
codigo.Desenhar(x, _y);
267316

268317
AdicionarTexto nome = new AdicionarTexto(g, detalhe.prod.xProd, 7);

NFe.Danfe.Nativo/NFe.Danfe.Nativo.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<None Include="Fontes\UbuntuCondensed-Regular.ttf" />
2121
</ItemGroup>
2222
<ItemGroup>
23+
<PackageReference Include="PdfSharpCore" Version="1.3.62" />
2324
<PackageReference Include="System.Drawing.Common" Version="7.0.0" />
2425
<PackageReference Include="ZXing.Net" Version="0.16.9" />
2526
<PackageReference Include="ZXing.Net.Bindings.Windows.Compatibility" Version="0.16.12" />

0 commit comments

Comments
 (0)