Skip to content

Commit 3dd5c8b

Browse files
committed
migrate to apache pdfbox
1 parent 87e6fd5 commit 3dd5c8b

File tree

7 files changed

+65
-59
lines changed

7 files changed

+65
-59
lines changed

build.gradle

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,15 @@ mainClassName = 'at.laborg.briss.Briss'
1010
applicationDefaultJvmArgs = ["-Xms128m", "-Xmx1024m"]
1111

1212
repositories {
13-
maven { url "https://clojars.org/repo" } // For jpedal
14-
maven { url "https://maven.geotoolkit.org/" } // For jpedal transitive dependencies
1513
mavenCentral()
1614
}
1715

1816
dependencies {
1917
implementation 'com.itextpdf:itextpdf:5.5.13.4'
20-
implementation 'org.jpedal:jpedal-lgpl:4.74b27'
2118
implementation 'org.bouncycastle:bcprov-jdk18on:1.79'
2219
implementation 'org.bouncycastle:bcpkix-jdk18on:1.79'
20+
implementation 'org.apache.pdfbox:pdfbox:3.0.5'
21+
implementation 'org.apache.pdfbox:pdfbox-tools:3.0.5'
2322

2423

2524
testImplementation(platform('org.junit:junit-bom:5.10.3'))

src/main/java/at/laborg/briss/BrissGUIApp.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.io.File;
44
import java.io.IOException;
5-
import org.jpedal.exception.PdfException;
65

76
public interface BrissGUIApp {
87

@@ -16,5 +15,5 @@ public interface BrissGUIApp {
1615

1716
void resizeSelRects(int w, int h);
1817

19-
void importNewPdfFile(File loadFile) throws IOException, PdfException;
18+
void importNewPdfFile(File loadFile) throws IOException;
2019
}

src/main/java/at/laborg/briss/BrissSwingGUI.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@
8282
import javax.swing.UnsupportedLookAndFeelException;
8383
import javax.swing.event.AncestorEvent;
8484
import javax.swing.event.AncestorListener;
85-
import org.jpedal.exception.PdfException;
8685

8786
/**
8887
* @author gerhard, hybridtupel
@@ -155,7 +154,7 @@ private void tryToLoadFileFromArgument(String[] args) {
155154
if (fileArg.exists() && fileArg.getAbsolutePath().trim().endsWith(".pdf")) { // $NON-NLS-1$
156155
try {
157156
importNewPdfFile(fileArg);
158-
} catch (IOException | PdfException e) {
157+
} catch (IOException e) {
159158
JOptionPane.showMessageDialog(mainWindow, e.getMessage(), Messages.getString("BrissGUI.brissError"),
160159
JOptionPane.ERROR_MESSAGE); // $NON-NLS-1$
161160
}
@@ -351,7 +350,7 @@ private void loadPDF(File file) {
351350
} catch (IOException e) {
352351
JOptionPane.showMessageDialog(mainWindow, e.getMessage(), Messages.getString("BrissGUI."),
353352
JOptionPane.ERROR_MESSAGE); // $NON-NLS-1$
354-
} catch (PdfException e) {
353+
} catch (Exception e) {
355354
JOptionPane.showMessageDialog(mainWindow, e.getMessage(), Messages.getString("BrissGUI.loadingError"),
356355
JOptionPane.ERROR_MESSAGE); // $NON-NLS-1$
357356
}
@@ -409,7 +408,7 @@ private void setWorkingState(String stateMessage) {
409408
mainWindow.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
410409
}
411410

412-
public void importNewPdfFile(File loadFile) throws IOException, PdfException {
411+
public void importNewPdfFile(File loadFile) throws IOException {
413412
String password = null;
414413

415414
if (PDFReaderUtil.isEncrypted(loadFile.getAbsolutePath())) {

src/main/java/at/laborg/briss/BrissTransferHandler.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.net.URI;
2626
import java.net.URISyntaxException;
2727
import javax.swing.TransferHandler;
28-
import org.jpedal.exception.PdfException;
2928

3029
final class BrissTransferHandler extends TransferHandler {
3130

@@ -69,7 +68,7 @@ public boolean importData(final TransferSupport support) {
6968
}
7069
try {
7170
this.brissGUI.importNewPdfFile(loadFile);
72-
} catch (PdfException e) {
71+
} catch (Exception e) {
7372
// TODO Auto-generated catch block
7473
e.printStackTrace();
7574
}

src/main/java/at/laborg/briss/ClusterManager.java

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,17 @@
2020
import at.laborg.briss.model.ClusterCollection;
2121
import at.laborg.briss.model.ClusterJob;
2222
import at.laborg.briss.model.SingleCluster;
23+
import at.laborg.briss.utils.PDFImageExtractor;
2324
import com.itextpdf.text.Rectangle;
2425
import com.itextpdf.text.pdf.PdfReader;
26+
2527
import java.awt.image.BufferedImage;
2628
import java.io.File;
2729
import java.io.IOException;
28-
import org.jpedal.PdfDecoder;
29-
import org.jpedal.exception.PdfException;
3030

3131
public class ClusterManager {
3232

33-
public static ClusterJob createClusterJob(File origFile) throws IOException, PdfException {
33+
public static ClusterJob createClusterJob(File origFile) throws IOException {
3434

3535
PdfReader reader = new PdfReader(origFile.getAbsolutePath());
3636
ClusterJob clusterJob = new ClusterJob(origFile);
@@ -83,27 +83,19 @@ public ClusterRenderWorker(ClusterJob clusterJob) {
8383

8484
@Override
8585
public void run() {
86-
PdfDecoder pdfDecoder = new PdfDecoder(true);
87-
try {
88-
pdfDecoder.openPdfFile(clusterJob.getSource().getAbsolutePath());
89-
} catch (PdfException e1) {
90-
e1.printStackTrace();
91-
}
92-
93-
for (SingleCluster cluster : clusterJob.getClusterCollection().getAsList()) {
94-
for (Integer pageNumber : cluster.getPagesToMerge()) {
95-
try {
96-
BufferedImage renderedPage = pdfDecoder.getPageAsImage(pageNumber);
97-
cluster.getImageData().addImageToPreview(renderedPage);
98-
workerUnitCounter++;
99-
} catch (PdfException e) {
100-
// TODO Auto-generated catch block
101-
e.printStackTrace();
102-
}
103-
}
104-
}
105-
// now close the reader as it's not used anymore
106-
pdfDecoder.closePdfFile();
86+
File source = new File(clusterJob.getSource().getAbsolutePath());
87+
88+
try (PDFImageExtractor pdfImageExtractor = new PDFImageExtractor(source, null)) {
89+
for (SingleCluster cluster : clusterJob.getClusterCollection().getAsList()) {
90+
for (Integer pageNumber : cluster.getPagesToMerge()) {
91+
BufferedImage renderedPage = pdfImageExtractor.extractImage(pageNumber - 1);
92+
cluster.getImageData().addImageToPreview(renderedPage);
93+
workerUnitCounter++;
94+
}
95+
}
96+
} catch (Exception e) {
97+
e.printStackTrace();
98+
}
10799
}
108100
}
109101
}

src/main/java/at/laborg/briss/utils/ClusterRenderWorker.java

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import at.laborg.briss.model.PageCluster;
88
import java.awt.image.BufferedImage;
99
import java.io.File;
10-
import org.jpedal.PdfDecoder;
11-
import org.jpedal.exception.PdfException;
1210

1311
public class ClusterRenderWorker extends Thread {
1412

@@ -26,27 +24,16 @@ public ClusterRenderWorker(final File source, String password, final ClusterDefi
2624

2725
@Override
2826
public final void run() {
29-
PdfDecoder pdfDecoder = new PdfDecoder();
30-
31-
try {
32-
pdfDecoder.openPdfFile(source.getAbsolutePath(), password);
33-
} catch (PdfException e1) {
34-
e1.printStackTrace();
35-
}
36-
37-
for (PageCluster cluster : clusters.getClusterList()) {
38-
for (Integer pageNumber : cluster.getPagesToMerge()) {
39-
try {
40-
BufferedImage renderedPage = pdfDecoder.getPageAsImage(pageNumber);
41-
cluster.getImageData().addImageToPreview(renderedPage);
42-
workerUnitCounter++;
43-
} catch (PdfException e) {
44-
// TODO Auto-generated catch block
45-
e.printStackTrace();
46-
}
47-
}
48-
}
49-
// now close the reader as it's not used anymore
50-
pdfDecoder.closePdfFile();
27+
try (PDFImageExtractor pdfImageExtractor = new PDFImageExtractor(source, password)) {
28+
for (PageCluster cluster : clusters.getClusterList()) {
29+
for (Integer pageNumber : cluster.getPagesToMerge()) {
30+
BufferedImage renderedPage = pdfImageExtractor.extractImage(pageNumber - 1);
31+
cluster.getImageData().addImageToPreview(renderedPage);
32+
workerUnitCounter++;
33+
}
34+
}
35+
} catch (Exception e) {
36+
e.printStackTrace();
37+
}
5138
}
5239
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package at.laborg.briss.utils;
2+
3+
import org.apache.pdfbox.Loader;
4+
import org.apache.pdfbox.pdmodel.PDDocument;
5+
import org.apache.pdfbox.rendering.ImageType;
6+
import org.apache.pdfbox.rendering.PDFRenderer;
7+
8+
import java.awt.image.BufferedImage;
9+
import java.io.File;
10+
import java.io.IOException;
11+
12+
public class PDFImageExtractor implements AutoCloseable{
13+
private final PDDocument document;
14+
private final PDFRenderer pdfRenderer;
15+
16+
public PDFImageExtractor(File pdfFile, String password) throws IOException {
17+
this.document = Loader.loadPDF(pdfFile, password);
18+
19+
this.pdfRenderer = new PDFRenderer(document);
20+
}
21+
22+
public BufferedImage extractImage(int pageNumber) throws IOException {
23+
return pdfRenderer.renderImageWithDPI(
24+
pageNumber, 300, ImageType.RGB);
25+
}
26+
27+
@Override
28+
public void close() throws Exception {
29+
this.document.close();
30+
}
31+
}

0 commit comments

Comments
 (0)