文字を塗りつぶす色を指定します。
色の指定方法と文字を塗りつぶす色を指定します。最初に次に挙げる色空間のどれかを指定します。
色空間を表現するクラス | 色空間 |
---|---|
PtlColorNone | 無色。PtlColorNone(無色)を指定した時は文字が表示されません。 |
PtlColorDeviceGray | DeviceGray |
PtlColorDeviceRGB | DeviceRGB |
PtlColorDeviceCMYK | DeviceCMYK |
PtlColorSeparation | Separation Color(※ V7.0以降のみ) |
次に色空間毎に色の要素を指定します。例えばDeviceRGBを指定した時は赤(R)、緑(G)、青(B)の三原色をそれぞれ0.0~1.0の範囲で指定します。色を設定しない場合はデフォルト値として黒色が設定されます。
※:V7.0以降の『PDF Tool API』では、Separation Colorによる色指定が可能です。Separation Colorに関する詳細は「『PDF CookBook』(第5巻)10.4.1 Separation Colorの対応」を参照してください。
この例では主に次の機能を使っています。
package cookbook; import java.io.*; import jp.co.antenna.ptl.*; public class AddTextSetColor { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 3) { System.out.println("usage: java AddTextSetColor in-pdf-file out-pdf-file color-space"); System.out.println("color-space\n 0:無色 1:DeviceGray 2:DeviceRGB 3:DeviceCMYK"); return; } int colorSpace = Integer.parseInt(args[2]); switch(colorSpace) { case 0: case 1: case 2: case 3: break; default: System.err.println("color-spaceには0から3の数を指定してください。"); System.err.println("usage: java AddTextSetColor in-pdf-file out-pdf-file color-space"); System.err.println("color-space\n 0:無色 1:DeviceGray 2:DeviceRGB 3:DeviceCMYK"); return ; } try (PtlParamInput inputFile = new PtlParamInput(args[0]); PtlParamOutput outputFile = new PtlParamOutput(args[1]); PtlPDFDocument doc = new PtlPDFDocument(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { // PDFファイルをロードします。 doc.load(inputFile); ...【RemovePages.javaと同じ処理のため省略 ・doc.getPages()メソッドを用いてPtlPages pagesにページコンテナを取得 ・ページコンテナが空だった場合にエラーを出力して終了】... try (PtlPage page = pages.get(0); // ページの取得(先頭ページを取得) PtlContent content = page.getContent(); // ページコンテントの取得 PtlRect outputRect = page.getViewBox(); // 出力矩形の設定。(ページの大きさを得るためにViewBoxを取得する) PtlParamWriteString writeStringParam = new PtlParamWriteString(); // 文字描画のパラメータクラス // 色表現用のクラスを作成 PtlColorNone colorNone = new PtlColorNone(); // 無色を表現したクラス PtlColorDeviceGray colorGray = new PtlColorDeviceGray(); // DeviceGray色空間で色表現したクラス PtlColorDeviceRGB colorRGB = new PtlColorDeviceRGB(); //DeviceRGB色空間で色表現したクラス PtlColorDeviceCMYK colorCMYK = new PtlColorDeviceCMYK()) //DeviceCMYK色空間で色表現したクラス { switch(colorSpace) { case 0: //無色 System.out.println("無色が指定されました。無色で文字を描画します。"); writeStringParam.setTextColor(colorNone); break; case 1: //DeviceGray System.out.println("グレースケール値を0.0~1.0の範囲で入力してください。0.0が黒、1.0が白。"); colorGray.setGray(setValue(br)); writeStringParam.setTextColor(colorGray); break; case 2: //DeviceRGB System.out.println("RGBの各要素の値を0.0~1.0の範囲で入力してください。0.0が要素なし、1.0が要素の最大"); System.out.print("赤:"); colorRGB.setR(setValue(br)); System.out.print("緑:"); colorRGB.setG(setValue(br)); System.out.print("青:"); colorRGB.setB(setValue(br)); writeStringParam.setTextColor(colorRGB); break; case 3: //DeviceCMYK System.out.println("CYMKの各要素の値を0.0~1.0の範囲で入力してください。0.0が要素なし、1.0が要素の最大"); System.out.print("シアン:"); colorCMYK.setC(setValue(br)); System.out.print("マゼンタ:"); colorCMYK.setM(setValue(br)); System.out.print("黄:"); colorCMYK.setY(setValue(br)); System.out.print("色調(黒):"); colorCMYK.setK(setValue(br)); writeStringParam.setTextColor(colorCMYK); break; } // 文字列出力 (中央に文字列を作成) content.writeString(outputRect, PtlContent.ALIGN.ALIGN_CENTER, "writeString Test : set color", writeStringParam); } } ...【AppendPages.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } public static float setValue(BufferedReader br)throws IOException{ float value = -1.0f; boolean isValueOk = false; while(!isValueOk) { value = Float.parseFloat(br.readLine()); if((value < 0) || (1.0f < value)) { System.out.println("0.0から1.0の範囲で再度値を設定してください。"); } else { isValueOk = true; } } return value; } }
AddTextSetColor.java
C:\samples>java cookbook.AddTextSetColor usage: java AddTextSetColor in-pdf-file out-pdf-file color-space color-space 0:無色 1:DeviceGray 2:DeviceRGB 3:DeviceCMYK C:\samples>java cookbook.AddTextSetColor blankPage.pdf color0.pdf 0 無色が指定されました。無色で文字を描画します。 -- 完了 -- C:\samples>java cookbook.AddTextSetColor blankPage.pdf colorGray.pdf 1 グレースケール値を0.0~1.0の範囲で入力してください。0.0が黒、1.0が白。 0.5 -- 完了 -- C:\samples>java cookbook.AddTextSetColor blankPage.pdf colorRGB.pdf 2 RGBの各要素の値を0.0~1.0の範囲で入力してください。0.0が要素なし、1.0が要素の最大 赤:1 緑:0 青:0 -- 完了 -- C:\samples>java cookbook.AddTextSetColor blankPage.pdf colorCYMK.pdf 3 CYMKの各要素の値を0.0~1.0の範囲で入力してください。0.0が要素なし、1.0が要素の最大 シアン:1 マゼンタ:0 黄:0 色調(黒):0 -- 完了 --
ここでは上から順に、無色、グレースケール、RGBカラー、CMYKカラーの色空間で、塗りつぶし色を指定しています。