|
B4A en español - Juan Antonio Villalpando
(BASIC4Android)
-- Tutorial de B4A --
Volver al índice del tutorial
____________________________
54.- Lector PDF. Localizador de archivo.
- Vamos a leer archivos PDF. En principio B4A no tiene herramientas propias para visualizar archivos pdf.
- Para poder visualizar archivos pdf, necesitamos un visor pdf y luego enviar mediante un Intent, el archivo al visor.
- El Intent se utiliza para comunicar una aplicación con otra, en este caso enviaremos un archivos pdf desde nuestra aplicación al visor pdf.
Vamos a bajar un lector PDF, por ejemplo el APV pdf Viewer, es gratuito, código libre.
|
|
______________________________________________________
- Nuestra aplicación, visor pdf basado en el visor anterior.
- Pero también podemos hacer un programa con el cual localizaremos un archivo pdf y lo podemos visualizar "envíándolo" al visor pdf (APV pdf Viewer) que hemos instalado.
Crea mediante el Designer un "Layout", inserta un Label1 y un ListView.
Prepara un archivo pdf y lo copias en la carpeta Files del proyecto.
Desmarca la línea:
' File.Copy(File.DirAssets,"test.pdf",File.DirRootExternal,"test.pdf")
Esta línea lo que hace es copiar el archivo test.pdf que se encuentra en la carpeta File a la sdcard, ejecuta esa línea solo una vez para realizar la copia. |
|
___________
- Código.
Copia y pega este código en un nuevo proyecto |
' Juan Antonio Villalpando
' juana1991@yahoo.com
Sub Process_Globals
End Sub
Sub Globals
Dim ListView1 As ListView
Dim Label1 As Label
Dim ruta As String
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout")
' Graba un archivo pdfen el directorio Files del proyecto
' Ejecuta una vez esta línea para copiar el archivo en la SD card
' File.Copy(File.DirAssets,"test.pdf",File.DirRootExternal,"test.pdf")
ListFolderContent(File.DirRootExternal)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub ListFolderContent(folder As String) As String
Dim Listado As List
ruta = folder
Listado = File.ListFiles(ruta)
Listado.Sort(True)
ListView1.Clear
ListView1.AddSingleLine("..") ' Directorio superior
For n = 0 To Listado.Size-1
archivo = Listado.Get(n)
ListView1.AddSingleLine(archivo)
Next
End Sub
Sub ListView1_ItemClick (Position As Int, Value As String)
Activity.Title = File.Combine(ruta & "/", Value)
Label1.Text = File.Combine(ruta & "/", Value)
If Value = ".." Then
' Elimina el último directorio de la ruta
' /mnt/sdcard/Android/data --->>> /mnt/sdcard/Android
ListFolderContent(ruta.SubString2(0, ruta.LastIndexOf("/")))
Value = ""
Activity.Title = File.Combine(ruta & "/", Value)
Label1.Text = File.Combine(ruta & "/", Value)
Else
If File.IsDirectory (ruta, Value) Then
ListFolderContent(File.Combine(ruta & "/", Value))
End If
End If
' Puedes utilizar esta parte del código o la siguiente
Dim i As Intent
i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(ruta & "/", Value))
i.SetComponent("android/com.android.internal.app.ResolverActivity")
i.SetType("application/pdf")
StartActivity(i)
' Otra forma de hacerlo
' Dim i As Intent
' i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(ruta & "/", Value))
' i.SetType("application/pdf")
' i.WrapAsIntentChooser("Elegir Visor PDF")
' StartActivity(i)
End Sub
|
- En este código hemos utilizado Intent, esta orden nos comunica con otra aplicación, en nuestro caso el sistema busca qué aplicación tenemos asociada a la extensión (MIME) application/pdf, y ejecuta el archivo con esa aplicación asociada. En nuestro caso esa aplicación es el visor APV pdf Visor que hemos instalado previamente.
Para volver a elegir archivo pulsamos el botón del móvil "Atrás".
Para evitar que salga erroe cuando no encuentar pdf, podríamos poner...
Try
StartActivity(i)
Catch
ToastMessageShow ( "No encontrado" , True )
End Try
___________________________________________
- ¿Cómo puedo construir un archivo pdf?
Hay muchas herramientas que convierten un archivo a pdf, te aconsejo PDFill Free. Lo instalas, una vez instalado abres un archivo de texto (o también de imagenes) y una vez abierto le das a Imprimir, una de las "impresoras" será "PDFill PDF&Image Write", pulsas en esa opción y el documento se copiará en formato pdf.
- Con esta herramienta tienes otras posibilidades como cortar páginas de un pdf de varias páginas, unir páginas, etc...
________________________________
|