itext5でPDFを暗号化する

itext5でPDFを暗号化する

PDFファイルを暗号化したかったわけではないが、
暗号化したPDFをフィルタリングする機能を作成したかった。
そこで、サンプルの暗号化されたPDFを探したが、256bitAESで暗号化されたファイルが見つからなかった。
しかたないので、適当なPDFを256bitAES暗号化するプログラムを作成した。

itext5を利用している。
暗号化が関連するため、bcprovが必要になる。

下記の2つのjarファイルをeclipseのbuild pathに追加した。

  • itext5-itextpdf-5.5.12.jar
  • bcprov-jdk15on-158.jar


package test.pdf;

import java.io.FileOutputStream;

import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;

public class Enc {
public static void main(String[] args) {
System.out.println("start.");
PdfReader reader = null;
PdfStamper stamper = null;
try {
//
byte[] ownerPassword = args[0].getBytes();
byte[] userPassword = args[1].getBytes();
reader = new PdfReader(args[2]);
//
stamper = new PdfStamper(reader, new FileOutputStream(args[3]));
stamper.setEncryption(userPassword, ownerPassword, PdfWriter.ALLOW_SCREENREADERS, PdfWriter.ENCRYPTION_AES_256);
//
System.out.println("end.");
} catch (Exception e) {
System.out.println("error. " + e.toString());
} finally {
try {
stamper.close();
} catch (Exception e) {
System.out.println("stamper close failed. " + e.toString());
}
try {
reader.close();
} catch (Exception e) {
System.out.println("reader close failed. " + e.toString());
}
}
}
}

下記の通り実行すると、暗号化されていないPDFを暗号化した新しいファイルが保存される。


export CLASSPATH=itext5-itextpdf-5.5.12.jar:bcprov-jdk15on-158.jar:.:$CLASSPATH
java test.pdf.Enc 99999 "" orginal.pdf encrypted.pdf

99999は管理者パスワード
“”はユーザパスワードなしを示している
original.pdfを暗号化し、encrypted.pdfとして出力する。

同じタグの記事
同じカテゴリの記事

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA