QRコード画像を追加QRコード画像を用意しておき全ページに貼り付けます。
PDF文書の指定位置にQRコードを貼り付ける矩形領域を設定します。
QRコード画像を読み込んでPDF文書の全ページに追加します。追加する矩形領域は全て同じ位置です。
package cookbook; import java.io.*; import jp.co.antenna.ptl.*; public class AddQRcodeOnAllPage { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 3) { System.out.println("usage: java AddQRcodeOnAllPage in-pdf-file out-pdf-file insert-image-file"); 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); ...【RemovePages.javaと同じ処理のため省略 ・doc.getPages()メソッドを用いてPtlPages pagesにページコンテナを取得 ・ページコンテナが空だった場合にエラーを出力して終了】... try(PtlRect outputRect = new PtlRect())// 出力矩形の初期化 { setQROutputRect(br, outputRect); //QRコード入力を始動 for(int i = 0; i < numPages; i++) { try (PtlPage page = pages.get(i);// ページの取得(パラメータindexは0が先頭のため1を引く) PtlContent content = page.getContent();// ページコンテントの取得 PtlParamDrawImage paramDrawImage = new PtlParamDrawImage(); //画像の描画に使うパラメータクラス PtlParamInput insertImage = new PtlParamInput(imageURI)) //画像指定に使うパラメータクラス { //入力画像ストリームの設定 paramDrawImage.setImageStream(insertImage); // 画像出力 content.drawImage(outputRect, PtlContent.ALIGN.ALIGN_TOP_LEFT, paramDrawImage); } } } } ...【AppendPages.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } public static PtlRect setQROutputRect(BufferedReader br,PtlRect outputRect) throws IOException, PtlException, Exception, Error{ float top, bottom, left, right; boolean isValueOkay = false; while(!isValueOkay) { System.out.println("QRコードの配置矩形の各数値を入力してください。"); System.out.println("矩形の左上座標が配置の基準になり、"); System.out.println("そこから右下座標までの範囲を超えない範囲でQRコードが描画されます。"); System.out.print("top (mm) : "); top = Float.parseFloat(br.readLine()); System.out.print("bottom (mm) : "); bottom = Float.parseFloat(br.readLine()); if(top < bottom) //不正矩形は再入力させる { System.out.println("topの値はbottomよりも大きい値を指定して再度入力してください。"); continue; } System.out.print("right (mm) : "); right = Float.parseFloat(br.readLine()); System.out.print("left (mm) : "); left = Float.parseFloat(br.readLine()); if(right < left) //不正矩形は再入力させる { System.out.println("rightの値はleftよりも大きい値を指定して再度入力してください。"); continue; } //矩形を正しく指定できた場合の処理 isValueOkay = true; outputRect.setTop(top); outputRect.setBottom(bottom); outputRect.setRight(right); outputRect.setLeft(left); } return outputRect; } }
AddQRcodeOnAllPage.java
C:\samples>java cookbook.AddQRcodeOnAllPage tagged-pdf.pdf addQROnAllPage.pdf QR-Code-sample.jpg ページ数:44 QRコードの配置矩形の各数値を入力してください。 矩形の左上座標が配置の基準になり、 そこから右下座標までの範囲を超えない範囲でQRコードが描画されます。 top (mm) : 255 bottom (mm) : 240 right (mm) : 35 left (mm) : 20 -- 完了 --