Cargar PDF desde URL en Android con Kotlin

PDF View es la mayoría de las aplicaciones para mostrar los archivos PDF dentro de la aplicación para mostrar el pdf dentro de nuestra propia aplicación en lugar de redirigir a otra aplicación. Si queremos mostrar varios archivos pdf dentro de nuestra aplicación, tenemos que alojar estos archivos y luego acceder a estos archivos con la ayuda de su URL. En este artículo, crearemos una aplicación simple en la que cargaremos PDF desde la URL usando PDF View en Android usando Kotlin. 

Nota : si está buscando cargar PDF desde URL en PDF View en Android usando Java. Consulte el siguiente artículo: Cómo cargar PDF desde URL en Android usando Java

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: Agregar dependencia a build.gradle (Módulo: aplicación)

Navegue a Gradle Scripts > build.gradle(Module:app) y agregue la siguiente dependencia en la sección de dependencias. 

implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'

Después de agregar esta dependencia, sincronice su proyecto para instalar la dependencia. 

Paso 3: agregue permiso a Internet en su archivo AndroidManifest.xml

Agregue debajo de dos líneas dentro de su etiqueta de manifiesto en el archivo AndroidManifest.xml.

XML

<!--internet permissions and network state permission-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Paso 4: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml . Se agregan comentarios dentro del código para comprender el código con más detalle.

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
 
    <!--on below line we are creating our pdf view-->
    <com.github.barteksc.pdfviewer.PDFView
        android:id="@+id/idPDFView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
 
</RelativeLayout>

Paso 5: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

package com.gtappdevelopers.kotlingfgproject
 
import android.os.AsyncTask
import android.os.Build
import android.os.Bundle
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import com.github.barteksc.pdfviewer.PDFView
import java.io.BufferedInputStream
import java.io.InputStream
import java.net.HttpURLConnection
import java.net.URL
import javax.net.ssl.HttpsURLConnection
 
class MainActivity : AppCompatActivity() {
     
    // on below line we are creating
    // a variable for our pdf view.
    lateinit var pdfView: PDFView
 
    // on below line we are creating a variable for our pdf view url.
    var pdfUrl = "https://unec.edu.az/application/uploads/2014/12/pdf-sample.pdf"
 
    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        // on below line we are initializing
        // our pdf view with its id.
        pdfView = findViewById(R.id.idPDFView)
         
        // on below line we are calling our async
        // task to load our pdf file from url.
        // we are also passing our pdf view to
        // it along with pdf view url.
        RetrivePDFFromURL(pdfView).execute(pdfUrl)
    }
 
    // on below line we are creating a class for
    // our pdf view and passing our pdf view
    // to it as a parameter.
    class RetrivePDFFromURL(pdfView: PDFView) :
        AsyncTask<String, Void, InputStream>() {
         
        // on below line we are creating a variable for our pdf view.
        val mypdfView: PDFView = pdfView
 
        // on below line we are calling our do in background method.
        override fun doInBackground(vararg params: String?): InputStream? {
            // on below line we are creating a variable for our input stream.
            var inputStream: InputStream? = null
            try {
                // on below line we are creating an url
                // for our url which we are passing as a string.
                val url = URL(params.get(0))
                 
                // on below line we are creating our http url connection.
                val urlConnection: HttpURLConnection = url.openConnection() as HttpsURLConnection
                 
                // on below line we are checking if the response
                // is successful with the help of response code
                // 200 response code means response is successful
                if (urlConnection.responseCode == 200) {
                    // on below line we are initializing our input stream
                    // if the response is successful.
                    inputStream = BufferedInputStream(urlConnection.inputStream)
                }
            }
            // on below line we are adding catch block to handle exception
            catch (e: Exception) {
                // on below line we are simply printing
                // our exception and returning null
                e.printStackTrace()
                return null;
            }
            // on below line we are returning input stream.
            return inputStream;
        }
 
        // on below line we are calling on post execute
        // method to load the url in our pdf view.
        override fun onPostExecute(result: InputStream?) {
            // on below line we are loading url within our
            // pdf view on below line using input stream.
            mypdfView.fromStream(result).load()
 
        }
    }
}

Ahora ejecute su aplicación para ver el resultado.

Producción: 

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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