Generar PDFs
UruFactura SDK incluye un generador de PDFs que produce representaciones impresas de CFEs según la normativa DGI, incluyendo código QR y sellos de seguridad.
Formatos disponibles
Section titled “Formatos disponibles”| Formato | Método | Uso recomendado |
|---|---|---|
| A4 | GenerarPdfA4(cfe) | Email, archivo digital, impresora de oficina |
| Térmico 80mm | GenerarPdfTermico(cfe) | Impresora de punto de venta (ticket) |
Generar PDF A4
Section titled “Generar PDF A4”var eticket = client.CrearETicket();// ... configurar el e-ticket ...
// Enviar primero (o solo generar y firmar si no querés enviar)await client.EnviarCfeAsync(eticket);
// Generar PDF A4byte[] pdfA4 = client.GenerarPdfA4(eticket);
// Guardar en discoawait File.WriteAllBytesAsync($"eticket_{eticket.Numero:D8}.pdf", pdfA4);Generar PDF Térmico (80mm)
Section titled “Generar PDF Térmico (80mm)”byte[] pdfTermico = client.GenerarPdfTermico(eticket);await File.WriteAllBytesAsync($"eticket_{eticket.Numero:D8}_termico.pdf", pdfTermico);Generar ambos formatos
Section titled “Generar ambos formatos”var (pdfA4, pdfTermico) = ( client.GenerarPdfA4(eticket), client.GenerarPdfTermico(eticket));
await Task.WhenAll( File.WriteAllBytesAsync($"facturas/{eticket.Numero:D8}.pdf", pdfA4), File.WriteAllBytesAsync($"tickets/{eticket.Numero:D8}_80mm.pdf", pdfTermico));Enviar PDF por email (ASP.NET Core)
Section titled “Enviar PDF por email (ASP.NET Core)”public class FacturaService{ private readonly UruFacturaClient _client; private readonly IEmailService _emailService;
public async Task EmitirYEnviarAsync(string emailCliente, LineaDetalle[] detalle) { var eticket = _client.CrearETicket(); eticket.Numero = await ObtenerProximoNumeroAsync();
foreach (var linea in detalle) eticket.Detalle.Add(linea);
var respuesta = await _client.EnviarCfeAsync(eticket);
if (!respuesta.Exitoso) throw new InvalidOperationException($"DGI rechazó el CFE: {respuesta.Mensaje}");
byte[] pdf = _client.GenerarPdfA4(eticket);
await _emailService.SendAsync(new EmailMessage { To = emailCliente, Subject = $"Tu e-Ticket #{eticket.Numero}", Body = "Adjuntamos tu comprobante fiscal electrónico.", Attachment = new EmailAttachment { FileName = $"eticket_{eticket.Numero:D8}.pdf", ContentType = "application/pdf", Data = pdf, }, }); }}Guardar en Azure Blob Storage
Section titled “Guardar en Azure Blob Storage”var blobClient = containerClient.GetBlobClient($"facturas/{eticket.Numero:D8}.pdf");using var stream = new MemoryStream(pdfA4);await blobClient.UploadAsync(stream, overwrite: true);