
画像から作るページサイズを設定画像からページを作る際の大きさを既存のページサイズから設定します。
画像を元に新規ページを作る際に、デフォルトの画像サイズに合わせてページを作成する動作の他に、A4やB5といった既存のページサイズを指定できます。
本サンプルプログラムでは、入力画像ファイルを新しいPDFドキュメントとして出力します。その際にページのサイズを選択します。指定には列挙型定数PtlParamImagePage.PAPER_TYPEの各定数名を文字列で指定します。このとき、カスタムサイズは指定できませんのでPAPER_CUSTOM_SIZEは指定しないでください。それ以外の設定・動作は「4.1.1 ページの作成」と同じです。
| PAPER_A3 | A3 |
| PAPER_A3_R | A3 (横長) |
| PAPER_A4 | A4 |
| PAPER_A4_R | A4(横長) |
| PAPER_B4 | B4 |
| PAPER_B4_R | B4(横長) |
| PAPER_B5 | B5 |
| PAPER_B5_R | B5(横長) |
| PAPER_CUSTOM_SIZE | カスタムサイズ(「4.1.4 ページの大きさを任意のサイズに指定する」で解説) |
| PAPER_EXECUTIVE | Executive(184.6mm × 266.7mm) |
| PAPER_EXECUTIVE_R | Executive(横長) |
| PAPER_IMAGE_SIZE | 画像サイズに合わせる(デフォルト値) |
| PAPER_LEGAL | Legal(215.9mm × 355.6mm) |
| PAPER_LEGAL_R | Legal (横長) |
| PAPER_LETTER | Letter(215.9mm × 355.6mm) |
| PAPER_LETTER_R | Letter (横長) |
| PAPER_TABLOID | Tabloid(279.4mm × 431.8mm) |
| PAPER_TABLOID_R | Tabloid (横長) |
Executive, Legal, Letter, Tabloidはそれぞれ、北米で慣例的に使用される用紙サイズの名称を表します。
package cookbook;
import jp.co.antenna.ptl.*;
public class ImageToPdfSetPaperType {
// そのクラスのusageを表示する関数
private static void printUsage() {
System.out.println("usage: java ImageToPdfSetPaperType image-file" +
" out-pdf-file paper-type");
System.out.println("paper-type : 用紙タイプ");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if (args.length < 2) {
printUsage();
return;
}
//コマンドライン引数の読み取り
String paperType = args[2];
try (PtlParamOutput outputFile = new PtlParamOutput(args[1]);
PtlPDFDocument doc = new PtlPDFDocument(); //PDF文書を表現したクラスを新規作成
PtlPages pages = doc.getPages()) { //作成したクラスのページコンテナの取得
// 画像描画パラメータ
// 画像ファイル
// 画像ページパラメータ の取得
try (PtlParamDrawImage paramDrawImage = new PtlParamDrawImage();
PtlParamInput inputImage = new PtlParamInput(args[0]);
PtlParamImagePage paramImagePage = new PtlParamImagePage()) {
// 画像描画パラメータに画像ファイルを設定
paramDrawImage.setImageStream(inputImage);
// 画像ページパラメータに画像描画パラメータを設定
paramImagePage.setImage(paramDrawImage);
// 画像ページのサイズを画像サイズにあわせる
paramImagePage.setPaperType(
PtlParamImagePage.PAPER_TYPE.valueOf(paperType));
// 画像の配置を設定
paramImagePage.setAlign(PtlParamImagePage.ALIGN.ALIGN_CENTER);
// ページコンテナに画像ページパラメータを追加
pages.append(paramImagePage);
}
//PtlParamImagePage.PAPER_TYPEの指定が誤っていた場合のエラーメッセージ
catch (IllegalArgumentException iaex){
System.out.println(iaex.getMessage());
System.out.println("ERROR : paper-typeにはPtlParamImagePage.PAPER_TYPEに" +
"含まれる名前を指定してください。");
iaex.printStackTrace();
}
// ファイルに保存します。
doc.save(outputFile);
}
...【AppendAnnotStampDefault.javaと同じ処理のため省略
・エラーメッセージ処理と出力】...
}
}
ImageToPdfSetPaperType.java
C:\samples>java cookbook.ImageToPdfSetPaperType usage: java ImageToPdfSetPaperType image-file out-pdf-file paper-type paper-type : 用紙タイプ C:\samples>java cookbook.ImageToPdfSetPaperType fileformat.png imagetopdf-A4.pdf PAPER_A4 -- 完了 --
左が元の画像(fileformat.png)、右は元の画像をA4の用紙に配置したPDFを表示したところです。
