Hvordan lese PDF-fil i Java

Kvinne som jobber på et kontor

Bildekreditt: Pixland/Pixland/Getty Images

Det er ikke vanskelig å lese PDF-filer i Java ved hjelp av biblioteker som er lett tilgjengelige. Ved å lese PDF-filer kan du skrive Java-programmer som kan behandle teksten i disse filene. Et alternativ for å lese PDF-filer er det gratis, åpen kildekode PDFBox-biblioteket tilgjengelig fra Apache. Eclipse Java-utviklingsplattformen gjør denne jobben enklere og administrerer bibliotekene du skal laste ned. Du må være kjent med Java-programmering for å kunne bruke disse Java-bibliotekene.

Samle nødvendige biblioteker

Trinn 1

Last ned Java JDK fra Suns nettsted. Dette er en kjørbar fil som du kan installere på systemet ditt ved å kjøre den. Versjoner er tilgjengelige for Windows, Mac og Linux. Klikk på den røde "Last ned"-knappen. Lagre en fil kalt "jdk-6uxx-windows-xxx.exe" når du blir bedt om det. Lagre denne filen og dobbeltklikk på den for å starte Java-installasjonsprogrammet.

Dagens video

Steg 2

Last ned Eclipse-utviklingssystemet og pakk det ut i en katalog på toppnivå. Velg "Eclipse IDE for Java Developers." Dette vil starte nedlastingen av "eclipse-java-galileo-SR2-win32.zip." Dobbeltklikk på filen for å pakke den ut etter at nedlastingen er fullført. Velg "C:" rotkatalogplasseringen for å pakke ut Eclipse.

Trinn 3

Start Eclipse ved å dobbeltklikke på "eclipse.exe" i katalogen du nettopp opprettet ved å pakke ut eclipse zip-filen. I Eclipse-systemet oppretter du et prosjekt som heter "PrintPdf." Velg "Fil" og deretter "Ny" og deretter "Java-prosjekt". Skriv inn prosjektnavnet "PrintPdf" i dialogboksen som vises. Pass på at alternativknappen er valgt som sier "Opprett separate mapper for kilde- og klassefiler." Klikk "Fullfør".

Trinn 4

Opprett en "lib"-mappe i "PrintPdf"-prosjektet ditt. Høyreklikk på "PrintPdf"-prosjektet og velg "Ny" og deretter "Mappe". Skriv inn navnet "lib" og klikk på "Fullfør".

Trinn 5

Last ned Apache "PDFBox.jar" fra Apache-siden og kopier den til lib-katalogen du nettopp opprettet. Last ned "fontbox-nn.jar"-filen og "jempbox-nn.jar"-filen på samme nettside. I hvert tilfelle, når du klikker på den jar-filen, vil den ta deg til en side der du kan velge en av flere servere som kan levere denne filen. Velg hver av dem og hver jar-fil vil lastes ned. Kopier hver jar-fil til lib-katalogen du nettopp opprettet.

Trinn 6

Last ned Apache log4j.jar-pakken på samme måte og kopier log4j.jar-filen inn i katalogen. Apache PDFBox-biblioteket bruker dette Apache-loggingsbiblioteket, så denne filen må være til stede.

Trinn 7

Last ned Apache Commons Discovery-pakken som en zip-fil. Dobbeltklikk på zip-filen, velg "commons-discovery-nn.jar" og pakk den ut i lib-katalogen.

Trinn 8

I Eclipse, klikk på "lib"-katalogen og trykk "F5". Sørg for at alle jar-filene du har lagt til vises.

Trinn 9

Høyreklikk på PrintPDF-prosjektet og velg "Egenskaper". Velg "Java Build Path" og velg "Libraries"-fanen. Klikk på "Legg til krukker" og gå til lib-katalogen du nettopp har opprettet, og legg til "commons-logging-nn.jar", "fontbox-nn.jar", "jempbox-nn.jar," "log4j-nn.jar ," og "pdfbox-nn.jar." Klikk på "OK".

Skriv koden for å lese PDF-er

Trinn 1

