2.2.1 PDFファイルからの注釈データインポート

images/ImportAnnotsFromPDF-top.png

狙い・効果

PDFファイルから注釈情報をインポート注釈の付いたPDFから注釈情報を別のPDFファイルにインポートします。

処理の概要

PDFドキュメント上のマークアップ注釈(テキスト注釈、スタンプ注釈、図形注釈など)を別のPDFに直接インポートします。取り込めるのはマークアップ注釈なので、例えばリンク注釈などは取り込めません。

本サンプルプログラムでは、入力PDFに対し指定したPDFファイルから注釈情報をインポートして、PDF形式で出力します。

PDF Tool APIの主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ImportAnnotsFromPDF {
    // そのクラスのusageを表示する関数
    private static void printUsage(){
        System.out.print("usage: java ImportAnnotsFromPDF in-pdf-file");
        System.out.println(" out-pdf-file pdf-file-to-import");
    }

    public static void main(String[] args) {
        if (args.length < 3){
            printUsage();
            return;
        }

        // コマンドライン引数の取得
        try (PtlParamInput inputFile = new PtlParamInput(args[0]);
             PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlParamInput PdfToImport = new PtlParamInput(args[2]);
             PtlPDFDocument doc = new PtlPDFDocument();
             PtlPDFDocument docOfImportPDF = new PtlPDFDocument()) {
            // PDFファイルをロードします。
            doc.load(inputFile);
            try (PtlPages pages = doc.getPages()) {//ページコンテナの取得
                // ページコンテナが空かどうか
                if (pages.isEmpty()) {
                    System.out.println("ページコンテナが空\n");
                    return;
                }
            }

            // インポート元のPDFファイルが空でないことを確認します。
            docOfImportPDF.load(PdfToImport);
            try (PtlPages pages = docOfImportPDF.getPages()) {//ページコンテナの取得
                // ページコンテナが空かどうか
                if (pages.isEmpty()) {
                    System.out.println("ページコンテナが空\n");
                    return;
                }
            }
            // PDFファイルから注釈をインポートする
            doc.importAnnotsFromPDF(PdfToImport);

            // ファイルに保存します。
            doc.save(outputFile);
        }
	...【AppendAnnotStampDefault.javaと同じ処理のため省略
	  ・エラーメッセージ処理と出力】...
    }
}

プログラムファイル名

ImportAnnotsFromPDF.java

入出力操作の例

C:\samples>java cookbook.ImportAnnotsFromPDF 
usage: java ImportAnnotsFromPDF in-pdf-file out-pdf-file pdf-file-to-import

C:\samples>java cookbook.ImportAnnotsFromPDF blank.pdf blank-annots-pdf.pdf annots.pdf 
-- 完了 --