Come leggere file PDF in Java

Donna che lavora in un ufficio

Credito immagine: Pixland/Pixland/Getty Images

Non è difficile leggere i file PDF in Java utilizzando librerie prontamente disponibili. La lettura di file PDF consente di scrivere programmi Java in grado di elaborare il testo in quei file. Un'opzione per leggere i file PDF è la libreria PDFBox open source gratuita disponibile da Apache. La piattaforma di sviluppo Java Eclipse semplifica questo lavoro e gestisce le librerie che scaricherai. Devi avere familiarità con la programmazione Java per utilizzare queste librerie Java.

Raccogliere le biblioteche necessarie

Passo 1

Scarica Java JDK dal sito Web di Sun. Questo è un file eseguibile che puoi installare sul tuo sistema eseguendolo. Sono disponibili versioni per Windows, Mac e Linux. Fare clic sul pulsante rosso "Download". Salva un file chiamato "jdk-6uxx-windows-xxx.exe" quando richiesto. Salva questo file e quindi fai doppio clic su di esso per avviare il programma di installazione di Java.

Video del giorno

Passo 2

Scarica il sistema di sviluppo Eclipse e decomprimilo in una directory di primo livello. Seleziona "Eclipse IDE per sviluppatori Java". Verrà avviato il download di "eclipse-java-galileo-SR2-win32.zip". Fare doppio clic sul file per decomprimerlo al termine del download. Seleziona la posizione della directory principale "C:" per decomprimere Eclipse.

Passaggio 3

Avvia Eclipse facendo doppio clic su "eclipse.exe" nella directory appena creata decomprimendo il file zip di eclipse. Nel sistema Eclipse, crea un progetto chiamato "PrintPdf". Seleziona "File", quindi "Nuovo", quindi "Progetto Java". Digita il nome del progetto "PrintPdf" nella finestra di dialogo che appare. Assicurati che sia selezionato il pulsante di opzione "Crea cartelle separate per i file di origine e di classe". Fare clic su "Fine".

Passaggio 4

Crea una cartella "lib" nel tuo progetto "PrintPdf". Fare clic con il tasto destro del mouse sul progetto "PrintPdf" e selezionare "Nuovo" e poi "Cartella". Immettere il nome "lib" e fare clic su "Fine".

Passaggio 5

Scarica Apache "PDFBox.jar" dal sito Apache e copialo nella directory lib appena creata. Nella stessa pagina web, scarica il file "fontbox-nn.jar" e il file "jempbox-nn.jar". In ogni caso, quando fai clic su quel file jar, ti porterà a una pagina in cui puoi selezionare uno dei numerosi server che possono fornire questo file. Scegli ciascuno di essi e ogni file jar verrà scaricato. Copia ogni file jar nella directory lib che hai appena creato.

Passaggio 6

Scarica il pacchetto Apache log4j.jar allo stesso modo e copia il file log4j.jar nella directory. La libreria Apache PDFBox utilizza questa libreria di log Apache, quindi questo file deve essere presente.

Passaggio 7

Scarica il pacchetto Apache Commons Discovery come file zip. Fare doppio clic sul file zip, selezionare "commons-discovery-nn.jar" ed estrarlo nella directory lib.

Passaggio 8

In Eclipse, fai clic sulla directory "lib" e premi "F5". Assicurati che tutti i file jar aggiunti siano visualizzati.

Passaggio 9

Fare clic con il pulsante destro del mouse sul progetto PrintPDF e selezionare "Proprietà". Seleziona "Java Build Path" e seleziona la scheda "Librerie". Fai clic su "Aggiungi jars" e vai alla directory lib che hai appena creato e aggiungi "commons-logging-nn.jar" "fontbox-nn.jar", "jempbox-nn.jar", "log4j-nn.jar ," e "pdfbox-nn.jar." Fare clic su "OK".

Scrivi il codice per leggere i PDF

Passo 1

Fai clic con il pulsante destro del mouse sulla cartella "src" del tuo progetto "PrintPDF" e seleziona "Nuovo" e il "Pacchetto". Crea un pacchetto utilizzando un nome significativo. Ad esempio, denominare il pacchetto "com.pdf.util". Fare clic su "Fine".

Passo 2

Fare clic con il pulsante destro del mouse sul nome del pacchetto appena creato e selezionare "Nuovo" e poi "Classe". Crea una classe chiamata "PDFTextParser." Assicurati di fare clic sulla casella di controllo contrassegnata "public static void main..." in modo che il sistema crei un metodo "principale".

Passaggio 3

Modifica il metodo "main" nella classe "PDFTextParser" per contenere il seguente codice:

public static void main (String args[]){ PDFTextParser pdf = new PDFTextParser("data/javaPDF.pdf") GO //stampa i risultati System.out.println (pdf.getParsedText()) GO }

Notare che il file che si desidera stampare è enunciato nel costruttore in PDFTextParser ("data/JavaPDF.pdf"). Potrebbe facilmente essere un argomento della riga di comando:

PDFTextParser pdf = nuovo PDFTextParser (argv[0])

ANDARE

o selezionato da un'interfaccia GUI.

Crea un'istanza della classe PDFTextParser, quindi chiama il suo metodo "getParsedText".

Passaggio 4

Inserisci il seguente codice appena sotto la riga di prima classe "classe pubblica PDFTextParser" che è stata creata per te.

parser PDFParser privato = null GO

// Estrai il testo dal documento PDF. public PDFTextParser (String fileName) { File file = nuovo File (fileName)

GO if (!file.isFile()) { System.err.println("File " + fileName + " non esiste.") GO } //Imposta l'istanza del parser PDF try { parser = new PDFParser (new FileInputStream (file)) GO } catch (IOException e) { System.err.println("Impossibile aprire PDF analizzatore. " + e.getMessage()) GO } } // public String getParsedText() { PDDocument pdDoc = null GO COSDocument cosDoc = null;
String parsedText = null; ANDARE

prova { PDFTextStripper pdfStripper = nuovo PDFTextStripper()

VAI parser.parse() VAI cosDoc = parser.getDocument() VAI pdDoc = nuovo PDDocument (cosDoc) VAI

// ottiene l'elenco di tutte le pagine List< PDPage> list = pdDoc.getDocumentCatalog().getAllPages()

ANDARE

//nota che puoi stampare tutte le pagine che vuoi //scegliendo diversi valori della pagina iniziale e finale pdfStripper.setStartPage (1); //1 int length = list.size(); //numero totale di pagine pdfStripper.setEndPage (lunghezza); //ultima pagina //ottieni il testo per le pagine selezionate parsedText = pdfStripper.getText (pdDoc)

GO } catch (IOException e) { System.err .println("Si è verificata un'eccezione durante l'analisi del documento PDF." + e.getMessage()) GO } infine { try { if (cosDoc != null) cosDoc.close() GO if (pdDoc != null) pdDoc.close() GO } catch (IOException e) { e.printStackTrace() GO } }
return parsedText GO }

Passaggio 5

Esegui il programma. Fare clic con il pulsante destro del mouse sulla classe PDFTextParser e fare clic su "Esegui come" e quindi su "Programma Java". Il programma dovrebbe avviarsi e stampare il contenuto del testo del file PDF che hai inserito nel codice.

Sopprimi il messaggio di errore di avvio di Log4j

Passo 1

Creare un file di configurazione per eliminare il messaggio di errore log4j del sistema di registrazione Java creato quando non riesce a trovare un file di configurazione all'avvio. Fare clic con il tasto destro del mouse sulla cartella "src" del progetto PrintPDF e selezionare "Nuovo" e poi "File". Denominare il file "log4j.properties" Eclipse visualizzerà una schermata vuota per questo nuovo file.

Passo 2

Incolla le seguenti righe nella schermata vuota che rappresenta il file "log4j.properties".

Passaggio 3

Salva il file "log4j.properties". La presenza di questo file nella directory "src" di livello superiore sopprimerà il messaggio di avvio di log4j e qualsiasi messaggio di registrazione banale. Il sistema log4j stamperà solo gli errori effettivi.

Consiglio

Esistono anche numerosi pacchetti commerciali che è possibile utilizzare per estrarre il testo dai file PDF, ma non sono economici.