画像から作るページサイズを設定画像からページを作る際の大きさを既存のページサイズから設定します。
画像を元に新規ページを作る際に、デフォルトの画像サイズに合わせてページを作成する動作の他に、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を表示したところです。