Høyreklikk på "src"-mappen til "PrintPDF"-prosjektet og velg "Ny" og "Pakke". Lag en pakke med et hvilket som helst meningsfullt navn. Gi for eksempel navnet "com.pdf.util." Klikk "Fullfør".

Steg 2

Høyreklikk på pakkenavnet du nettopp opprettet og velg "Ny" og deretter "Klasse". Lag en klasse som heter "PDFTextParser." Pass på å klikke på avmerkingsboksen merket "public static void main..." slik at systemet vil opprette en "hovedmetoden".

Trinn 3

Rediger "hoved"-metoden i klassen "PDFTextParser" for å inneholde følgende kode:

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

Merk at filen du ønsker å skrive ut er stavet i konstruktøren til PDFTextParser ("data/JavaPDF.pdf"). Det kan like gjerne være et kommandolinjeargument:

PDFTextParser pdf = ny PDFTextParser (argv[0])

eller valgt fra et GUI-grensesnitt.

Den oppretter en forekomst av PDFTextParser-klassen, og kaller deretter "getParsedText"-metoden.

Trinn 4

Sett inn følgende kode rett under toppklassen "public class PDFTextParser" som ble opprettet for deg.

privat PDFParser-parser = null GO

// Trekk ut tekst fra PDF-dokument. public PDFTextParser (String fileName) { File file = new File (fileName)

GO if (!file.isFile()) { System.err.println("Fil " + filnavn + " eksisterer ikke.") GO } //Sett opp forekomst av PDF-parser prøv { parser = new PDFParser (ny FileInputStream (fil)) GO } catch (IOException e) { System.err.println("Kan ikke åpne PDF Parser. " + e.getMessage()) GO } } // public String getParsedText() { PDDocument pdDoc = null GO COSDocument cosDoc = null;
String parsedText = null; GÅ

prøv { PDFTextStripper pdfStripper = new PDFTextStripper()

GO parser.parse() GO cosDoc = parser.getDocument() GO pdDoc = nytt PDDocument (cosDoc) GO

//få liste over alle sider List< PDPage> list = pdDoc.getDocumentCatalog().getAllPages()

//merk at du kan skrive ut hvilke sider du vil //ved å velge forskjellige verdier på start- og sluttsiden pdfStripper.setStartPage (1); //1-basert int lengde = liste.størrelse(); //totalt antall sider pdfStripper.setEndPage (lengde); //siste side //hent teksten for sidene som er valgt parsedText = pdfStripper.getText (pdDoc)

GO } catch (IOException e) { System.err .println("Et unntak skjedde ved parsing av PDF-dokumentet." + e.getMessage()) GO } til slutt { prøv { if (cosDoc != null) cosDoc.close() GO if (pdDoc != null) pdDoc.close() GO } catch (IOException e) { e.printStackTrace() GO } }
returner parsedText GO }

Trinn 5

Kjør programmet. Høyreklikk på PDFTextParser-klassen og klikk på "Kjør som" og deretter på "Java-program". Programmet skal kjøre og skrive ut tekstinnholdet i PDF-filen du skrev inn i koden.

Undertrykk Log4j oppstartsfeilmelding

Trinn 1

Opprett en konfigurasjonsfil for å undertrykke Java logging system log4j feilmeldingen opprettet når den ikke finner en konfigurasjonsfil når den starter opp. Høyreklikk på "src"-mappen til PrintPDF-prosjektet og velg "Ny" og deretter "Fil". Gi filen navnet "log4j.properties" Eclipse vil vise en tom skjerm for denne nye filen.

Steg 2

Lim inn følgende linjer i den tomme skjermen som representerer filen "log4j.properties".

Trinn 3

Lagre "log4j.properties"-filen. Tilstedeværelsen av denne filen i "src"-katalogen på øverste nivå vil undertrykke log4j-oppstartsmeldingen og alle trivielle loggmeldinger. log4j-systemet vil kun skrive ut faktiske feil.

Tips

Det finnes også en rekke kommersielle pakker som du kan bruke til å trekke ut tekst fra PDF-filer, men de er ikke billige.