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として出力する。
- EclipseLinkでJPA
- eclipseの良く使うショートカットキー
- eclipseデフォルトの文字コード
- Java DateFormat
- Java8で指定回数繰り返し
- Java9でJAXB
- JavaでZip圧縮
- javaでイメージフォーマット変換
- javaでダミー画像作成
- javaでファイルの更新日時を変更する
コメントを残す