Colaboraciones en el Guille

Funcionalidad de iTextSharp usando Visual C#

[primera entrega: generación de un documento PDF]

 

Fecha: 24/Dic/2005 (24-12-05)
Autor: Percy Reyes Paredes - bigpercynet@hotmail.com

percy's blog - percy's artículos



Hola gente, lo que voy a compartirles es algo breve y sencillo. Se trata de aprovechar la funcionalidad de iTextSharp. ¿ qué es esto?, pues te cuento que no viene a ser más que una dll que nos brinda ciertas funcionalidades que nos ayudarán en la creación de documentos txt, rtf, doc, pdf, html y xml (creo que eso es todo, ojalá no se me escape alguna), como también poder setearles algunas propiedades con valores como fuente, márgenes, tamaño de página, estilo de página, presentación inicial..., y una que otras cosas más que explicaré en el siguiente ejemplo. ah!, se me olvidaba, (es por el sueño, créanme!), que para esto, debes de descargar la DLL itextSahrp desde este site, luego debes importarlo en tu proyecto y listo!... por fin podrás trabajar con él. Aprenderemos todas estas explotar estas funcionalidades en cada una de las entregas que estoy preparando en estos días, pero por ahora les dejo, esto de, generar un documento pdf, que viene a ser la primera entrega.

Creo que un ejemplo vale más que mil palabras, así que si deseas informarte más acerca de itextSharp, puedes buscarlo usando san google, además para que matarme la cabeza escribiendo la teoría, si esto lo puedes bajar de la red. Mejor vamos con este sencillo ejemplo. Crearemos una aplicación windows en Visual C# , la cual debe ser parecido a esta, y programaremos el evento click de control Button "Generar PDF".

interfaz form

Luego, generaremos un documento pdf con el contenido fuente de Form1.cs, así es, usaremos este archivo para leerlo y generarlo el pdf. Entonces de esta manera nuestro documento pdf tendrá como contenido el texto del archivo Form1.cs. Después de generarlo esta debe abrirse con el programa de aplicación Adobe Acrobat, (esto también debe ser programado). Al final está la aplicación para que puedas bajártelo, por si las moscas quieres probar el código y por allí, quien sabe, modificarlo y adecuarlo para ti.

Entonces, en el proyecto windows en C#, agregaremos la referencia a esta dll (supongo que ya la bajaste del site que te dije). Click derecho en el proyecto, y luego en Add Reference.

AddReference

Ahora, busca la DLL, y dale ok. finalmente tendrás la librería itextsharp dentro del proyecto para que puedas usarlo.

itextsharp agregada

luego de programar el vento click de button, este se abrirá, como ya de dije, y usted podrá ver los resultados como se muestra en la siguiente imagen. (esta es una captura parcial).

documento pdf generado

 

