描画する画像の不透明度を指定します。
描画する画像の不透明度を0.0 〜 1.0の数値で指定します。不透明度0.0を指定すると描画した画像は透明となります。また、画像の中央部分に指定した不透明度の数値を文字で記入します。
package cookbook; import java.io.*; import jp.co.antenna.ptl.*; public class AddImageSetOpacity { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 4) { System.out.println("usage: java AddImageSetOpacity in-pdf-file out-pdf-file insert-image-file opacity"); 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); //コマンドライン引数の取得 String imageURI = args[2]; int numPages = doc.getPageCount(); System.out.println("ページ数:" + numPages); float opacity = Float.parseFloat(args[3]); ...【RemovePages.javaと同じ処理のため省略 ・doc.getPages()メソッドを用いてPtlPages pagesにページコンテナを取得 ・ページコンテナが空だった場合にエラーを出力して終了】... try (PtlPage page = pages.get(0);// 先頭ページの取得(パラメータindexは0が先頭) PtlContent content = page.getContent();// ページコンテントの取得 PtlRect outputRect = page.getViewBox(); // 出力矩形の設定。(ページの大きさを得るためにViewBoxを取得する) PtlParamDrawImage paramDrawImage = new PtlParamDrawImage(); //画像の描画に使うパラメータクラス PtlParamInput insertImage = new PtlParamInput(imageURI); //画像指定に使うパラメータクラス PtlParamWriteString plainParam = new PtlParamWriteString()) // 文字描画のパラメータクラス。今回は何も設定しな { //入力画像ストリームの設定 paramDrawImage.setImageStream(insertImage); //マルチTiffのページ番号の設定(マルチTiffファイルにのみ有効) //数値を設定しない場合は、-1が設定されたとみなします //PtlParamImagePageに設定する場合に限り、-1を設定すると全ページを挿入します。 paramDrawImage.setImagePageNumber(0); // 透明度を設定 paramDrawImage.setOpacity(opacity); // 画像出力 content.drawImage(outputRect, PtlContent.ALIGN.ALIGN_CENTER, paramDrawImage); // Opacityの状態テキストを描画 content.writeString(outputRect, PtlContent.ALIGN.ALIGN_CENTER, "Opacity = " + opacity, plainParam); } catch (IllegalArgumentException ex){//PtlContent.ALIGNの指定が誤っていた場合のエラーメッセージ System.out.println(ex.getMessage()); System.out.println("ERROR : alignにはPtlContent.ALIGNに含まれる名前を指定してください。"); ex.printStackTrace(); } } ...【AppendPages.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } }
AddImageSetOpacity.java
C:\samples>java cookbook.AddImageSetOpacity usage: java AddImageSetOpacity in-pdf-file out-pdf-file insert-image-file opacity C:\samples>java cookbook.AddImageSetOpacity test-edited.pdf addImageOpacity.pdf JpegImage.jpg 0.5 ページ数:1 -- 完了 --
PDF文書(左)に、画像(左:JpegImage.jpg)を不透明度50%の設定にして追加した結果は図の右のようになります。