diff --git a/pom.xml b/pom.xml index 0a75039..77cdf4e 100644 --- a/pom.xml +++ b/pom.xml @@ -43,7 +43,7 @@ 1.18.38 - 2.0.32 + 3.0.8 20250107 2.22.0 9.1.22 diff --git a/src/main/java/com/rsh/jtoolkit/pdf/ExtractAttachments.java b/src/main/java/com/rsh/jtoolkit/pdf/ExtractAttachments.java index a3db715..657984b 100644 --- a/src/main/java/com/rsh/jtoolkit/pdf/ExtractAttachments.java +++ b/src/main/java/com/rsh/jtoolkit/pdf/ExtractAttachments.java @@ -7,6 +7,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary; import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode; @@ -27,7 +28,7 @@ private ExtractAttachments() {} * @throws IOException if the PDF cannot be read or an attachment cannot be written */ public static List extractAttachments(String src, String dir) throws IOException { - try (PDDocument document = PDDocument.load(new File(src))) { + try (PDDocument document = Loader.loadPDF(new File(src))) { PDDocumentNameDictionary names = new PDDocumentNameDictionary(document.getDocumentCatalog()); PDEmbeddedFilesNameTreeNode embeddedFiles = names.getEmbeddedFiles(); if (embeddedFiles == null) { diff --git a/src/main/java/com/rsh/jtoolkit/pdf/PdfUtil.java b/src/main/java/com/rsh/jtoolkit/pdf/PdfUtil.java index 96ee397..1c84a40 100644 --- a/src/main/java/com/rsh/jtoolkit/pdf/PdfUtil.java +++ b/src/main/java/com/rsh/jtoolkit/pdf/PdfUtil.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; +import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.common.PDMetadata; @@ -17,14 +18,14 @@ private PdfUtil() {} * metadata. */ public static boolean isPdfA(String filePath) throws IOException { - try (PDDocument document = PDDocument.load(new File(filePath))) { + try (PDDocument document = Loader.loadPDF(new File(filePath))) { return isPdfA(document); } } /** Returns {@code true} if the PDF read from {@code inputStream} declares PDF/A conformance. */ public static boolean isPdfA(InputStream inputStream) throws IOException { - try (PDDocument document = PDDocument.load(inputStream)) { + try (PDDocument document = Loader.loadPDF(inputStream.readAllBytes())) { return isPdfA(document); } } diff --git a/src/main/java/com/rsh/jtoolkit/pdf/sign/PDFSigner.java b/src/main/java/com/rsh/jtoolkit/pdf/sign/PDFSigner.java index 1773a13..1a2ebcd 100644 --- a/src/main/java/com/rsh/jtoolkit/pdf/sign/PDFSigner.java +++ b/src/main/java/com/rsh/jtoolkit/pdf/sign/PDFSigner.java @@ -17,6 +17,7 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Enumeration; +import org.apache.pdfbox.Loader; import org.apache.pdfbox.io.IOUtils; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; @@ -26,6 +27,7 @@ import org.apache.pdfbox.pdmodel.common.PDStream; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDType1Font; +import org.apache.pdfbox.pdmodel.font.Standard14Fonts; import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary; @@ -50,7 +52,7 @@ public class PDFSigner implements SignatureInterface { - private static final PDFont FONT = PDType1Font.HELVETICA_BOLD; + private static final PDFont FONT = new PDType1Font(Standard14Fonts.FontName.HELVETICA_BOLD); private static final float FONT_SIZE = 10; private static final float LEADING = FONT_SIZE * 1.5f; private PrivateKey privateKey; @@ -112,7 +114,7 @@ public byte[] sign(InputStream content) throws IOException { public void signPDF(InputStream inputFile, ByteArrayOutputStream fos, PDRectangle rect) throws IOException { - try (PDDocument doc = PDDocument.load(inputFile)) { + try (PDDocument doc = Loader.loadPDF(inputFile.readAllBytes())) { PDSignature signature = new PDSignature(); signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED); diff --git a/src/test/java/com/rsh/jtoolkit/pdf/sign/PDFSignerTest.java b/src/test/java/com/rsh/jtoolkit/pdf/sign/PDFSignerTest.java index 28a6401..18cf6c7 100644 --- a/src/test/java/com/rsh/jtoolkit/pdf/sign/PDFSignerTest.java +++ b/src/test/java/com/rsh/jtoolkit/pdf/sign/PDFSignerTest.java @@ -16,6 +16,7 @@ import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.Date; +import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.common.PDRectangle; @@ -50,7 +51,7 @@ void signsPdfAndAddsSignatureDictionary() throws Exception { byte[] signed = out.toByteArray(); assertTrue(signed.length > source.length, "signed PDF should be larger than the source"); - try (PDDocument doc = PDDocument.load(signed)) { + try (PDDocument doc = Loader.loadPDF(signed)) { assertFalse(doc.getSignatureDictionaries().isEmpty(), "expected a signature dictionary"); } }