Este es el código, espero que te sea de utilidad. revísalo !.

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
//importamos 
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace iTextSharp_bigpercynet
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Button btnGenerarPDF;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.btnGenerarPDF = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // btnGenerarPDF
            // 
            this.btnGenerarPDF.Location = new System.Drawing.Point(24, 16);
            this.btnGenerarPDF.Name = "btnGenerarPDF";
            this.btnGenerarPDF.Size = new System.Drawing.Size(184, 24);
            this.btnGenerarPDF.TabIndex = 0;
            this.btnGenerarPDF.Text = "&Generar PDF";
            this.btnGenerarPDF.Click += new System.EventHandler(this.btnGenerarPDF_Click);
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(248, 70);
            this.Controls.Add(this.btnGenerarPDF);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
            this.Name = "Form1";
            this.Text = "trabajando con iTextSharp";
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }

        private void btnGenerarPDF_Click(object sender, System.EventArgs e)
        {
            //creamos el documento
            //...ahora configuramos para que el tamaño de hoja sea A4
            Document document = new Document(iTextSharp.text.PageSize.A4); 
            document.PageSize.BackgroundColor= new iTextSharp.text.Color(255, 255,255);
            document.PageSize.Rotate();

            //...definimos el autor del documento.
            document.AddAuthor("Arbis Percy Reyes Paredes");

            //...el creador, que será el mismo eh!
            document.AddCreator("Arbis Percy Reyes Paredes");

            //hacemos que se inserte la fecha de creación para el documento
            document.AddCreationDate();
            //...título

            document.AddTitle("Generación de un pdf con itextSharp");
            //... el asunto

            document.AddSubject("Este es un paso muy important");
            //... palabras claves

            document.AddKeywords("pdf, PdfWriter; Documento; iTextSharp");

            //creamos un instancia del objeto escritor de documento
            PdfWriter writer = PdfWriter.GetInstance(document,new System.IO.FileStream
            ("Code.pdf", System.IO.FileMode.Create));


            //encriptamos el pdf, dándole como clave de usuario "key" y la clave del dueño será "owner"
            //si quitas los comentarios (en writer.SetEncryption...), entonces el documento generado
            //no mostrarà tanto la información de autor, titulo, fecha de creacion... 
            //que habiamos establecio más arriba. y sólo podrás abrirlo con una clave

            //writer.SetEncryption(PdfWriter.STRENGTH40BITS,"key","owner", PdfWriter.CenterWindow);

            //definimos la manera de inicialización de abierto del documento.
            //esto, hará que veamos al inicio, todas la páginas del documento
            //en la parte izquierda
            writer.ViewerPreferences= PdfWriter.PageModeUseThumbs;


            //con esto conseguiremos que el documento sea presentada de dos en dos 
            writer.ViewerPreferences=PdfWriter.PageLayoutTwoColumnLeft;

            //con esto podemos oculta las barras de herramienta y de menú respectivamente.
            //(quite las dos barras de comentario de la siguiente línea para ver los efectos)
            //PdfWriter.HideToolbar | PdfWriter.HideMenubar

            //abrimos el documento para agregarle contenido
            document.Open();

            //este stream es para jalar el código
            string TemPath=Application.StartupPath.ToString();
            TemPath=TemPath.Substring(0,TemPath.Length -10);
            string pathFileForm1cs=TemPath + @"\Form1.cs";
            System.IO.StreamReader reader = new System.IO.StreamReader(pathFileForm1cs);

            //leemos primera línea
            string linea= reader.ReadLine();

            //creamos la fuente
            iTextSharp.text.Font myfont= new iTextSharp.text.Font(
            FontFactory.GetFont(FontFactory.COURIER, 10, iTextSharp.text.Font.ITALIC));

            //creamos un objeto párrafo, donde insertamos cada una de las líneas que 
            //se vaya leyendo mediante el reader 
            Paragraph myParagraph = new Paragraph("Código fuente en Visual C# \n\n",myfont);

            do
            {
                //leyendo linea de texto
                linea=reader.ReadLine() ;    
                //concatenando cada parrafo que estará formado por una línea
                myParagraph.Add(new Paragraph(linea,myfont));
            }while(linea !=null);  //mientras no llegue al final de documento, sigue leyendo

            //agregar todo el paquete de texto
            document.Add(myParagraph);        

            //esto es importante, pues si no cerramos el document entonces no se creara el pdf.
            document.Close();

            //esto es para abrir el documento y verlo inmediatamente después de su creación
            System.Diagnostics.Process.Start("AcroRd32.exe","Code.pdf");

        }
    }
}

Hemos terminado de explicar esta primera parte. Nos vemos en la siguiente entrega.

Microsoft Certified Professional
Estudiante Ing. de Sistemas
Universidad Nacional de Trujillo

Saludos desde Trujillo - Perú

Por favor, califica este artículo en Panoramabox, así me animarás a continuar colaborando contigo.


Fichero con el código de ejemplo: bigpercynet_iTextSharp.zip - 9.58 KB


ir al índice principal del Guille