Colaboraciones en el Guille

Funcionalidad de iTextSharp usando Visual Basic .net

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

 

Fecha: 24/Dic/2005 (24-12-05)
Autor: Percy Reyes Paredes - [email protected]

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 Basic , la cual debe ser parecido a esta, y programaremos el evento click de control Button "Generar PDF".

interfaz de la aplicación

Luego, generaremos un documento pdf con el contenido fuente de Form1.vb, 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.vb. 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 Visual Basic, 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.

referencia 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).

Pdf generado

 

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

Imports iTextSharp.text
Imports iTextSharp.text.pdf

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    Friend WithEvents BtnGenerarPDF As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.BtnGenerarPDF = New System.Windows.Forms.Button
        Me.SuspendLayout()
        '
        'BtnGenerarPDF
        '
        Me.BtnGenerarPDF.Location = New System.Drawing.Point(24, 16)
        Me.BtnGenerarPDF.Name = "BtnGenerarPDF"
        Me.BtnGenerarPDF.Size = New System.Drawing.Size(184, 32)
        Me.BtnGenerarPDF.TabIndex = 0
        Me.BtnGenerarPDF.Text = "Generar PDF"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(240, 62)
        Me.Controls.Add(Me.BtnGenerarPDF)
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)

    End Sub

#End Region

    'codigo generado por el dieñador de windows

    Private Sub BtnGenerarPDF_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BtnGenerarPDF.Click

        'creamos el documento
        '...ahora configuramos para que el tamaño de hoja sea A4
        Dim document As 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
         Dim writer As PdfWriter = 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
          Dim TemPath As String = Application.StartupPath.ToString()
          TemPath = TemPath.Substring(0, TemPath.Length - 4)
          Dim pathFileForm1cs As String = TemPath + "\Form1.vb"
          Dim reader As System.IO.StreamReader = New System.IO.StreamReader(pathFileForm1cs)

          'leemos primera línea
         Dim linea As String = reader.ReadLine()
         'creamos la fuente
         Dim myfont As iTextSharp.text.Font = 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 
         Dim myParagraph As Paragraph = 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))
         Loop While Not (linea Is Nothing) '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")
      End Sub
  End Class

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_vb.zip - 8.72 KB


ir al índice principal del Guille