3.1.2 ファイルの添付

images/AppendEmbeddedFile-top.png

狙い・効果

PDFにファイルを添付PDFファイルに指定したファイルを添付します。

処理の概要

任意の外部ファイルをPDFの添付ファイルとして埋め込むことができます。このとき、添付ファイルの名前を指定できます。

PDFファイルに添付ファイルを埋め込む際の手順は以下の通りです。添付ファイルクラスに添付する対象ファイルを読み込ませ、添付ファイル名を設定します。その後、添付ファイルのコンテナクラスに対象の添付ファイルクラスを追加することで添付ファイルの追加が完了します。

本サンプルプログラムでは入力PDFに添付ファイルを埋め込んで、新しいPDFドキュメントとして出力します。その際、追加前の添付ファイル数と追加後の添付ファイル数を出力することでファイルが添付されたことが明確に分かるようになっています。

PDF Tool APIの主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class AppendEmbeddedFile {

    // そのクラスのusageを表示する関数
    private static void printUsage() {
        System.out.println("usage: java AppendEmbeddedFile in-pdf-file" +
                           " out-pdf-file file-to-embed embedded-file-name");
     }



    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 3) {
            printUsage();
            return;
        }


        // コマンドライン引数の読み取り
        String embeddedFileName = args[3];

        try (PtlParamInput inputFile = new PtlParamInput(args[0]);
             PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFDocument doc = new PtlPDFDocument()) {

            // PDFファイルをロード
            doc.load(inputFile);

            // 添付ファイルコンテナの取得
            try (PtlEmbeddedFiles embeddedfiles = doc.getEmbeddedFiles();
                 // 添付するファイルの取得と添付ファイル用クラスの取得
                 PtlEmbeddedFile embeddedfile = new PtlEmbeddedFile();
                 PtlParamInput inputEmbed = new PtlParamInput(args[2])) {
                // 添付ファイル数の取得
                System.out.println("追加前の添付ファイル数 : " + embeddedfiles.getCount());

                // 添付ファイル名の設定
                embeddedfile.setFileName(embeddedFileName);
                // 添付するファイルの読み込み
                embeddedfile.readFile(inputEmbed);

                // 添付ファイルの追加
                embeddedfiles.append(embeddedfile);
                // 添付ファイル数の取得
                System.out.println("追加後の添付ファイル数 : " +
                                   embeddedfiles.getCount());
            }

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

プログラムファイル名

AppendEmbeddedFile.java

入出力操作の例

C:\samples>java cookbook.AppendEmbeddedFile  
usage: java AppendEmbeddedFile in-pdf-file out-pdf-file file-to-embed embedded-file-name

C:\samples>java cookbook.AppendEmbeddedFile blank.pdf blank-embed.pdf concept1.png embedded.png 
追加前の添付ファイル数 : 0
追加後の添付ファイル数 : 1
-- 完了 --

次の図は添付ファイルを埋め込んだPDFをAdobe Readerで開いたところです。

ファイルの添付