我正在从 8.0.1 升级到 iText 8.0.4。我写了以下单元测试。
public class TestEncryption extends TestCase{
public void testGenerateEncryptedPdf() {
System.out.println("Start test...");
PdfWriter writer;
try {
writer = new PdfWriter(new FileOutputStream("encryptedPdf.pdf"),
new WriterProperties().setStandardEncryption(
"user".getBytes(),
"owner".getBytes(),
EncryptionConstants.ALLOW_FILL_IN | EncryptionConstants.ALLOW_SCREENREADERS ,
EncryptionConstants.ENCRYPTION_AES_256 | EncryptionConstants.DO_NOT_ENCRYPT_METADATA));
writer.setCompressionLevel(CompressionConstants.BEST_COMPRESSION);
writer.setSmartMode(true);
System.out.println("Initializing encrypted document ...");
PdfDocument pdfDocument = new PdfDocument(writer);
System.out.println("Done ...");
pdfDocument.setTagged();
Document document = new Document(pdfDocument, new PageSize(PageSize.A4));
document.setMargins(50, 50, 50, 50);
document.add(new Paragraph("Sample content."));
document.close();
assertNotNull(document);
System.out.println("End test...");
} catch (FileNotFoundException e) {
e.printStackTrace();
fail();
}
}
}
我的 pom.xml 具有以下依赖项:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>8.0.4</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>io</artifactId>
<version>8.0.4</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>8.0.4</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>forms</artifactId>
<version>8.0.4</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>bouncy-castle-adapter</artifactId>
<version>8.0.4</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
<version>1.78</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
<version>1.78</version>
</dependency>
</dependencies>
我收到以下错误:
com.itextpdf.bouncycastleconnector.BouncyCastleFactoryCreator - 必须添加 com.itextpdf:bouncy-castle-adapter 或 com.itextpdf:bouncy-castle-fips-adapter 依赖项才能使用 BouncyCastleFactoryCreator
堆栈跟踪:
com.itextpdf.kernel.exceptions.PdfException: PdfEncryption exception.
at com.nasaprs.nspires.pdfAcroformServices.TestEncryption.testGenerateEncryptedPdf(TestEncryption.java:30)
Caused by: java.lang.UnsupportedOperationException: Either com.itextpdf:bouncy-castle-adapter or com.itextpdf:bouncy-castle-fips-adapter dependency must be added in order to use BouncyCastleFactoryCreator
at com.nasaprs.nspires.pdfAcroformServices.TestEncryption.testGenerateEncryptedPdf(TestEncryption.java:30)
我不确定为什么添加依赖项后发生事件,我收到上述错误。
添加 bouncy-castle-fips-adapter 依赖项解决了此问题。
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>bouncy-castle-fips-adapter</artifactId>
<version>8.0.4</version>
</dependency>