Convertir .tiff en pdf usando itextsharp
Hola, soy yo otra vez. Informo a los usuarios de que gracias a seguir investigando (y usando mucho el traductor de goolge) he encontrado la manea y la forma de realizar estas conversiones.
Aqui les doy el codigo (he comenta lo poco que he podido). Por cualquier duda buscadme en el foro (o en su defecto enviadme un correo). Espero que estas lineas despejen sus dudas, y gracias por haber visitado este sitio.
El codigo:
Private Sub botonEncargadoDeConvertirTifPdf_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botonEncargadoDeConvertirTifPdf.Click 'boton mediante el cual ejecutaremos el codigo que se encargara de la conversion
' Creacion del documento (lo llmaremos "documento" (yo para los nombres no me rompo la cabeza))
Dim documento As New iTextSharp.text.Document(iTextSharp.text.PageSize. A4, 0, 0, 0, 0) 'el pdf sera tamaño A4 y en este caso sin margenes (los 4 ceros que estan detras del A4)
' Creacion de la escritura del pdf (el pdf como tal, pelao y mondao)
Dim writer As iTextSharp.text.pdf.PdfWriter = iTextSharp.text.pdf.PdfWriter.GetInstance(document o, New System.IO.FileStream("c:\rutaEnLaQueSeCrearaElDocu mento\imagenConvertida.pdf", System.IO.FileMode.Create)) 'creamos el "documento" en la ruta "rutaEnLaQueSeCrearaElDocumento"
' Cargamos el archivo tif (se supone que hemos escaneado anteriormente y ahora queremos CONVERTIR el archivo tif generado en el escaneo) por paginas
Dim bm As New System.Drawing.Bitmap("c:\rutaEnLaQueSeGuardoElTif \imagenEscaneada1.tif") 'ruta alsoluta o relativa donde se encuentra el tif (ruta y nombre ej: c:\carpetaImagenEscaneada\imagenRecienEscaneadaTIF .tif)
Dim total As Integer = bm.GetFrameCount(System.Drawing.Imaging.FrameDimen sion.Page) 'calculamos cuantas paginas tiene el tif
documento.Open() 'abrimos el "documento" para trabajar con el
Dim cb As iTextSharp.text.pdf.PdfContentByte = writer.DirectContent 'admito que no se que hace exactamente esta linea, pero es TOTALMENTE NECESARIA
For k As Integer = 0 To total - 1 'en fin, convertir pagina por pagina (k es solo una variable para usar el contador for)
bm.SelectActiveFrame(System.Drawing.Imaging.FrameD imension.Page, k) 'lo mismo me pasa con la linea de antes, no se para que se usa pero es necesaria
Dim img As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(bm, System.Drawing.Imaging.ImageFormat.Bmp) 'otra de lo mismo
' scale the image to fit in the page (vamos, dar un tamaño a la pagina)
img.ScalePercent(72.0F / img.DpiX * 100)
img.SetAbsolutePosition(0, 0) 'posicion de la imagen escaneada dentro de la pagina del pdf
cb.AddImage(img) 'añadir la imagen (¿sino para que corcho la hemos escaneado?)
documento.NewPage() 'nueva pagina (si es solo una pagina esto no vale demasiado, pero es mejor no suprimirlo)
Next 'bueno, para los que no esten familiarizadon con los bucles controlados for, el next es para pasar al siguiente elemento del contador
documento.Close() 'cerramos el documento (ya hemos trasteado bastante con el)
MessageBox.Show("Proceso terminado") 'no hace falta poner esta caja de texto, pero queda bonito
End Sub
Se que es un poco caótico (tranquilos, la gran mayoria son lineas muy largas de comentarios), pero si lo copiais en vuestro proyecto no dara ni un error (a mi por lo menos no me da ninguno).