Skip to content

Commit 6b99913

Browse files
committed
fix #557: use itext instead of pdfbox when remove password
1 parent d925a9f commit 6b99913

File tree

3 files changed

+32
-15
lines changed

3 files changed

+32
-15
lines changed

pom.xml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
1313
<pdf.version>3.0.5</pdf.version>
1414
<poi.version>5.4.1</poi.version>
15+
<itext.version>9.2.0</itext.version>
1516
<log4j.version>2.25.1</log4j.version>
1617
<junit.minor.version>13.3</junit.minor.version>
1718
<junit.jupiter.version>5.${junit.minor.version}</junit.jupiter.version>
1819
<junit.platform.version>1.${junit.minor.version}</junit.platform.version>
1920
<surefire.version>3.5.3</surefire.version>
2021
<protobuf.version>4.32.0</protobuf.version>
21-
<pdf.version>3.0.5</pdf.version>
2222
</properties>
2323
<dependencies>
2424
<dependency>
@@ -81,6 +81,16 @@
8181
<artifactId>poi-scratchpad</artifactId>
8282
<version>${poi.version}</version>
8383
</dependency>
84+
<dependency>
85+
<groupId>com.itextpdf</groupId>
86+
<artifactId>kernel</artifactId>
87+
<version>${itext.version}</version>
88+
</dependency>
89+
<dependency>
90+
<groupId>com.itextpdf</groupId>
91+
<artifactId>bouncy-castle-adapter</artifactId>
92+
<version>${itext.version}</version>
93+
</dependency>
8494
<dependency>
8595
<groupId>org.bouncycastle</groupId>
8696
<artifactId>bcprov-jdk18on</artifactId>
@@ -161,16 +171,6 @@
161171
<artifactId>flatlaf</artifactId>
162172
<version>3.6.1</version>
163173
</dependency>
164-
<dependency>
165-
<groupId>org.apache.pdfbox</groupId>
166-
<artifactId>pdfbox</artifactId>
167-
<version>${pdf.version}</version>
168-
</dependency>
169-
<dependency>
170-
<groupId>org.apache.pdfbox</groupId>
171-
<artifactId>pdfbox-io</artifactId>
172-
<version>${pdf.version}</version>
173-
</dependency>
174174
<dependency>
175175
<groupId>org.junit.jupiter</groupId>
176176
<artifactId>junit-jupiter-api</artifactId>

src/main/java/edu/jiangxin/apktoolbox/pdf/PdfUtils.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package edu.jiangxin.apktoolbox.pdf;
22

3+
import com.itextpdf.kernel.pdf.*;
34
import org.apache.logging.log4j.LogManager;
45
import org.apache.logging.log4j.Logger;
56
import org.apache.pdfbox.Loader;
@@ -118,4 +119,22 @@ public static void removePassword(File encryptedFile, File targetDir) {
118119
LOGGER.error("Error processing PDF file: {}", e.getMessage());
119120
}
120121
}
122+
123+
public static void removePasswordWithIText(File encryptedFile, File targetDir) {
124+
PdfReader reader;
125+
try {
126+
reader = new PdfReader(encryptedFile).setUnethicalReading(true);
127+
} catch (IOException e) {
128+
LOGGER.error("Error reading PDF file: {}", e.getMessage());
129+
return;
130+
}
131+
String targetFilePath = targetDir.getAbsolutePath() + File.separator + encryptedFile.getName();
132+
133+
try (PdfDocument pdfDoc = new PdfDocument(reader,
134+
new PdfWriter(targetFilePath))) {
135+
LOGGER.info("Remove password success: {}", targetFilePath);
136+
} catch (IOException e) {
137+
LOGGER.error("Error writing PDF file: {}", e.getMessage());
138+
}
139+
}
121140
}

src/main/java/edu/jiangxin/apktoolbox/pdf/passwordremover/PdfPasswordRemoverPanel.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,9 @@ private void processFile(File encryptedFile, File targetDir) {
111111
if (Thread.currentThread().isInterrupted()) {
112112
return;
113113
}
114-
PdfUtils.removePassword(encryptedFile, targetDir);
115-
} catch (Exception e) {
116-
logger.error("Process file failed: " + encryptedFile.getAbsolutePath(), e);
114+
PdfUtils.removePasswordWithIText(encryptedFile, targetDir);
117115
} catch (Throwable t) {
118-
logger.error("Process file failed: " + encryptedFile.getAbsolutePath(), t);
116+
logger.error("Process file failed: {}", encryptedFile.getAbsolutePath(), t);
119117
}
120118
}
121119

0 commit comments

Comments
 (0)