LoginSignup
2
5

More than 5 years have passed since last update.

iText2.1.7 でPDFにパスワードを付けたい時

Posted at

注意点

iText2.1.7 の話なので、最新バージョンでは使うライブラリのバージョン等違う可能性があります。
使っているライブラリがiText2.1.7だった案件でPDFにパスワードを追加したい、と新規で話が出てはまった人向け。

現象

コードとしてはこう書けばいいみたいだけど…

PdfReader reader = new PdfReader(元のPDFファイル名);
PdfEncryptor.encrypt(reader,
        new FileOutputStream(パスワードを付与するPDFファイル名),
        "aaa".getBytes(), // ユーザーパスワード
        "bbb".getBytes(), // マスターパスワード
        PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_PRINTING, // パーミッション、コピー可&印刷可能
        true); //暗号キーは128bitか40bitか。trueなら128bit

動かしたら


Caused by: java.lang.ClassNotFoundException: org.bouncycastle.asn1.DEREncodable

で落ちる。
調べたところ、bcprov-jdk-xxx.jarとbcpkix-jdk-xxx.jarをライブラリに入れる必要があるらしい。

ライブラリに追加して実行してみる

https://www.bouncycastle.org/latest_releases.html から最新版 bcpxxx-jdk15on-154.jar をダウンロードしてくるも解決しない。
Jarの中身を見てみると、org.bouncycastle.asn1.DEREncodableVector しかない…。

結論

http://repo2.maven.org/maven2/org/bouncycastle/ から過去のリリースバージョンをダウンロードしてこないとダメ。

  • bcpkix-jdk15on-1.47.jar
  • bcprov-jdk15on-1.46.jar

bcprov-jdk15on-1.47.jar から org.bouncycastle.asn1.DEREncodable が消えているので注意が必要。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5