OEM販売のご相談
ご相談ください!

PDF Tool APIサンプルコード:PDFに複数のファイルを添付する

機能イメージ

PDFに複数のファイルを添付します。

概要

サンプルコードの概要

入力PDFにExcelファイル、テキストファイル、PDFファイルを添付します。

  • PtlEmbeddedFiles: 添付ファイルのコンテナを表現するクラス
  • PtlPDFDocument.getEmbeddedFiles(): 添付ファイルコンテナを取得
  • PtlEmbeddedFile: PDFの添付ファイルを表現したクラス
  • PtlEmbeddedFile.setFileName(): 添付ファイル名を設定
  • PtlEmbeddedFile.readFile(): 添付するファイルの読み込み
  • PtlEmbeddedFiles.append(): 添付ファイルを追加

サンプルコード

/*
	Antenna House PDF Tool API V8.0
	C++ Interface sample program

	概要:ファイルの添付(複数)

	Copyright 2016- Antenna House, Inc.
*/

#include < PdfTk.h >
#include < stdio.h >

using namespace PdfTk;

int main(int argc, char* argv[])
{
	if (argc < 6) {
		printf("usage: AppendEmbeddedFile.exe in-pdf-file out-pdf-file embedded-file embedded-file embedded-file\n");
		return 1;
	}
	try
	{
		PtlParamInput input(argv[1]);
		PtlParamOutput output(argv[2]);
		PtlParamString embeddedfilename_1(argv[3]);
		PtlParamString embeddedfilename_2(argv[4]);
		PtlParamString embeddedfilename_3(argv[5]);

		PtlPDFDocument doc;

		// PDFファイルをロードします。
		doc.load(input);

		// 添付ファイルコンテナの取得
		PtlEmbeddedFiles& embeddedfiles = doc.getEmbeddedFiles();

		{
			// PDFの添付ファイル
			PtlEmbeddedFile embeddedfile_1;

			// 添付ファイル名の設定
			embeddedfile_1.setFileName(embeddedfilename_1);

			// 添付するファイルの読み込み
			PtlParamInput inputEmbed_1(embeddedfilename_1);
			embeddedfile_1.readFile(inputEmbed_1);

			// 添付ファイルの追加
			embeddedfiles.append(embeddedfile_1);
		}

		{
			// PDFの添付ファイル
			PtlEmbeddedFile embeddedfile_2;

			// 添付ファイル名の設定
			embeddedfile_2.setFileName(embeddedfilename_2);

			// 添付するファイルの読み込み
			PtlParamInput inputEmbed_2(embeddedfilename_2);
			embeddedfile_2.readFile(inputEmbed_2);

			// 添付ファイルの追加
			embeddedfiles.append(embeddedfile_2);
		}

		{
			// PDFの添付ファイル
			PtlEmbeddedFile embeddedfile_3;

			// 添付ファイル名の設定
			embeddedfile_3.setFileName(embeddedfilename_3);

			// 添付するファイルの読み込み
			PtlParamInput inputEmbed_3(embeddedfilename_3);
			embeddedfile_3.readFile(inputEmbed_3);

			// 添付ファイルの追加
			embeddedfiles.append(embeddedfile_3);
		}
		// ファイルに保存します。
		doc.save(output);

		printf("完了!\n");
	}
	catch (const PtlException &e)
	{
		fprintf(stderr, "Error code : %d\n %s\n", e.getErrorCode(), e.getErrorMessage().c_str());
		return 1;
	}	
	return 0;
}


            
/*
    Antenna House PDF Tool API V8.0
    Java Interface sample program

    概要:ファイルの添付(複数)

    Copyright 2016-5 Antenna House, Inc.
*/

package Sample;

import jp.co.antenna.ptl.*;

public class AppendEmbeddedFile_2 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 5)
        {
            System.out.println("usage: java AppendEmbeddedFile in-pdf-file out-pdf-file embedded-file");
            return;
        }

        try (PtlParamInput inputFile = new PtlParamInput(args[0]);
             PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFDocument doc = new PtlPDFDocument())
        {
            String embeddedfilename_1 = args[2];
            String embeddedfilename_2 = args[3];
            String embeddedfilename_3 = args[4];

            // PDFファイルをロード
            doc.load(inputFile);
            
            // 添付ファイルコンテナの取得
            try (PtlEmbeddedFiles embeddedfiles = doc.getEmbeddedFiles())
            {
                // PDFの添付ファイル
                try (PtlEmbeddedFile embeddedfile = new PtlEmbeddedFile();
                     PtlParamInput inputEmbed = new PtlParamInput(embeddedfilename_1))
                {
                    // 添付ファイル名の設定
                    embeddedfile.setFileName(embeddedfilename_1);

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

                    // 添付ファイルの追加
                    embeddedfiles.append(embeddedfile);
                }

            
                // PDFの添付ファイル
                try (PtlEmbeddedFile embeddedfile = new PtlEmbeddedFile();
                     PtlParamInput inputEmbed = new PtlParamInput(embeddedfilename_2))
                {
                    // 添付ファイル名の設定
                    embeddedfile.setFileName(embeddedfilename_2);

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

                    // 添付ファイルの追加
                    embeddedfiles.append(embeddedfile);
                }
                
            
                // PDFの添付ファイル
                try (PtlEmbeddedFile embeddedfile = new PtlEmbeddedFile();
                     PtlParamInput inputEmbed = new PtlParamInput(embeddedfilename_3))
                {
                    // 添付ファイル名の設定
                    embeddedfile.setFileName(embeddedfilename_3);

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

                    // 添付ファイルの追加
                    embeddedfiles.append(embeddedfile);
                }
            
            }

            // ファイルに保存します。
            doc.save(outputFile);
        }
        catch (PtlException pex) {
            System.out.println("PtlException : ErrorCode = " + pex.getErrorCode() + "\n  " + pex.getErrorMessage());
        }
        catch (Exception ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
        catch (Error ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
        finally {
            System.out.println("-- 完了 --");
        }
    }
}

            
/*
	Antenna House PDF Tool API V8.0
	.NET Interface sample program

	概要:ファイルの添付(複数)

	Copyright 2016- Antenna House, Inc.
*/

using System;
using PdfTkNet;

namespace AppendEmbeddedFile
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length < 5)
            {
                Console.WriteLine("usage: AppendEmbeddedFile.exe in-pdf-file out-pdf-file embedded-file embedded-file embedded-file");
                return;
            }

            try
            {
                using (PtlParamInput inputFile = new PtlParamInput(args[0]))
                using (PtlParamOutput outputFile = new PtlParamOutput(args[1]))
                using (PtlPDFDocument doc = new PtlPDFDocument())
                {
                    string embeddedfilename_1 = args[2];
                    string embeddedfilename_2 = args[3];
                    string embeddedfilename_3 = args[4];

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

                    // 添付ファイルコンテナの取得
                    using (PtlEmbeddedFiles embeddedfiles = doc.getEmbeddedFiles())
                    {
                        // PDFの添付ファイル(1つめ)
                        using (PtlEmbeddedFile embeddedfile = new PtlEmbeddedFile())
                        {
                            // 添付ファイル名の設定
                            embeddedfile.setFileName(embeddedfilename_1);

                            // 添付するファイルの読み込み
                            using (PtlParamInput input = new PtlParamInput(embeddedfilename_1))
                            {
                                embeddedfile.readFile(input);
                            }
                            // 添付ファイルの追加
                            embeddedfiles.append(embeddedfile);
                        }

                        // PDFの添付ファイル(2つめ)
                        using (PtlEmbeddedFile embeddedfile = new PtlEmbeddedFile())
                        {
                            // 添付ファイル名の設定
                            embeddedfile.setFileName(embeddedfilename_2);

                            // 添付するファイルの読み込み
                            using (PtlParamInput input = new PtlParamInput(embeddedfilename_2))
                            {
                                embeddedfile.readFile(input);
                            }
                            // 添付ファイルの追加
                            embeddedfiles.append(embeddedfile);
                        }

                        // PDFの添付ファイル(3つめ)
                        using (PtlEmbeddedFile embeddedfile = new PtlEmbeddedFile())
                        {
                            // 添付ファイル名の設定
                            embeddedfile.setFileName(embeddedfilename_3);

                            // 添付するファイルの読み込み
                            using (PtlParamInput input = new PtlParamInput(embeddedfilename_3))
                            {
                                embeddedfile.readFile(input);
                            }
                            // 添付ファイルの追加
                            embeddedfiles.append(embeddedfile);
                        }
                    }
                    // ファイルに保存します。
                    doc.save(outputFile);
                }
            }
            catch (PtlException pex)
            {
                Console.WriteLine("ErrorCode = " + pex.getErrorCode() + " : " + pex.getErrorMessageJP());
                pex.Dispose();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Console.WriteLine("-- 完了 --");
            }
        }
    }
}

            
AHPDFToolCmd80.exe -addEmbeddedFile C:\in\2021Calendar.xlsx -addEmbeddedFile C:\in\夏目漱石.txt -addEmbeddedFile C:\in\ahtool80-Manual-Cmd.pdf -d C:\in\in.pdf -o C:\sav\outAppendEmbeddedFile_2.pdf

            

サンプルコードのダウンロードはこちら

実行例

コマンドラインでの実行例

AppendEmbeddedFile_2.exe C:\in\in.pdf C:\sav\outAppendEmbeddedFile_2.pdf C:\in\2021Calendar.xlsx C:\in\夏目漱石.txt C:\in\ahtool80-Manual-Cmd.pdf
完了!
java -jar AppendEmbeddedFile_2.jar C:\in\in.pdf C:\sav\outAppendEmbeddedFile_2.pdf C:\in\2021Calendar.xlsx C:\in\夏目漱石.txt C:\in\ahtool80-Manual-Cmd.pdf
-- 完了 --
AppendEmbeddedFile_2.exe C:\in\in.pdf C:\sav\outAppendEmbeddedFile_2.pdf C:\in\2021Calendar.xlsx C:\in\夏目漱石.txt C:\in\ahtool80-Manual-Cmd.pdf
-- 完了 --
AHPDFToolCmd80.exe -addEmbeddedFile C:\in\2021Calendar.xlsx -addEmbeddedFile C:\in\夏目漱石.txt -addEmbeddedFile C:\in\ahtool80-Manual-Cmd.pdf -d C:\in\in.pdf -o C:\sav\outAppendEmbeddedFile_2.pdf
 use time 0.085000s

出力結果イメージ

出力されたPDFの添付ファイルを確認すると、指定した「2021Calendar.xlsx」「夏目漱石.txt」「ahtool80-Manual-Cmd.pdf」が添付されています。

出力イメージ

サンプルコードのダウンロード

サンプルコード

サンプルで使用した入出力PDF