
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 -- 完了 --
