Cómo convertir un texto plano (sin formato) a fichero PDF usando la DLL gratuita iTextSharp y el lenguaje de programación Microsoft Visual Basic .Net 2010. Publicamos una aplicación completa de ejemplo con el código fuente en VB.Net: AjpdSoft Convertir Texto a PDF.
- Videotutorial AjpdSoft Convertir Texto a PDF.
- Descarga del componente gratuito iTextSharp.
- Instalación de Microsoft Visual Studio .Net.
- Convertir texto a PDF con VB.Net y iTextSharp.
- AjpdSoft Convertir Texto a PDF.
- Código fuente completo de AjpdSoft Convertir Texto a PDF.
Videotutorial AjpdSoft Convertir Texto a PDF
A continuación mostramos un videotutorial de la aplicación open source AjpdSoft Convertir Texto a PDF en funcionamiento:
Descarga del componente gratuito iTextSharp
Para desarrollar una aplicación que convierta texto en PDF (portable document format ó formato de documento portátil) usaremos la librería iTextSharp, por lo tanto necesitaremos descargar el fichero de esta librería dll. Accederemos a la URL: http://sourceforge.net/projects/itextsharp.
Descargaremos la versión más reciente de iTextSharp (iText#), en nuestro caso: iTextSharp 5.2.1. Se descargará el fichero itextsharp-all-5.2.1.zip, lo descomprimiremos. Este fichero contiene, a su vez, los siguientes ficheros comprimidos:
- itextsharp-dll-cores-5.2.1.zip
- itextsharp-dll-xtra-5.2.1.zip
- itextsharp-src-core-5.2.1.zip
- itextsharp-src-xtra-5.2.1.zip
iTextSharp está desarrollado en Microsoft Visual C# y, además, la descarga anterior incluye el código fuente completo (itextsharp-src-core-5.2.1.zip). En nuestro caso usaremos la DLL ya compilada de iTextSharp por lo que descomprimiremos el fichero «itextsharp-dll-cores-5.2.1.zip» que contiene el fichero itextsharp.dll, este será el fichero necesario para trabajar con ficheros PDF usando Visual Basic .Net (VB.Net) o Visual C#. Copiaremos este fichero a la carpeta que queramos (por ejemplo la raíz de nuestros proyectos). Más adelante deberemos seleccionarlo desde nuestro proyecto VB.Net:
Instalación de Microsoft Visual Studio .Net
Para desarrollar la aplicación que nos permita convertir texto a PDF, usaremos el lenguaje de programación Microsoft Visual Basic .Net 2010, perteneciente a la suite de desarrollo Microsoft Visual Studio .Net. En el siguiente tutorial explicamos cómo instalar esta suite de desarrollo:
Convertir texto a PDF con VB.Net y iTextSharp
A continuación explicaremos cómo crear un proyecto o solución en Visual Basic .Net para convertir texto a PDF. Para ello abriremos Visual Basic .Net, pulsaremos en el menú «Archivo» – «Nuevo proyecto»:
Seleccionaremos en la parte izquierda «Visual Basic» – «Windows», en la parte derecha seleccionaremos «Aplicación de Windows Forms» e introduciremos el nombre del proyecto, por ejemplo «AjpdSoftConvertirTextoPDF»:
Agregaremos la referencia a iTextSharp (iText#), para ello pulsaremos en el menú «Proyecto» – «Agregar referencia»:
Pulsaremos en la pestaña «Examinar» y seleccionaremos el fichero «itextsharp.dll» descargado anteriormente:
Añadiremos los «imports» al proyecto, para ello pulsaremos en el menú «Ver» – «Código»:
Al principio agregaremos el siguiente código:
Imports iTextSharp
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports System.IO
Añadiremos los siguientes componentes al formulario principal de nuestra aplicación para convertir texto a PDF:
- TextBox: con la propiedad «Multiline» a True, con nombre (name): txtTexto.
- Button: cuatro botones para «Abrir fichero», «Limpiar texto», seleccionar fichero PDF, «Generar PDF».
- TextBox: para los metadatos título, asunto, palabras clave, autor y para el fichero destino PDF.
- OpenFileDialog: para selección de fichero de texto plano a abrir y convertir a PDF.
- SaveFileDialog: para seleccionar fichero destino de conversión de texto a PDF.
A continuación mostramos el código fuente VB.Net de cada botón:
- Botón «Abrir fichero«:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Private Sub btAbrirFicheroTexto_Click(sender As System.Object, e As System.EventArgs) Handles btAbrirFicheroTexto.Click dlAbrir.CheckFileExists = True dlAbrir.CheckPathExists = True dlAbrir.Multiselect = False dlAbrir.DefaultExt = "txt" dlAbrir.FileName = "" dlAbrir.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*" dlAbrir.Title = "Abrir fichero de texto para convertir a PDF" If dlAbrir.ShowDialog = Windows.Forms.DialogResult.OK Then Dim objFichero As New _ System.IO.StreamReader(dlAbrir.FileName, System.Text.Encoding.Default) txtTexto.Text = objFichero.ReadToEnd End If |
- Botón «Limpiar texto«:
1 2 3 4 |
Private Sub btLimpiarTexto_Click(sender As System.Object, e As System.EventArgs) Handles btLimpiarTexto.Click txtTexto.Text = "" End Sub |
- Botón «Seleccionar PDF«:
1 2 3 4 5 6 7 8 9 10 11 12 |
Private Sub btSeleccionarPDF_Click(sender As System.Object, _ e As System.EventArgs) Handles btSeleccionarPDF.Click dlGuardar.CheckFileExists = False dlGuardar.CheckPathExists = True dlGuardar.DefaultExt = "txt" dlGuardar.FileName = "" dlGuardar.Filter = "Archivos PDF (*.pdf)|*.pdf|Todos los archivos (*.*)|*.*" dlGuardar.Title = "Fichero PDF destino" If dlGuardar.ShowDialog = Windows.Forms.DialogResult.OK Then txtFicheroPDF.Text = dlGuardar.FileName End If End Sub |
- Botón «Generar PDF«:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
Private Sub btGenerarPDF_Click(sender As System.Object, e As System.EventArgs) Handles btGenerarPDF.Click If txtTexto.Text = "" Then MsgBox("Debe introducir el texto a convertir a PDF.", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly) txtTexto.Focus() Else If txtFicheroPDF.Text = "" Then MsgBox("Debe indicar el fichero PDF destino de la conversión del texto.", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly) txtFicheroPDF.Focus() Else Try 'Creamos el objeto documento PDF Dim documentoPDF As New Document PdfWriter.GetInstance(documentoPDF, New FileStream(txtFicheroPDF.Text, FileMode.Create)) documentoPDF.Open() 'Escribimos el texto en el objeto documento PDF documentoPDF.Add(New Paragraph(txtTexto.Text, FontFactory.GetFont(FontFactory.TIMES, 11, iTextSharp.text.Font.NORMAL))) ' documentoPDF.Add(New Paragraph("Documento generado por http://www.ajpdsoft.com", ' FontFactory.GetFont(FontFactory.COURIER, 8, ' iTextSharp.text.Font.NORMAL))) 'Añadimos los metadatos para el fichero PDF documentoPDF.AddAuthor(txtAutor.Text) documentoPDF.AddCreator("AjpdSoft Convertir texto a PDF - www.ajpdsoft.com") documentoPDF.AddKeywords(txtPalabrasClave.Text) documentoPDF.AddSubject(txtAsunto.Text) documentoPDF.AddTitle(txtTitulo.Text) documentoPDF.AddCreationDate() 'Cerramos el objeto documento, guardamos y creamos el PDF documentoPDF.Close() 'Comprobamos si se ha creado el fichero PDF If System.IO.File.Exists(txtFicheroPDF.Text) Then If MsgBox("Texto convertido a fichero PDF correctamente " + _ "¿desea abrir el fichero PDF resultante?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then 'Abrimos el fichero PDF con la aplicación asociada System.Diagnostics.Process.Start(txtFicheroPDF.Text) End If Else MsgBox("El fichero PDF no se ha generado, " + _ "compruebe que tiene permisos en la carpeta de destino.", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly) End If Catch ex As Exception MsgBox("Se ha producido un error al intentar convertir el texto a PDF: " + _ vbCrLf + vbCrLf + ex.Message, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly) End Try End If End If End Sub |
AjpdSoft Convertir Texto a PDF
AjpdSoft Convertir Texto a PDF permite convertir texto plano (sin formato) a fichero PDF sin necesidad de usar impresoras PDF ni Acrobat Professional.
El manejo de la aplicación es muy sencillo, es suficiente con escribir el texto a convertir en el cuadro de texto, o bien pulsar en el botón «Abrir fichero» y seleccionar un fichero de texto plano, la aplicación lo mostrará en el cuadro de texto. Una vez que hayamos introducido el texto a convertir a PDF, introduciremos los metadatos: título, asunto, palabras clave y autor. Seleccionaremos el fichero PDF de destino (el que se creará en la conversión) en «Fichero PDF de destino» y para generar el fichero PDF pulsaremos en «Generar PDF»:
Si la conversión de texto a PDF se realiza correctamente la aplicación AjpdSoft Convertir Texto a PDF mostrará el siguiente mensaje, pulsando en «Sí» se abrirá el fichero PDF resultante:
Con el texto: «Texto convertido a fichero PDF correctamente ¿desea abrir el fichero PDF resultante?»
El fichero PDF abierto con Acrobat Reader:
Consultando las propiedades del fichero PDF generado podremos ver los metadatos introducidos anteriormente (título, autor, asunto, palabras clave, creador):
Código fuente completo de AjpdSoft Convertir Texto a PDF
A continuación mostramos el enlace para descargar gratuitamente el código fuente completo de la aplicación AjpdSoft Convertir Texto a PDF, desarrollada con VB.Net 2010 (Microsoft Visual Basic .Net 2010):
El listado completo del código fuente de la aplicación AjpdSoft Convertir Texto a PDF:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
Imports iTextSharp Imports iTextSharp.text Imports iTextSharp.text.pdf Imports System.IO Public Class formPDF Private Sub btLimpiarTexto_Click(sender As System.Object, e As System.EventArgs) Handles btLimpiarTexto.Click txtTexto.Text = "" End Sub Private Sub btAbrirFicheroTexto_Click(sender As System.Object, e As System.EventArgs) Handles btAbrirFicheroTexto.Click dlAbrir.CheckFileExists = True dlAbrir.CheckPathExists = True dlAbrir.Multiselect = False dlAbrir.DefaultExt = "txt" dlAbrir.FileName = "" dlAbrir.Filter = "Archivos de texto (*.txt)|*.txt|Todos los archivos (*.*)|*.*" dlAbrir.Title = "Abrir fichero de texto para convertir a PDF" If dlAbrir.ShowDialog = Windows.Forms.DialogResult.OK Then Dim objFichero As New _ System.IO.StreamReader(dlAbrir.FileName, System.Text.Encoding.Default) txtTexto.Text = objFichero.ReadToEnd End If End Sub Private Sub btGenerarPDF_Click(sender As System.Object, e As System.EventArgs) Handles btGenerarPDF.Click If txtTexto.Text = "" Then MsgBox("Debe introducir el texto a convertir a PDF.", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly) txtTexto.Focus() Else If txtFicheroPDF.Text = "" Then MsgBox("Debe indicar el fichero PDF destino de la conversión del texto.", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly) txtFicheroPDF.Focus() Else Try 'Creamos el objeto documento PDF Dim documentoPDF As New Document PdfWriter.GetInstance(documentoPDF, New FileStream(txtFicheroPDF.Text, FileMode.Create)) documentoPDF.Open() 'Escribimos el texto en el objeto documento PDF documentoPDF.Add(New Paragraph(txtTexto.Text, FontFactory.GetFont(FontFactory.TIMES, 11, iTextSharp.text.Font.NORMAL))) ' documentoPDF.Add(New Paragraph("Documento generado por http://www.ajpdsoft.com", ' FontFactory.GetFont(FontFactory.COURIER, 8, ' iTextSharp.text.Font.NORMAL))) 'Añadimos los metadatos para el fichero PDF documentoPDF.AddAuthor(txtAutor.Text) documentoPDF.AddCreator("AjpdSoft Convertir texto a PDF - www.ajpdsoft.com") documentoPDF.AddKeywords(txtPalabrasClave.Text) documentoPDF.AddSubject(txtAsunto.Text) documentoPDF.AddTitle(txtTitulo.Text) documentoPDF.AddCreationDate() 'Cerramos el objeto documento, guardamos y creamos el PDF documentoPDF.Close() 'Comprobamos si se ha creado el fichero PDF If System.IO.File.Exists(txtFicheroPDF.Text) Then If MsgBox("Texto convertido a fichero PDF correctamente " + _ "¿desea abrir el fichero PDF resultante?", MsgBoxStyle.Question + MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then 'Abrimos el fichero PDF con la aplicación asociada System.Diagnostics.Process.Start(txtFicheroPDF.Text) End If Else MsgBox("El fichero PDF no se ha generado, " + _ "compruebe que tiene permisos en la carpeta de destino.", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly) End If Catch ex As Exception MsgBox("Se ha producido un error al intentar convertir el texto a PDF: " + _ vbCrLf + vbCrLf + ex.Message, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly) End Try End If End If End Sub Private Sub btSeleccionarPDF_Click(sender As System.Object, _ e As System.EventArgs) Handles btSeleccionarPDF.Click dlGuardar.CheckFileExists = False dlGuardar.CheckPathExists = True dlGuardar.DefaultExt = "txt" dlGuardar.FileName = "" dlGuardar.Filter = "Archivos PDF (*.pdf)|*.pdf|Todos los archivos (*.*)|*.*" dlGuardar.Title = "Fichero PDF destino" If dlGuardar.ShowDialog = Windows.Forms.DialogResult.OK Then txtFicheroPDF.Text = dlGuardar.FileName End If End Sub Private Sub formPDF_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load txtFicheroPDF.Text = System.IO.Path.Combine(System.Environment.GetFolderPath( Environment.SpecialFolder.MyDocuments), "documento.pdf") End Sub End Class |