iText 8.0.4升级:初始化加密文档时出错

问题描述 投票:0回答:1

我正在从 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)

我不确定为什么添加依赖项后发生事件,我收到上述错误。

itext bouncycastle java-11 itext7
1个回答
0
投票

添加 bouncy-castle-fips-adapter 依赖项解决了此问题。

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>bouncy-castle-fips-adapter</artifactId>
        <version>8.0.4</version>
    </dependency>
© www.soinside.com 2019 - 2024. All rights reserved.