Leer un archivo PDF en Java

Leer un archivo PDF en Java

En este tutorial, aprenderemos a leer un archivo PDF en Java utilizando diferentes bibliotecas.

Índice
  1. Conocimiento
  2. Apache PDFBoxComentario
  3. iTexto 5
  4. iTexto 7

Conocimiento

El formato de documento portátil (PDF) es un formato de archivo popular y ampliamente utilizado para documentos. El formato PDF es la primera opción para la distribución electrónica (por ejemplo, archivos adjuntos a correos electrónicos) y materiales impresos.

A diferencia de los archivos de texto, la lectura de datos de archivos PDF es muy compleja y Java no brinda soporte nativo para leer archivos PDF. La buena noticia es que hay muchas bibliotecas Java de código abierto disponibles que podemos usar. En este artículo, veremos algunas de las bibliotecas populares para leer archivos PDF en Java:

Apache PDFBoxComentario

La biblioteca Apache PDFBox le permite crear nuevos documentos PDF, extraer contenido de PDF, completar formularios PDF, guardar PDF como imagen, dividir y fusionar, firmar digitalmente archivos PDF, imprimir archivos PDF, etc.

Apache PDFBox es bastante fácil de usar si está realizando una extracción de texto básica, veamos el ejemplo:

  1. Comencemos importando la dependencia de pdfbox en el pom.xml
    <dependency>
        <groupId>org.apache.pdfbox</groupId>
        <artifactId>pdfbox</artifactId>
        <version>2.0.27</version>
    </dependency>
    

    O construir.gradle

    implementation group: 'org.apache.pdfbox', name: 'pdfbox', version: '2.0.27'
    
  2. Veamos el ejemplo simple del uso de Apache PDFBox para leer texto de un archivo PDF:
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.text.PDFTextStripper;
    import java.io.File;
    import java.io.IOException;
    
    public class PdfDocumentReader {
    
      public void readPdfFile(File file) throws IOException {
        try(PDDocument document = PDDocument.load(file)) {
            if (!document.isEncrypted()) {
                PDFTextStripper textStripper = new PDFTextStripper();
                String text = textStripper.getText(document);
                System.out.println("Text:" + text);
            }
        }
      }
    }
    

En este ejemplo, inicializamos la instancia de PDDocument en el bloque de prueba para cerrar automáticamente los recursos después de leer el archivo PDF.

Consulte los ejemplos de apache pdfbox para obtener más ejemplos.

iTexto 5

iText tiene bibliotecas de código abierto para leer y escribir archivos PDF complejos. La biblioteca iText proporciona soporte de bajo nivel para leer un archivo PDF, pero es un poco compleja de entender y usar.

Tenga en cuenta que iText 5 es EOL y ha entrado en modo de mantenimiento, lo que significa que solo recibe versiones y correcciones relacionadas con la seguridad para permitir que los usuarios que han desarrollado sus soluciones usando iText 5 continúen usándolo de manera segura. No se añadirá ninguna funcionalidad nueva. Para nuevas implementaciones, se recomienda iText 7.

Exploremos cómo leer un PDF usando iText 5: -

  1. Comencemos importando la dependencia itextpdf en el pom.xml
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.13.3</version>
    </dependency>
    

    O construir.gradle

    implementation group: 'com.itextpdf', name: 'itextpdf', version: '5.5.13.3'
    
  2. Veamos el ejemplo simple de usar iText para leer texto de un archivo PDF:-
    import com.itextpdf.text.pdf.PdfReader;
    import com.itextpdf.text.pdf.parser.PdfTextExtractor;
    import java.io.IOException;
    
    public class PdfDocumentReader {
    
      public void readPdfFile(String fileName) throws IOException {
        PdfReader pdfReader = new PdfReader(fileName);
        int pages = pdfReader.getNumberOfPages();
        StringBuilder text = new StringBuilder();
        for (int i = 1; i <= pages; i++) {
            text.append(PdfTextExtractor.getTextFromPage(pdfReader, i));
        }
        System.out.println("Text:" + text);
      }
    }
    

En este ejemplo, inicializamos la instancia de PdfReader para cargar un archivo PDF, luego recorra las páginas para extraer el contenido de cada página.

iTexto 7

iText 7 es la biblioteca de iText recomendada para leer un archivo PDF. Exploremos esto: -

  1. Comencemos importando la dependencia itext7-core en el pom.xml
    <dependency>
      <groupId>com.itextpdf</groupId>
      <artifactId>itext7-core</artifactId>
      <version>7.2.5</version>
      <type>pom</type>
    </dependency>
    

    O construir.gradle

    implementation group: 'com.itextpdf', name: 'itext7-core', version: '7.2.5', ext: 'pom'
    
  2. y escriba un código usando iText para leer texto de un archivo PDF: -
    import com.itextpdf.kernel.pdf.PdfDocument;
    import com.itextpdf.kernel.pdf.PdfPage;
    import com.itextpdf.kernel.pdf.PdfReader;
    import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
    import java.io.File;
    import java.io.IOException;
    
    public class PdfDocumentReader {
    
      public void readPdfFileFromPdfBox7(File file) throws IOException {
        StringBuilder text = new StringBuilder();
        try(PdfDocument document = new PdfDocument(new PdfReader(file))){
            for (int i = 1; i <= document.getNumberOfPages(); ++i) {
                PdfPage page = document.getPage(i);
                text.append(PdfTextExtractor.getTextFromPage(page));
            }
        }
        System.out.println("Text:" + text);
      }
    }
    

En este ejemplo, inicializamos la instancia de PdfDocument en el bloque de prueba para cerrar automáticamente los recursos después de leer el archivo PDF.

Si quieres conocer otros artículos parecidos a Leer un archivo PDF en Java puedes visitar la categoría Tutoriales.

Deja un comentario

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

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas