¿Cómo cargar PDF desde URL en Android?

La mayoría de las aplicaciones requieren incluir soporte para mostrar archivos PDF en su aplicación. Entonces, si tenemos que usar varios archivos PDF en nuestra aplicación, prácticamente no es posible agregar cada archivo PDF dentro de nuestra aplicación porque este enfoque puede conducir a un aumento en el tamaño de la aplicación y a ningún usuario le gustaría descargar la aplicación con tal un tamaño enorme Entonces, para abordar este problema relacionado con el tamaño, cargaremos archivos PDF desde el servidor directamente dentro de nuestra aplicación sin guardar esos archivos dentro de nuestra aplicación. La carga de archivos PDF desde el servidor nos ayudará a gestionar el aumento de tamaño de nuestra aplicación. Entonces, en este artículo, veremos cómo cargar archivos PDF desde URL dentro de nuestra aplicación de Android. 

Implementación de PDFView

Para agregar esta vista de PDF, estamos usando una biblioteca que nos ayudará a cargar PDF desde la URL.

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java 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. 

implementación ‘com.github.barteksc:android-pdf-viewer:2.8.2’

Ahora la opción de sincronización aparecerá en la esquina superior derecha, haga clic en la opción sincronizar ahora.  

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

Agregue debajo de dos líneas dentro de su archivo AndroidManifest.xml .

<!–Permiso para internet–>

<usos-permiso android:name=”android.permission.INTERNET” />

<usos-permiso 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 .

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"
    tools:context=".MainActivity">
  
    <!--PDF Viewer to display our PDF-->
    <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.java

Vaya a la aplicación > java > el nombre del paquete de su aplicación > archivo MainActivity.java. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle. 

Java

import android.os.AsyncTask;
import android.os.Bundle;
  
import androidx.appcompat.app.AppCompatActivity;
  
import com.github.barteksc.pdfviewer.PDFView;
  
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
  
import javax.net.ssl.HttpsURLConnection;
  
public class MainActivity extends AppCompatActivity {
  
    // creating a variable
    // for PDF view.
    PDFView pdfView;
  
    // url of our PDF file.
    String pdfurl = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf";
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // initializing our pdf view.
        pdfView = findViewById(R.id.idPDFView);
        new RetrivePDFfromUrl().execute(pdfurl);
    }
  
    // create an async task class for loading pdf file from URL.
    class RetrivePDFfromUrl extends AsyncTask<String, Void, InputStream> {
        @Override
        protected InputStream doInBackground(String... strings) {
            // we are using inputstream 
            // for getting out PDF.
            InputStream inputStream = null;
            try {
                URL url = new URL(strings[0]);
                // below is the step where we are 
                // creating our connection.
                HttpURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
                if (urlConnection.getResponseCode() == 200) {
                    // response is success.
                    // we are getting input stream from url 
                    // and storing it in our variable.
                    inputStream = new BufferedInputStream(urlConnection.getInputStream());
                }
                  
            } catch (IOException e) {
                // this is the method 
                // to handle errors.
                e.printStackTrace();
                return null;
            }
            return inputStream;
        }
  
        @Override
        protected void onPostExecute(InputStream inputStream) {
            // after the execution of our async 
            // task we are loading our pdf in our pdf view.
            pdfView.fromStream(inputStream).load();
        }
    }
}

Nota: si ha actualizado a Android Studio a 4.0 o posterior, es posible que se encuentre con el siguiente error

Execution failed for task ':app:stripDebugDebugSymbols'.
NDK at ~/Library/Android/sdk/ndk-bundle did not have a source.properties file

Consulte esto para corregir el error.

Producción: 

Consulte el proyecto: https://github.com/ChaitanyaMunje/GFGImageSlider/tree/PDFViewer

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 *