PDFBox サンプルプログラム
目次
- 空白ページが1ページあるだけのPDFを作成する
- 空白ページが2ページあるだけのPDFを作成する
- ページサイズを指定して空白1ページのPDFを作成する
- BleedBox(塗り足しを含むサイズ),TrimBox(仕上がりサイズ)を指定して1ページのPDFを作成する
- JPEGファイルをPDFに出力する
- JPEGファイルをPDFの複数ページに参照方式で出力する
- JPEGファイルをPDFの複数ページに物理方式に出力する
- PDFからJPEGファイルを抽出する
- PDFからJPEGデータをBufferedImageとして取得する
- PDFに文字列を一つ出力する
- PDFに文字列を二つ出力する
- PDFに日本語を含む文字列を一つ出力する
- PDFから文字列を抽出してテキストファイルへ出力する
- PDFから文字列を抽出して標準出力へ出力する
- PDFから画像の解像度を取得する
- PDFから1ページの画像を取得する
- PDFから全ページの画像を取得する
- PDFファイルを無圧縮で出力してPDFのファイル形式を確認する
PDFに日本語を含む文字列を一つ出力する
この方法ではWindowsの文字コードMS932を使用する。
ここではBoundingBoxを使用するためにfontbox-1.8.2.jarが必要になる。
try {
//PDFドキュメントを作成
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
//書き込む用のストリームを準備
PDPageContentStream stream = new PDPageContentStream(document, page);
//テキスト出力開始
stream.beginText();
//日本語を設定する場合にはいくつかのフォント情報を指定する
COSDictionary systeminfo = new COSDictionary();
systeminfo.setString(COSName.REGISTRY, "Adobe");
systeminfo.setString(COSName.ORDERING, "Japan1");
systeminfo.setInt(COSName.SUPPLEMENT, 6);
//フォントディスクリプタ設定
PDFontDescriptorDictionary fd = new PDFontDescriptorDictionary();
//ソフトウェア側で用意されている日本語フォントを指定
fd.setFontName("KozGoPr6N-Medium");
fd.setFlags(4);
fd.setFontBoundingBox(new PDRectangle(new BoundingBox(-500, -300, 1200, 1400)));
fd.setItalicAngle(0);
fd.setAscent(1400);
fd.setDescent(-300);
fd.setCapHeight(700);
fd.setStemV(100);
//CIDフォント設定
COSDictionary cid = new COSDictionary();
cid.setItem(COSName.TYPE, COSName.FONT);
cid.setItem(COSName.SUBTYPE, COSName.CID_FONT_TYPE0);
cid.setItem(COSName.BASE_FONT, COSName.getPDFName("KozGoPr6N-Medium"));
cid.setItem(COSName.CIDSYSTEMINFO, systeminfo);
cid.setItem(COSName.FONT_DESC, fd);
//フォント設定
COSDictionary font = new COSDictionary();
font.setItem(COSName.TYPE, COSName.FONT);
font.setItem(COSName.SUBTYPE, COSName.TYPE0);
font.setItem(COSName.BASE_FONT, COSName.getPDFName("KozGoPr6N-Medium"));
font.setItem(COSName.ENCODING, COSName.ENCODING_90MS_RKSJ_H);
COSArray array = new COSArray();
array.add(cid);
font.setItem(COSName.DESCENDANT_FONTS, array);
//フォンと作成
PDFont pdFont = new PDType0Font(font);
//フォントとフォントサイズを設定
stream.setFont(pdFont, 36);
//文字の配置設定
stream.moveTextPositionByAmount(50, 300);
//文字列をMS932のバイト列にしつつ、ASCIIコード(1byte文字列)として出力
stream.drawString(new String("test漢字OK?".getBytes("MS932"), "ISO8859-1"));
//テキスト出力終了
stream.endText();
//書き込む用のストリームを閉じる
stream.close();
document.save("hogehoge.pdf");
document.close();
} catch (IOException e) {
e.printStackTrace();
} catch (COSVisitorException e) {
e.printStackTrace();
}