Archivo PDF de Rendering Android: URL local y remota

Android proporciona el Pdfrofarer Clase para la representación de archivos PDF dentro de una aplicación. Si bien permite la representación de PDF, la implementación puede ser un proceso bastante aburrido, ya que requiere la gestión de actividades como la apertura del documento, la representación de páginas individuales y la gestión de la reducción de tamaño, etc. Para una solución más rápida y eficiente, usar una estantería confiable de tercera parte es a menudo una mejor opción.

Tutoriales de archivos PDF de representación de Android

Hoy, en este artículo veremos cómo hacer archivos PDF usando
Androidpddfviewer
biblioteca. Cubriremos cómo cargar el PDF desde la memoria local y desde una URL de red utilizando la biblioteca de modificación.

1. Agregar dependencias

Comenzamos creando un nuevo proyecto en Android Studio y agregamos las adicciones necesarias.

  1. En Android Studio, crea un nuevo proyecto de Archivo => nuevo proyecto y elegir Actividades de visión vacías Para crear el proyecto usando el lenguaje Kotlin.

  2. Abra la aplicación Build.gradle y agregar el
    Pdf
    Depósito de la biblioteca. También debemos agregar
    Modernización
    Y
    Okhttp
    Bibliotecas para hacer la llamada de la red. Dependencias {// Liveata & ViewModelns Implementación “Androidx.lifecycle: lifecycle-liveta-ktx: 2.8.6” Implementación “Androidx.lifacycle: Lifacycle-ViewModel-Ktx: 2.8.6” // Visitista de implementación pdf “Com.Giithub.Bartekekekekekekekekekekekekekekekekekekekek. : Android-PDF-Viewer: 3.2.0-beta.1 “// Implementación de modernización” com.squareup.okhttp3: registro-interesante: 5.0.0-alpha.14 “Implementación” com.squareup. SquareUp.Recrofit2: Retrofit: 2.11.0 “Implementación” com.Jakewharton.Recropofit: Retrofit2-Kotlin-Coroutines-Adapter: 0.9.2 “}

2. Carga del PDF local

La biblioteca PDF proporciona Pdfview Componente que se puede incluir en el diseño XML. La carga del PDF desde la memoria local es bastante simple.

Primero agregue el Pdfview componente en el archivo de diseño.

Y cargue el PDF utilizando uno de los métodos a continuación. Es necesario implementar la intención de elegir el archivo para obtener el archivo del archivo. // Proporcione el documento para cargar PDF PDFVIEW.Fromuri (URI) // o use el otro PDFVIEW.FROMFILE Métodos (archivo) PDFVIEW.Frombytes (BYTE[]) Pdfview.fromstream (inputStream) pdfview.FromOmeSource (Documentsource)

Subiendo el PDF local de Android

3. Carga del PDF desde la URL remota

La biblioteca no ofrece un método para hacer el PDF directamente desde una URL remota. En su lugar, el archivo debe descargarse primero y luego representado. Para descargar el archivo, utilizaremos la biblioteca de red de modificación. A continuación se muestra la estructura final del proyecto que crearemos en breve.

Estructura del proyecto PDF de la vista previa de Android

3.1 Agregar la biblioteca de la columna vertebral

En este tutorial, mantendremos la instalación muy simple necesaria para la modificación. Puede personalizar aún más la biblioteca y utilizar un marco de dependencia como ELSA Para una integración más fácil. {Alertinfo}

  1. Crea un nuevo paquete llamado tensiones y crea una clase llamada
    Singletononholder.kt. Usando esta clase, podemos crear la solicitud Singleton de los objetos de clase. Info.Androidhive paquete.Androidpdf.util Open Class Singlettonholder (Creator: (a) -> t) {private var Creator: ((a) -> t)? = Creador @ovlar private var instancia: t? = Null Fun Goinstance (argo: a): t {val i = request if (i! = Null) {return i} return sincronizado (this) {val i2 = instance if (i2! = Null) {i2} más {val Creado = Creador !! (arg) instancia = creado creador = nulo creado}}}}

  2. Crea otro paquete llamado remoto y crear Nullonemptyconconvectory.kt, API.KT Y Apiservice.kt archivos debajo de él. Info.Androidhive paquete.Androidpdf.Remote Importa Okhttp3.ResseSseBody Matters Retrofit2.Converter Retrofit2 Importador Delegado: converter = retrofit.nextrestedodyConer (this, type, annatitions) return Converter {body -> if (body.contentLength () == 0l) {“{}” // )}} Objeto acompañado {diversión create ():: Convertidor.factory {return nullonempty con ()}} en Abeja Archivos de servicio, concluimos el interceptor y la modernización, proporcionando la configuración necesaria. Info.androidhive paquete.androidpdf.remote import android.content.context import com.google.gson.gsonbuilder import Importar RETROFIT2.ARTROFIT IMPORT RETROFIT2 RETROFIT (). Create (apiservice :: class.java)} private diversión modificada (): retrofit {return retrofit.builder (). AddCalladapterFactory (ChoirutInecallAdapterFactory () .Client (OKHTTPClient ())). .AddCalladapterFactory (ChoiralladoPterFactory ()). Return okhttpclient.builder () .AdinTarceptor (interceptor {cadena: interceptor.chain -> val solicitud: request = chain.request (). NewBuilder () .Build () cadena .proeced (solicitud)}). : Api)} en Apisificación Archivo, definimos todos los puntos finales HTTP para la aplicación. Para este ejemplo, solo necesitamos un método para descargar PDF de URL. Info.AndroidHive Package.Androidpdf.Remote Import Okhttp3.ResponseBody Import Retrofit2.Call Importar de Retrofit2.http.get Import Retrofit2.http.url Interface Apiservice {@get fungFile (@URL url: string?): Llamar}

3.2 Renderización de PDF de URL

Ahora que tenemos el nivel de red listo, creemos una actividad para ver el PDF. Esta actividad sigue la base MVVM Estructura que proporciona la creación de una actividad, fragmento, modelo de pantalla y una clase de repositorio.

  1. Crea un nuevo paquete llamado pdf Para agregar, mantenga todos los archivos de PDF en un solo paquete
  2. Haga clic con el botón derecho en el paquete PDF y seleccione Nuevo => actividades => fragmento + ViewModel y llámalos como VISTPDFactividad, ViewpdffragmentY ViewpdfviewModel.
  3. Abierto Androidmanifest.xml y agregar INTERNET autorización. Agregar confiscan atribuir a VISTPDFactividad Para evitar reiniciar la actividad en los cambios en la orientación del dispositivo.
  4. Crear Viewpdfredpostory.kt Y agregue el siguiente contenido. Este repositorio se ocupa de hacer la llamada HTTP y recupera el contenido del archivo PDF. Info.androidhive paquete.androidpdf.ui.pdf INFO INFO.AndroidHive.Androidpdf.remote.apiservice Import OKHTTP3.ResponseBody Import Retrofit2 {return {api.getFile (url) .Execute ()} catch (e: Exception) {null} }}
  5. Crear VISTPDFVIEWMODEL.KT y agregue el siguiente código. Este ViewModel habla con el repositorio e ingresa los datos del archivo en una variable de datos en vivo. Estos datos en vivo se observarán en el fragmento. Info.androidhive paquete.androidpdf.ui.pdf import android.app.application import androidx.lifecycle.androidViewModel import androidx.lifecycle.livedata import androidx.lifecycle.mutablelite import androidx.lifecycle.viewModescope Info.androidhive.androidpdf.remote.api Importar información AndroidViewModel (Aplicación) {Private Val Apiservice: apiservice = api.getInstance (aplicación). {ViewModelsCope.Launch (despachadores.io) {_fitRestream.postValue (Repository.getFile (url))}}}
  6. Abra el archivo de diseño del fragmento fragment_view_pdf.xml y agregar el Pdfview componente. También estamos agregando un indicador de avance que se mostrará mientras se descarga el archivo.
  7. Finalmente abrir Viewpdffragment.kt y hacer los siguientes cambios. Aquí pasamos la URL PDF para ver el modelo y ver el PDF una vez descargado. Info.androidhive paquete.androidpdf.ui.pdf import androidx.fragment.app.viewmodels import android.os.bundle import androidx.fragument.app.fragy import android.view.layoutinflater import android.view.view android.viewgroup import Android.widget.toast Importar información (LayoutInflater} prive Viewel: ViewTModel of LazyHawhed por Lazy {fragmentViewpdfbinding.inflate (LayoutInflater) ViewModels () var Título privado: String? = NULL private var pdfurl: string? = NULL COMPANTION {FUN Newinnce (BUNTLE: BUNTLE?) ViewPDFFRAGMent () aplicar {argoments = bundle}} sobrescrito de diversión (saveDInStantestate: bundle?) {Super.create (saveDInStantestate) argumentos? (“PDF_URL”)}} Private Fun bindobServers () {ViewModel.fitReame.observe (this) {Response -> if (¿Respuesta? .Cuerpo ()? ByTestream ()) .onLoad {ProgressBar.hide ()} .onerror {progressbar.hide ()} .load ()}} {binding.progressBar.hide () toast.makEtext (actividades, r.string.error_preview_pdf_file, toast .length_short) .low ()}}}} prevaleciente en el createview (Inflater: LayoutInflater, Container: ViewGroup?, SavedInstantestate: Bundle?
  8. Ahora, para ver el PDF, lanza la actividad del visor PDF pasando la URL HTTP PDF. Binding.btnsample1.SetOnClickListener {OpenPDF (“Lorem iPsum”, // Título de PDF “https://firebasestorage.googleapis.com/v0/b/project-852532323942962534560.appspot.com/o/sam PLES%2FPDF%2FFILE-EXAMPLE_PDF_1MB.PDF?



Andorid Rendering PDF desde el modo de paisaje de URL

Espero que este artículo haya proporcionado buenas ideas sobre la representación de los archivos PDF en Android. Puede consultar el código completo Aquí.

¡Saludos!
Código feliz 🤗

Compruebe también

Actualización de Android: como Pixel está tomando prestado del libro de jugadas de iPhone

Las actualizaciones de seguridad para Android y iPhone son comunes, pero esta vez las cosas …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *