diff --git a/pdf-2/pom.xml b/pdf-2/pom.xml index 6a15dc7f29..1c752a9e9c 100644 --- a/pdf-2/pom.xml +++ b/pdf-2/pom.xml @@ -25,6 +25,16 @@ cleanup ${itextpdf.cleanup.version} + + com.itextpdf + itextpdf + 5.5.13.3 + + + org.apache.pdfbox + pdfbox + 3.0.0-RC1 + diff --git a/pdf-2/src/main/java/com/baeldung/pdfinfo/PdfInfoIText.java b/pdf-2/src/main/java/com/baeldung/pdfinfo/PdfInfoIText.java new file mode 100644 index 0000000000..30a7c76086 --- /dev/null +++ b/pdf-2/src/main/java/com/baeldung/pdfinfo/PdfInfoIText.java @@ -0,0 +1,31 @@ +package com.baeldung.pdfinfo; + + +import com.itextpdf.text.pdf.PdfReader; + +import java.io.IOException; +import java.util.Map; + +public class PdfInfoIText { + + public static int getNumberOfPages(final String pdfFile) throws IOException { + PdfReader reader = new PdfReader(pdfFile); + int pages = reader.getNumberOfPages(); + reader.close(); + return pages; + } + + public static boolean isPasswordRequired(final String pdfFile) throws IOException { + PdfReader reader = new PdfReader(pdfFile); + boolean isEncrypted = reader.isEncrypted(); + reader.close(); + return isEncrypted; + } + + public static Map getInfo(final String pdfFile) throws IOException { + PdfReader reader = new PdfReader(pdfFile); + Map info = reader.getInfo(); + reader.close(); + return info; + } +} diff --git a/pdf-2/src/main/java/com/baeldung/pdfinfo/PdfInfoPdfBox.java b/pdf-2/src/main/java/com/baeldung/pdfinfo/PdfInfoPdfBox.java new file mode 100644 index 0000000000..61d03bab6d --- /dev/null +++ b/pdf-2/src/main/java/com/baeldung/pdfinfo/PdfInfoPdfBox.java @@ -0,0 +1,36 @@ +package com.baeldung.pdfinfo; + + +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDDocumentInformation; + +import java.io.File; +import java.io.IOException; + +public class PdfInfoPdfBox { + + public static int getNumberOfPages(final String pdfFile) throws IOException { + File file = new File(pdfFile); + PDDocument document = Loader.loadPDF(file); + int pages = document.getNumberOfPages(); + document.close(); + return pages; + } + + public static boolean isPasswordRequired(final String pdfFile) throws IOException { + File file = new File(pdfFile); + PDDocument document = Loader.loadPDF(file); + boolean isEncrypted = document.isEncrypted(); + document.close(); + return isEncrypted; + } + + public static PDDocumentInformation getInfo(final String pdfFile) throws IOException { + File file = new File(pdfFile); + PDDocument document = Loader.loadPDF(file); + PDDocumentInformation info = document.getDocumentInformation(); + document.close(); + return info; + } +} diff --git a/pdf-2/src/test/java/com/baeldung/pdfinfo/PdfInfoITextUnitTest.java b/pdf-2/src/test/java/com/baeldung/pdfinfo/PdfInfoITextUnitTest.java new file mode 100644 index 0000000000..422858d659 --- /dev/null +++ b/pdf-2/src/test/java/com/baeldung/pdfinfo/PdfInfoITextUnitTest.java @@ -0,0 +1,29 @@ +package com.baeldung.pdfinfo; + +import org.junit.Assert; +import org.junit.Test; + +import java.io.IOException; +import java.util.Map; + +public class PdfInfoITextUnitTest { + + private static final String PDF_FILE = "src/test/resources/input.pdf"; + + @Test + public void givenPdf_whenGetNumberOfPages_thenOK() throws IOException { + Assert.assertEquals(4, PdfInfoIText.getNumberOfPages(PDF_FILE)); + } + + @Test + public void givenPdf_whenIsPasswordRequired_thenOK() throws IOException { + Assert.assertFalse(PdfInfoIText.isPasswordRequired(PDF_FILE)); + } + + @Test + public void givenPdf_whenGetInfo_thenOK() throws IOException { + Map info = PdfInfoIText.getInfo(PDF_FILE); + Assert.assertEquals("LibreOffice 4.2", info.get("Producer")); + Assert.assertEquals("Writer", info.get("Creator")); + } +} diff --git a/pdf-2/src/test/java/com/baeldung/pdfinfo/PdfInfoPdfBoxUnitTest.java b/pdf-2/src/test/java/com/baeldung/pdfinfo/PdfInfoPdfBoxUnitTest.java new file mode 100644 index 0000000000..0fcbc7ee3c --- /dev/null +++ b/pdf-2/src/test/java/com/baeldung/pdfinfo/PdfInfoPdfBoxUnitTest.java @@ -0,0 +1,29 @@ +package com.baeldung.pdfinfo; + +import org.apache.pdfbox.pdmodel.PDDocumentInformation; +import org.junit.Assert; +import org.junit.Test; + +import java.io.IOException; + +public class PdfInfoPdfBoxUnitTest { + + private static final String PDF_FILE = "src/test/resources/input.pdf"; + + @Test + public void givenPdf_whenGetNumberOfPages_thenOK() throws IOException { + Assert.assertEquals(4, PdfInfoPdfBox.getNumberOfPages(PDF_FILE)); + } + + @Test + public void givenPdf_whenIsPasswordRequired_thenOK() throws IOException { + Assert.assertFalse(PdfInfoPdfBox.isPasswordRequired(PDF_FILE)); + } + + @Test + public void givenPdf_whenGetInfo_thenOK() throws IOException { + PDDocumentInformation info = PdfInfoPdfBox.getInfo(PDF_FILE); + Assert.assertEquals("LibreOffice 4.2", info.getProducer()); + Assert.assertEquals("Writer", info.getCreator()); + } +} diff --git a/pdf-2/src/test/resources/input.pdf b/pdf-2/src/test/resources/input.pdf new file mode 100644 index 0000000000..94d9477974 Binary files /dev/null and b/pdf-2/src/test/resources/input.pdf differ