Hoe een PDF-bestand in Java te lezen

Vrouw die op kantoor werkt

Afbeelding tegoed: Pixland/Pixland/Getty Images

Het is niet moeilijk om PDF-bestanden in Java te lezen met behulp van bibliotheken die direct beschikbaar zijn. Door PDF-bestanden te lezen, kunt u Java-programma's schrijven die de tekst in die bestanden kunnen verwerken. Een optie voor het lezen van PDF-bestanden is de gratis, open-source PDFBox-bibliotheek die beschikbaar is bij Apache. Het Eclipse Java-ontwikkelplatform maakt deze taak eenvoudiger en beheert de bibliotheken die u gaat downloaden. U moet bekend zijn met Java-programmering om gebruik te kunnen maken van deze Java-bibliotheken.

Verzamel benodigde bibliotheken

Stap 1

Download de Java JDK van de website van Sun. Dit is een uitvoerbaar bestand dat u op uw systeem kunt installeren door het uit te voeren. Er zijn versies beschikbaar voor Windows, Mac en Linux. Klik op de rode knop "Download". Sla een bestand op met de naam "jdk-6uxx-windows-xxx.exe" wanneer daarom wordt gevraagd. Sla dit bestand op en dubbelklik erop om het Java-installatieprogramma te starten.

Video van de dag

Stap 2

Download het Eclipse-ontwikkelsysteem en pak het uit in een directory op het hoogste niveau. Selecteer 'Eclipse IDE voor Java-ontwikkelaars'. Hierdoor wordt de download van "eclipse-java-galileo-SR2-win32.zip" gestart. Dubbelklik op het bestand om het uit te pakken nadat het downloaden is voltooid. Selecteer de hoofdmaplocatie "C:" om Eclipse uit te pakken.

Stap 3

Start Eclipse door te dubbelklikken op "eclipse.exe" in de map die u zojuist hebt gemaakt door het eclipse-zipbestand uit te pakken. Maak in het Eclipse-systeem een ​​project met de naam "PrintPdf". Selecteer "Bestand" en vervolgens "Nieuw" en vervolgens "Java-project". Typ de projectnaam "PrintPdf" in het dialoogvenster dat verschijnt. Zorg ervoor dat het keuzerondje is geselecteerd met de tekst 'Maak aparte mappen voor bron- en klasbestanden'. Klik op "Voltooien".

Stap 4

Maak een map "lib" in uw "PrintPdf"-project. Klik met de rechtermuisknop op het project "PrintPdf" en selecteer "Nieuw" en vervolgens "Map". Voer de naam "lib" in en klik op "Voltooien".

Stap 5

Download Apache "PDFBox.jar" van de Apache-site en kopieer het naar de lib-map die u zojuist hebt gemaakt. Download op dezelfde webpagina het bestand "fontbox-nn.jar" en het bestand "jempbox-nn.jar". In elk geval, wanneer u op dat jar-bestand klikt, gaat u naar een pagina waar u een van de verschillende servers kunt selecteren die dit bestand kunnen leveren. Kies elk van hen en elk jar-bestand wordt gedownload. Kopieer elk jar-bestand naar de lib-directory die u zojuist hebt gemaakt.

Stap 6

Download het Apache log4j.jar-pakket op dezelfde manier en kopieer het log4j.jar-bestand naar de map. De Apache PDFBox-bibliotheek gebruikt deze Apache-logboekbibliotheek, dus dit bestand moet aanwezig zijn.

Stap 7

Download het Apache Commons Discovery-pakket als zipbestand. Dubbelklik op het zipbestand, selecteer "commons-discovery-nn.jar" en pak het uit in de lib-map.

Stap 8

Klik in Eclipse op de map "lib" en druk op "F5". Zorg ervoor dat alle jar-bestanden die u hebt toegevoegd, worden weergegeven.

Stap 9

Klik met de rechtermuisknop op het PrintPDF-project en selecteer 'Eigenschappen'. Selecteer "Java Build Path" en selecteer het tabblad "Bibliotheken". Klik op "Add jars" en ga naar de lib-directory die u zojuist hebt gemaakt en voeg "commons-logging-nn.jar" "fontbox-nn.jar", "jempbox-nn.jar", "log4j-nn.jar" toe ," en "pdfbox-nn.jar." Klik op "OK".

Schrijf de code om PDF's te lezen

Stap 1

Klik met de rechtermuisknop op de map "src" van uw "PrintPDF"-project en selecteer "Nieuw" en het "Pakket". Maak een pakket met een betekenisvolle naam. Noem het pakket bijvoorbeeld 'com.pdf.util'. Klik op "Voltooien".

Stap 2

Klik met de rechtermuisknop op de pakketnaam die u zojuist hebt gemaakt en selecteer "Nieuw" en vervolgens "Klasse". Maak een klas met de naam "PDFTextParser." Zorg ervoor dat u het selectievakje "public static void main..." aanklikt, zodat het systeem een "hoofd" methode.

Stap 3

Bewerk de "main"-methode in de "PDFTextParser"-klasse zodat deze de volgende code bevat:

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

Merk op dat het bestand dat u wilt afdrukken, in de constructor naar PDFTextParser ("data/JavaPDF.pdf") is gespeld. Het kan net zo goed een opdrachtregelargument zijn:

PDFTextParser pdf = nieuwe PDFTextParser (argv[0])

GAAN

of geselecteerd uit een GUI-interface.

Het maakt een instantie van de klasse PDFTextParser en roept vervolgens de methode "getParsedText" aan.

Stap 4

Voeg de volgende code in net onder de bovenste regel "public class PDFTextParser" die voor u is gemaakt.

private PDFParser-parser = null GO

// Extraheer tekst uit PDF-document. openbare PDFTextParser (String bestandsnaam) { Bestandsbestand = nieuw bestand (bestandsnaam)

GO if (!file.isFile()) { System.err.println("File " + fileName + " bestaat niet.") GO } //Set up instance of PDF parser try { parser = nieuwe PDFParser (nieuwe FileInputStream (bestand)) GO } catch (IOException e) { System.err.println("Kan PDF niet openen Parser. " + e.getMessage()) GO } } // public String getParsedText() { PDDocument pdDoc = null GO COSDocument cosDoc = null;
String parsedText = null; GAAN

probeer { PDFTextStripper pdfStripper = nieuwe PDFTextStripper()

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

//haal een lijst van alle pagina's op Lijst< PDPage> list = pdDoc.getDocumentCatalog().getAllPages()

GAAN

//merk op dat u elke gewenste pagina kunt afdrukken //door verschillende waarden van de begin- en eindpagina te kiezen pdfStripper.setStartPage (1); //1-gebaseerde int lengte = list.size(); //totaal aantal pagina's pdfStripper.setEndPage (lengte); //laatste pagina //haal de tekst voor de geselecteerde pagina's parsedText = pdfStripper.getText (pdDoc)

GO } catch (IOException e) { System.err .println("Er is een uitzondering opgetreden bij het ontleden van het PDF-document." + e.getMessage()) GO } eindelijk {probeer {if (cosDoc!= null) cosDoc.close() GO if (pdDoc!= null) pdDoc.close() GO} catch (IOException e) {e.printStackTrace() GO} }
return ontleedText GO }

Stap 5

Voer het programma uit. Klik met de rechtermuisknop op de klasse PDFTextParser en klik op "Uitvoeren als" en vervolgens op "Java-programma". Het programma zou de tekstinhoud van het PDF-bestand dat u in uw code hebt ingevoerd, moeten uitvoeren en afdrukken.

Onderdruk Log4j opstartfoutbericht

Stap 1

Maak een configuratiebestand om het Java-logboekregistratiesysteem log4j-foutbericht te onderdrukken dat wordt gemaakt wanneer het geen configuratiebestand kan vinden wanneer het opstart. Klik met de rechtermuisknop op de map "src" van het PrintPDF-project en selecteer "Nieuw" en vervolgens "Bestand". Noem het bestand "log4j.properties" Eclipse geeft een leeg scherm weer voor dit nieuwe bestand.

Stap 2

Plak de volgende regels in het lege scherm dat het bestand "log4j.properties" voorstelt.

Stap 3

Sla het bestand "log4j.properties" op. De aanwezigheid van dit bestand in de "src"-directory op het hoogste niveau zal het log4j-opstartbericht en alle triviale logberichten onderdrukken. Het log4j-systeem drukt alleen daadwerkelijke fouten af.

Tip

Er zijn ook een aantal commerciële pakketten die u kunt gebruiken om tekst uit PDF-bestanden te extraheren, maar die zijn niet goedkoop.