¿Cómo extraer datos de un archivo PDF en Android?

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 cambiado el uso excesivo de 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. 

¿Qué vamos a construir? 

En este artículo, crearemos una aplicación simple en la que extraeremos los datos del PDF con un clic de botón y mostraremos los datos extraídos en nuestra Vista de texto.

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">
  
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
          
        <!--text view for displaying our extracted text-->
        <TextView
            android:id="@+id/idPDFTV"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
  
    </ScrollView>
  
    <!--button for starting extraction process-->
    <Button
        android:id="@+id/idBtnExtract"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="20dp"
        android:text="Extract Text from PDF"
        android:textAllCaps="false" />
      
</RelativeLayout>

Java

import android.os.Bundle;
import android.view.View;
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;
  
public class MainActivity extends AppCompatActivity {
      
    // creating variables for
    // button and text view.
    private Button extractPDFBtn;
    private TextView extractedTV;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // initializing variables for button and text view.
        extractedTV = findViewById(R.id.idPDFTV);
        extractPDFBtn = findViewById(R.id.idBtnExtract);
          
        // adding on click listener for button
        extractPDFBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // calling method to extract
                // data from PDF file.
                extractPDF();
            }
        });
    }
      
    private void extractPDF() {
        try {
            // creating a string for 
            // storing our extracted text.
            String extractedText = "";
              
            // creating a variable for pdf reader 
            // and passing our PDF file in it.
            PdfReader reader = new PdfReader("res/raw/amiya_rout.pdf");
              
            // below line is for getting number
            // of pages of PDF file.
            int n = reader.getNumberOfPages();
              
            // running a for loop to get the data from PDF
            // we are storing that data inside our string.
            for (int i = 0; i < n; i++) {
                extractedText = extractedText + PdfTextExtractor.getTextFromPage(reader, i + 1).trim() + "\n";
                // to extract the PDF content from the different pages
            }
              
            // after extracting all the data we are 
            // setting that string value to our text view.
            extractedTV.setText(extractedText);
              
            // below line is used for closing reader.
            reader.close();
        } catch (Exception e) {
            // for handling error while extracting the text file.
            extractedTV.setText("Error found is : \n" + e);
        }
    }
}

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 *