/*
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;
}
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
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」が添付されています。

