¿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();

Creación de archivo PDF en C# a partir de un archivo HTML (sin crystal report, sin itextsharp)

Creación de un archivo pdf sin utilizar ni crystal report ni itextsharp, de esta manera no dependemos de dll engorrosas como Crystal Reports.

Liga de libreria: https://wkhtmltopdf.org/

¿Cómo ponerle una contraseña a un pdf en c#?

Para poner un password a un pdf en C# podemos hacer uso de la librería iTextSharp(la cual pueden instalar con nuget, ¿Cómo utilizar nuget?) la cual tiene muchas funcionalidades para el manejo de archivos pdf.
Partiendo de un archivo pdf ya existente con el siguiente código:


 using (var input = new FileStream("C:/archivoOriginal.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
 using (var output = new FileStream("C:/archivoConContrasena.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    var reader = new PdfReader(input);
                    PdfEncryptor.Encrypt(reader, output, true,"tucontraseña", "tucontraseña", PdfWriter.ALLOW_PRINTING);
                }