Convertir .txt a PDF usando la biblioteca PDFsharp para .NET

En esta ocasión vamos a convertir un archivo de texto a pdf mediante la libreria gratuita PDFsharp y Visual Studio .NET (versión 2010)




Lo primero es descargar las librerias para Visual Studio .NET de PDFsharp de la página  www.pdfsharp.com/PDFsharp. En esta web existen ejemplos, FAQ, entre otros recursos.

Ahora, con Visual Studio .NET 2010 y usando Visual Basic crearemos una aplicación Windows Form.


  

 Realizaremos una interfaz sencilla, por ejemplo:


Para poder usar las librerias primero se descomprime el archivo descargado, en nuestro caso se llama PDFsharp-MigraDocFoundation-Assemblies-1_32.zip. Después agregamos las dll a la solución de Visual Studio .NET.

Cómo agregar una referencia:
  1. Pulsamos sobre el icono Mostrar todos los iconos del explorador de soluciones situado por defecto en la parte derecha de la pantalla.
  2. Sobre References pulsamos botón derecho del ratón y Agregar referencia...
  3. En la pestaña Examinar buscamos PdfSharp.dll y la agregamos a la solución


Ahora ya podemos usar la libreria en nuestra solución.

La apliación realiza lo siguiente:
  • Abre un archivo de texto de una ruta predefinida.
  • Lee y almacena el texto en un array.
  • Convierte el array en formato pdf, mediante la libreria PDFsharp.
  • Abre el documento pdf y muestra en el campo Log los pasos y el archivo de texto.


Para realizar más operaciones con los pdf y esta librería, como poner contraseña, ir a la pagina web de PDFsharp.

El código completo es:
' Read file .txt
Imports System
Imports System.IO
' Convert To PDF
Imports PdfSharp
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf

Public Class frmMain
    Private Sub frmMain_Load(sender As System.Object, 
                            e As System.EventArgs) 
                            Handles MyBase.Load
        txtLog.Text = "Inicio." & vbCrLf
        txtPathFile.Text = "C:\ElFosoDelSarlacc\ElFosoDelSarlacc.txt"
    End Sub

    Private Sub btnConvert_Click(sender As System.Object, 
                                e As System.EventArgs) 
                                Handles btnConvert.Click
        'ReadFileTxt()
        ConvertToPDF(ReadFileTxt())
    End Sub

    Private Function ReadFileTxt()
        ' Declaramos el objeto lector y pasamos la ruta del archivo
        Dim objReader As New StreamReader(txtPathFile.Text)

        txtLog.Text = (txtLog.Text & vbCrLf &
                       "Lectura de archivo " & _
                       txtPathFile.Text & vbCrLf & "Contenido: " & vbCrLf)
        ' Para la lectura del archivo txt se usa 
        ' un array como muestra el ejemplo de Microsoft 
        ' en la página http://support.microsoft.com/kb/302309/es
        Dim sLine As String = ""
        Dim arrText As New ArrayList()
        Do
            sLine = objReader.ReadLine()
            If Not sLine Is Nothing Then
                arrText.Add(sLine)
                txtLog.Text = (txtLog.Text & sLine & vbCrLf)
            End If
        Loop Until sLine Is Nothing
        objReader.Close()

        txtLog.Text = (txtLog.Text & vbCrLf & "----- Fin de lectura -----")

        ' Devolvemos el contenido del archivo leído
        Return arrText
    End Function

    Private Sub ConvertToPDF(ByVal arrTextoConvertir As ArrayList)
        ' Create a new PDF document
        Dim document As PdfDocument = New PdfDocument
        document.Info.Title = "Created with PDFsharp"

        ' Create an empty page
        Dim page As PdfPage = document.AddPage

        ' Get an XGraphics object for drawing
        Dim gfx As XGraphics = XGraphics.FromPdfPage(page)

        ' Create a font
        Dim font As XFont = New XFont("Verdana", 10, XFontStyle.Italic)

        ' Draw the text
        For Each sLine In arrTextoConvertir
            Dim intEjeY As Integer
            Dim intEjeX As Integer

            gfx.DrawString(sLine, font, XBrushes.Black,
                           New XRect(intEjeX, intEjeY, page.Width.Point, 
                            page.Height.Point),XStringFormats.TopLeft)

            ' Bajamos 11 puntos el eje Y
            intEjeY = intEjeY + 11
        Next
        
        ' Save the document...
        Dim filename As String = "ElFosoDelSarlacc.pdf"
        document.Save(filename)
        
        ' ...and start a viewer.
        Process.Start(filename)
    End Sub
End Class

No hay comentarios:

Publicar un comentario