Extraiga datos de un archivo PDF en Android usando Kotlin

PDF es un formato de documento portátil que se utiliza para representar datos como imágenes, tablas y muchos más. Hoy en día el uso de PDF se incrementa rápidamente en diferentes campos. Muchas aplicaciones han pasado a abusar de los archivos PDF para representar datos. Entonces, algunas de las aplicaciones tienen el requisito de extraer los datos del archivo PDF y mostrar esos datos dentro de nuestra aplicación. En este artículo, crearemos una aplicación para extraer los datos del archivo PDF y mostrarlos en nuestra aplicación usando Kotlin.

Nota : si está buscando implementar Cómo extraer datos de archivos PDF en Android usando Java. Cómo extraer datos de PDF en Android usando Java

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

Cómo crear/iniciar un nuevo proyecto en Android Studio

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.itextpdf:itextg:5.5.10'

Ahora sincroniza tu proyecto para instalarlo. 

Paso 3: agregar un archivo PDF a su aplicación

Como estamos extrayendo datos de archivos PDF, agregaremos archivos PDF a nuestra aplicación. Para agregar archivos PDF a su aplicación, primero debemos crear la carpeta sin formato. Consulte Carpeta sin procesar de recursos en Android Studio para crear una carpeta sin procesar en Android. Después de crear un nuevo directorio sin procesar, copie y pegue su archivo PDF dentro de esa carpeta «sin procesar». Después de agregar ese archivo PDF a su aplicación, ahora avanzaremos hacia la implementación en la parte XML.    

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:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
  
    <!--on below line we are creating 
        a text for heading of our app-->
    <TextView
        android:id="@+id/idTVExtracter"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:gravity="center"
        android:padding="4dp"
        android:text="Text Extracter from PDF"
        android:textAlignment="center"
        android:textColor="@color/purple_200"
        android:textSize="18sp"
        android:textStyle="bold" />
  
    <!--on below line we are creating a scroll view for our text-->
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/idBtnExtract"
        android:layout_below="@id/idTVExtracter">
  
        <!--text view for displaying our extracted text-->
        <TextView
            android:id="@+id/idTVPDF"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
  
    </ScrollView>
  
    <!--button for starting extraction process-->
    <Button
        android:id="@+id/idBtnExtract"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginStart="20dp"
        android:layout_marginEnd="20dp"
        android:layout_marginBottom="20dp"
        android:text="Extract Text from PDF"
        android:textAllCaps="false" />
  
</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.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.itextpdf.text.pdf.PdfReader
import com.itextpdf.text.pdf.parser.PdfTextExtractor
  
class MainActivity : AppCompatActivity() {
  
    // on below line we are creating 
    // variable for our button and text view.
    lateinit var extractedTV: TextView
    lateinit var extractBtn: Button
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
          
        // on below line we are initializing our 
        // text view and button with its id.
        extractedTV = findViewById(R.id.idTVPDF)
        extractBtn = findViewById(R.id.idBtnExtract)
  
        // on below line we are adding on 
        // click listener for our button.
        extractBtn.setOnClickListener {
            // on below line we are calling extract data method
            // to extract data from our pdf file and 
            // display it in text view.
            extractData()
        }
    }
  
    // on below line we are creating an 
    // extract data method to extract our data.
    private fun extractData() {
        // on below line we are running a try and catch block 
        // to handle extract data operation.
        try {
            // on below line we are creating a 
            // variable for storing our extracted text
            var extractedText = ""
  
            // on below line we are creating a 
            // variable for our pdf extracter.
            val pdfReader: PdfReader = PdfReader("res/raw/android.pdf")
  
            // on below line we are creating 
            // a variable for pages of our pdf.
            val n = pdfReader.numberOfPages
  
            // on below line we are running a for loop.
            for (i in 0 until n) {
  
                // on below line we are appending 
                // our data to extracted 
                // text from our pdf file using pdf reader.
                extractedText =
                    """
                 $extractedText${
                        PdfTextExtractor.getTextFromPage(pdfReader, i + 1).trim { it <= ' ' }
                    }
                  
                 """.trimIndent()
                // to extract the PDF content from the different pages
            }
  
            // on below line we are setting 
            // extracted text to our text view.
            extractedTV.setText(extractedText)
  
            // on below line we are
            // closing our pdf reader.
            pdfReader.close()
  
        }
        // on below line we are handling our 
        // exception using catch block
        catch (e: Exception) {
            e.printStackTrace()
        }
    }
}

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 *