Curso gratis para crear el archivo PDF a partir de un XML 3.3 ya timbrado. C# .Net #SAT #cfdi




Con este curso de 4 videos te enseño como crear el archivo pdf a partir de un XML ya timbrado con C# .Net.

Te invito a que te suscribas a mi canal de youtube para mas videos interesantes sobre programación.

La ventaja que tiene ese curso, es que haremos el archivo pdf a partir de un archivo HTML, esto es útil para cuando el cliente pide muchos cambios en su formato (es más fácil capacitarlo a que el mismo mueva el archivo html que capacitarlo en crystal reports por ejemplo).

Me enfoco para crear el archivo PDF con un proyecto simple de consola, para que así veas que puedes implementarlo en cualquier tipo de proyecto de C# .Net: mvc .net, asp, Windows form, WPF, WCF etc.

1.- En el primer video nos enfocaremos a obtener la información del xml 3.3 en un objeto, y para ello te muestro como es posible hacer el parseo de los datos del xml para posterior poder manipularlos.

2.- En este segundo video nos centraremos en convertir un archivo html a pdf, y de igual manera te mostrare como ejecutar Razor para que nuestro html sea manipulado dinámicamente (no importa que el proyecto no sea web, yo te muestro como hacerlo).

3.- En este video te muestro como crear el código QR como el SAT lo requiere.

4.- En este video, te muestro como hacer el archivo PDF conforme al anexo 20, al igual veremos cómo crear el texto de la cantidad total de la factura con letra.

5.- Por último, te enseño como puedes navegar a elementos mas profundos, en este caso los impuestos, y de esta manera puedas representarlos en tu pdf.

Con estos 5 videos seras capaz de crear el archivo PDF sin problemas.

 

¿Cómo crear el archivo pdf a partir de un xml timbrado 3.3 C# .Net? | Creación de QR | SAT #3

En este tercer video te mostrare como crear el código QR como lo exige el SAT.

Código del video: clic aquí

Primer video: https://www.youtube.com/watch?v=gHSC8GrEC5g

Segundo video: https://www.youtube.com/watch?v=ZppyFAM2JQM

Cuarto video: https://youtu.be/0nmqpoCTUuM

Curso para que aprendas a crear el xml 3.3 desde cero: https://www.youtube.com/watch?v=XlTz0NRQLm4&list=PLWYKfSbdsjJg-yuu9K53GwthkEE8lkXDL

Catálogos sat mysql: https://hdeleon.net/catalogos-para-facturar-3-3-sat-en-mysql/

¿Cómo insertar texto en un archivo PDF con C# .Net? ITextSharp

Para realizar esto vamos a hacer uso de la librería ITextSharp.Net, la cual deben instalar primero mediante Nuget (si no sabes cómo utilizar Nuget yo te muestro aquí).

El código a continuación viene comentado paso a paso para que puedas entender cómo se puede insertar texto en un archivo PDF existente.


 //rutas de nuestros pdf
string pathPDF = @"C:\original.pdf";
string pathPDF2 = @"C:\con_texto.pdf";

//Objeto para leer el pdf original
PdfReader oReader = new PdfReader(pathPDF);
//Objeto que tiene el tamaño de nuestro documento
Rectangle oSize = oReader.GetPageSizeWithRotation(1);
//documento de itextsharp para realizar el trabajo asignandole el tamaño del original
Document oDocument = new Document(oSize);

// Creamos el objeto en el cual haremos la inserción
FileStream oFS = new FileStream(pathPDF2, FileMode.Create, FileAccess.Write);
PdfWriter oWriter = PdfWriter.GetInstance(oDocument, oFS);
oDocument.Open();

//El contenido del pdf, aqui se hace la escritura del contenido
PdfContentByte oPDF = oWriter.DirectContent;

//Propiedades de nuestra fuente a insertar
BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
oPDF.SetColorFill(BaseColor.RED);
oPDF.SetFontAndSize(bf, 8);

//Se abre el flujo para escribir el texto
oPDF.BeginText();
//asignamos el texto
string text = "HOLA SOY UN TEXTO ROJO EN UN PDF";
// Le damos posición y rotación al texto
// la posición de Y es al revés de como estamos acostumbrados
oPDF.ShowTextAligned(1, text, 30, oSize.Height-30, 0);
oPDF.EndText();         

//crea una nueva pagina y agrega el pdf original
PdfImportedPage page = oWriter.GetImportedPage(oReader, 1);
oPDF.AddTemplate(page, 0, 0);

// Cerramos los objetos utilizados
oDocument.Close();
oFS.Close();
oWriter.Close();
oReader.Close();