PDF Tool APIよくいただくご質問

このページでは『Antenna House PDF Tool API』V3.1について、よくお寄せいただくご質問を紹介しています。

V5.0以降の最新バージョンについては以下をご覧ください。
よくいただくご質問

一般的なお問い合わせ

64bitのオペレーティングシステム上でPDF Tool API V3.1の.NETインターフェースを利用したプログラムを実行すると、
「ファイルまたはアセンブリ 'PdfTkNet31, Version=3.1.2009.1124, Culture=neutral, PublicKeyToken=901f5d3b86e00f5a'、またはその依存関係の1つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。」
というエラーが発生します。対処方法はあるでしょうか?

PDF Tool API V3.1は32 bitのAPIです。エラーの内容から、PDF Tool APIを使用したプログラムが64 bit用のランタイムを参照していると思われます。
以下は、PDF Too APIを使用したプログラムを64bitのオペレーティングシステム上で運用する場合の注意点です。

PDF Tool API V3.1 はどの開発ツールで作成されていますか?

  • Windows版
    • Microsoft Visual C++ 6.0 / Microsoft Visual Studio .NET 2005 SP1 でビルドされています。
      呼び出し側のプログラムは、互換性のあるコンパイラをご使用ください。
  • Solaris版
    • Sun ONE Studio 7, Compiler Collection でビルドされています。
      呼び出し側のプログラムは、互換性のあるコンパイラをご使用ください。
  • Linux版
    • GCC 3.2.X でビルドされています。
      C++ バイナリは GCC 3.2 以降と 3.1.1、3.0 と 2.9 を含む GCC の以前のバージョンとの間で非互換であることに注意してください。従って、プログラムは GCC 3.2 以降を使ってコンパイルされなくてはなりません。

PDF Tool V3.0 と V3.1 に互換性はないのですか?

互換性はありません。PDF Tool V3.0 をご使用の方が PDF Tool V3.1 を使用する場合、プログラムを再作成する必要があります。

PDF Tool API を使用しています。可能な限り環境変数の登録をしないで使用したいのですが、そのような方法はないでしょうか?

Windows 環境でしたら方法はあります。バージョンごとに異なりますが、次のように設定をしてください。

  • PDF Tool API V3.1
    • ライセンスファイル(ptalic.dat)を PdfTk31.dll と同じフォルダーに格納してください。これで環境変数 PTL31_LIC_PATH の指定が不要になります。
    • base2 フォルダーを dmc_commPTL31.dll と同じフォルダーに格納してください。これで環境変数 PTL31_DMC_TBLPATH の指定が不要になります。
    • 環境変数 PTL30_FONT_CONFIGFILE につきましては、font-config.xml がない場合には、PDF Tool API は Windows のフォントディレクトリを参照して動作します。フォントをシステムのフォントフォルダー以外に格納して使用するのでなければ、この環境変数はなくても動作します。
  • PDF Driver API V3.1
    • ライセンスファイル(pdalic.dat)を PdfDrv31.dll と同じフォルダー及び PDF Driver V4.1 のインストール先(※)に格納してください。これで環境変数 PTL31_LIC_PATH の指定が不要になります。
      ※ 通常「C:\Program Files\Antenna\PDF Driver 4.1」になります。
    • base2 フォルダーを dmc_commPTL31.dll と同じフォルダーに格納してください。これで環境変数 PTL31_DMC_TBLPATH の指定が不要になります。

保守契約の更新完了後に御社からライセンスファイルが送られてきました。ライセンスファイルの更新は年に一度実施する必要があるのですか?

現状でインストールされている物件(PDF Tool API 及び PDF Driver API)をそのまま使用する場合はライセンスファイルを変更する必要はありません(これまでどおり動作します)。
ただし、今後リリースされる改訂版(メンテナンスリリース)をご使用される場合には、今回お送りしましたライセンスファイルをご使用ください。ライセンスファイルが古い場合、改訂版は評価版として動作するようになっています。

「スタンドアロン10ライセンス」を買って、開発元で開発用に 5本、客先で 5本使うような使い方は可能ですか?

スタンドアロンライセンス 10台分は、同一企業・学校などの内部でのみ使うことが前提です。10台分を他の会社・団体と分け合うことはできません。

「サーバーライセンス」と「スタンドアロン10ライセンス」で使用できる機能に差はありますか?

ライセンスファイルによる製品の動作の違いはありません。また、動作環境についてもライセンスファイルの違いでインストール可能な環境に違いがあるということはありません。

評価版の試用可能期間が 30日とのことですが、同一マシンで継続評価することは可能でしょうか?

可能です。現在インストールされている PDF Tool API をコントロールパネルの「プログラムの追加と削除」を使用してアンインストールし、再度インストールすることで、評価期間が 30日間延長されます。

サンプルプログラムはありませんか?

ございます。PDF Tool API インストール後に、インストール先にある「Sample」フォルダー内に格納してありますのでご利用ください。

ASP での開発は可能でしょうか?

はい。可能です。.NET インターフェイスをご用意しています。

PDF Tool API V3.1 / PDF Driver API V3.1 はマルチスレッドに対応していますか?

マルチスレッドに対応していません。PDF Driver API については V5.0 からマルチスレッドに対応しました。

PDF Tool API V3.1 は、サーバー仮想化プラットフォームの「Hyper-V」上で正しく動作しますか?

はい。「Microsoft Windows Server 2008 R2 Datacenter SP1」に搭載された「Hyper-V」で動作することを確認しました。

PDF Tool API をサーバーに組み込んで、これをユーザー(一般社員)が使おうとしたとき、サーバーとクライアント間ではどのような遣り取りが発生しますか?

サーバー上に PDF Tool API を使用したアプリケーションを配置し、これを複数のクライアントが使用する場合、アプリケーション自体はサーバー上で動作しますので、クライアントとの遣り取りは発生しません。入出力ファイルがクライアント側にあるものであれば、ファイルの読み書きがサーバーとクライアント間で行われます。

PDF Tool API V3.1 は、Citrix XenApp環境上で正しく動作しますか?

はい。以下の環境で動作確認を行っています。
  Microsoft Windows Server 2008 R2 リモートデスクトップ 上の Citrix XenApp 6.0
  Microsoft Windows Server 2003 ターミナルサーバ 上の Citrix XenApp 5.0
  (クライアントOSはWindows 7、Windows XP)

動作環境が「Hyper-V」のような仮想OSやCitrixなどのシンクライアント環境の場合、どのライセンスになるのでしょうか?

「サーバーライセンス」となります。

機能について

フォントが埋め込まれたPDFから埋め込みフォント情報を削除することはできますか?

フォント情報を削除することはできません。

PDF の分割にページ数の上限はありますか?たとえば、10万ページの PDF を 1ページずつ分割することは可能でしょうか?

分割処理にページ数の上限はありません。10万ページの PDF を 1ページずつ分割することも可能ですが、「ページ単位で分割する機能」はご用意しておりませんので、PDF Tool API を利用してプログラミングしていただく必要があります。

PDF の結合にファイル数やファイルサイズの上限はありますか?

一度の結合で指定できるファイル数の上限は 500 ファイルです。それ以上のファイルを結合する際には処理をわけてください。 なお、コマンドプロンプトには文字数の制限があります。それについては下記の Microsoft のホームページをご覧ください。
コマンド プロンプト (Cmd.exe) コマンド ライン文字列の制限

PDF の用紙サイズには上限や下限はありますか?

PDF の仕様にはありませんが、それを表示するアプリケーションには制限があることがあります。たとえば、Acrobat 5 では以下の上限が設けられています。

  • 最小:3 by 3 units (approximately 0.04 by 0.04 inch)
  • 最大:14,400 by 14,400 units (200 by 200 inches)

PDF Tool API の出力ファイルに入力ファイル(入力ファイルと同じパス・同じファイル名)を指定することはできますか?

PDF Tool API では入力ファイルへの上書きはできません。もし出力結果を同一パスへ出力される場合には、入力ファイルとは異なるファイル名で出力してください。

リニアライズしてもファイルサイズが小さくなりません。最適化とはファイルサイズが小さくなるのではないのですか?

リニアライズ(「Web 表示用に最適化」)とは、PDF のファイルサイズを縮小するものではなく、Web 経由で PDF を閲覧する際にできるだけ早く表示するための機能です。詳しくは以下の弊社ブログをご覧ください。
リニアライズドPDFとは(2006/7/3)

添付ファイル付きの PDF を結合処理したところ、作成された PDF では添付ファイルがなくなってしまいました。

PDF Tool API の結合処理では、注釈として添付されたファイルは出力結果に反映されますが、注釈ではない添付ファイルは出力結果に反映されません。

署名付きの PDF を編集(分割や結合など)することは可能ですか?

編集は可能ですが、署名データは無効になってしまいます。

コマンドラインで PDF の用紙サイズを取得できませんか?

以下のようなコマンドで PDF 内各ページの用紙サイズを取得できます。単位はポイントになります。

AHPDFToolCmd30 -outlineFile -d D:\input.pdf -oinf 用紙サイズを取得したいページ番号

PDF 文書の各ページに「ページ数/総ページ数」という文字列を挿入したいのですが、PDF Tool API V3.1 で可能ですか?

可能です。PtlToolPage クラスの writeString() メソッドを使用してください。このメソッドで矩形領域へ文字列を出力することが可能です。

PDF Tool API で、PDF のヘッダーやフッターに固定の文字列を挿入することは可能ですか?

PDF Tool API には文字列を透かしとして挿入する PtlParamWaterMarkText クラスがあります(コマンドラインだと waterMark オプション)。それを利用して実現することが可能です。

文字列出力(PtlToolPage::writeString)の関数へ改行文字("¥n")を渡しても出力で確認することができません。そこで自前で改行に関わる出力位置の調整を行いたいのですが、このときにテキスト文字列出力の幅や高さなどの必要な情報は取得出来ますでしょうか?

文字の幅は PtlToolPageのgetStringWidth 関数で取得でき、文字の高さは PtlParamFont に与える size がそのままの値となります。下記のコード(C++ インターフェイス)を参考にしてください。ここでは、"あいうえお" の横に "かきくけこ" が書かれ、一行下に "さしすせそ" が書かれます。

PtlParamInput aInput("C:\\input.pdf");
PtlPDFDocument doc;
doc.load(aInput);

PtlToolPage toolPage(doc);
PtlPages ptlPages = toolPage.getPages();
PtlSize pagesize = toolPage.getSize(0);

float fontSize = 14.0f;
PtlParamFont font("MS 明朝", fontSize, 400, 0.0f, 0.0f, false);

PtlParamString text1("あいうえお");
float stringWidth1 = toolPage.getStringWidth(text1, font);
PtlParamString text2("かきくけこ");
float stringWidth2 = toolPage.getStringWidth(text2, font);
PtlParamString text3("さしすせそ");
float stringWidth3 = toolPage.getStringWidth(text3, font);

PtlColorDeviceRGB color = PtlColorDeviceRGB(1.0f, 0.0f, 0.0f);

PtlRect rect1(0, pagesize.getHeight(), stringWidth1, pagesize.getHeight()-fontSize);
PtlRect rect2(stringWidth1, pagesize.getHeight(), stringWidth1+stringWidth2, pagesize.getHeight()-fontSize);
PtlRect rect3(0, pagesize.getHeight()-fontSize, stringWidth3, pagesize.getHeight()-fontSize*2);

toolPage.writeString(0, text1, color, font, rect1, 0);
toolPage.writeString(0, text2, color, font, rect2, 0);
toolPage.writeString(0, text3, color, font, rect3, 0);

PtlParamOutput output("C:\\output.pdf");
doc.save(output);

コマンドラインでテキスト透かしを付加する方法を教えてください。たとえば、ページの左上にMS ゴシックを 36ポイントの文字で『社外秘』と表示させたい。

次のようなコマンドラインになります。

AHPDFToolCmd31.exe -waterMark -d D:\in.pdf -o D:\out.pdf -wmText "社外秘" -wmFont "MS ゴシック" 36 d * * 1 -wmstcl 0 0 1 -wmblk 0 -wmodr 0

コマンドラインでイメージ透かしを付加する方法を教えてください。たとえば、ページの左上に BMP 画像を表示させたい場合はどうすればよいですか?

「イメージ透かし」は出力する領域の指定が必要です。たとえば A4 サイズのページに出力する場合は以下のようになります。

AHPDFToolCmd31.exe -waterMark -d D:\in.pdf -o D:\out.pdf -w D:\img.bmp -wmimg 1 -wmrct 0 700 195 841 -wmodr 0

PDF Tool API V3.1MR1 以降では、イメージ透かしでも -wmmgn や -wmscl の指定に対応しましたので、元 PDF の用紙サイズを意識する必要のない以下のような指定ができるようになりました。

AHPDFToolCmd31.exe -waterMark -d D:\in.pdf -o D:\out.pdf -w D:\img.bmp -wmimg 1 -wmblk 0 -wmscl 100 -wmmgn 10 10 10 10 -wmodr 0

PDF に挿入する透かしについて、パソコンでの閲覧時には表示せず、印刷時には表示する(印刷する)というようなことはできますか?

可能です。PtlParamWaterMarkPDF クラスの
 setDipslayWaterMark(false);
 setPrintWaterMark(true);
を使用してください。

PDF に半透明の画像や透かしを付けたら、本文の文字が太く表示されたり、色がくすんでしまいました。

この現象は Acrobat で半透明(透過)の透かしを付加した場合でも再現します(Acrobat 8 Pro を使用して確認しました)。Acrobat / Adobe Reader の表示上の問題です。また、本現象については、弊社ブログでも取り上げていますのでご覧ください。
PDF 千夜一夜:Acrobat8 半透明がPDF表示に与える影響

透かしと文字列の追加では、機能や処理結果にどのような違いがありますか?

透かし(ウォーターマーク)の場合、指定したページで共通の情報が使われますが、文字列の追加では各ページ毎にオリジナルな情報が使われます。また、透かしの場合はビューアアプリケーションで表示するかしないか、印刷するかしないかの指定が可能です。

ファイル添付注釈で添付するファイルの数や容量に制限はありますか?

ありません。

ファイル添付注釈で添付するファイルの形式に制限はありますか?

ありません。ただし、Acrobat や Adobe Reader で EXE や zip 形式のファイルを開こうとしても警告が出て開いたり、保存したりすることができません。これはビューア側の仕様です。

コマンドライン I/F でパスワードや文書情報の先頭に "-"(ハイフン)を指定することができません。

先頭にハイフンがある場合は、弊社のコマンドラインインターフェイスの性質上パラメーターと判定されてしまいますので、現状では仕様上の制限となります。

配信サーバから PDF をダウンロードした際に、ダウンロードした時点から一定期間の閲覧期間を PDF に設定できますか?

可能です。PDF Tool API の「有効期限設定」機能をご使用ください。

「有効期限設定」をした PDF は、閲覧する PC がインターネットに繋がっていなくても有効に機能しますか?

有効に機能します。ただし、PDF Tool API の「有効期限設定」は、Acrobat JavaScript とフォームの機能を使用して実現しております。そのためそれらの機能を実装した PDF ビューア(Acrobat/Adobe Reader など)では正常に動作しますが、そうでないビューアでは希望した動作になりません。

「有効期限設定」をした PDF は、閲覧する PC のシステムの日付を変更すると影響を受けますか?

影響を受けます。

「有効期限設定」をした PDF は、JavaScript を OFF としたビューアや、JavaScript が動作しないビューアで開いた場合、ファイルが見えてしまいますか?

PDF Tool API の「有効期限設定」は、Acrobat JavaScript とフォームの機能を使用して実現しております。JavaScript を OFF にした ビューアや JavaScript が動作しないビューアでは、常に閲覧制限の掛かった動作となりますが、フォームが表示できないビューア(フォーム非対応のビューア)では制限動作ができず、中身が見える状態となってしまいます。

SetExpiredPath で PDF に指定した閲覧可能なファイルパスを設定を解除する方法を教えてください。

解除はできません。

SetExpiredBeginDate, SetExpiredEndDate をそれぞれ複数回実行した場合、有効期限の日付の範囲は、最後に設定した日付が適用されるか、それ以外のルールで設定が反映されるのでしょうか。

最後に設定した日付が適用されます。

「This file is not PDF or may be corrupted.」というエラーメッセージがありますが、どのようなときにこのエラーメッセージを表示していますか?

一概に言えませんが、PDF Tool API が PDF として扱えないときにこのエラーになります。これらの PDF は大抵が Acrobat などでも開けません。ただし、Acrobat は開くときに自動で修復を掛けて開いてしまうこともありますが、そのような PDF も PDF Tool は壊れている PDF と判断します。

Active Server Pages(VBScript)から、COM インタフェースを使用してプログラムを実行したところ、「Server オブジェクト エラー 'ASP 0177 : 800401f3' Server.CreateObject に失敗しました」とブラウザーに表示されてしまいました。

このエラーは、COM を登録していない場合に発生します。COM の DLL が登録されているか確認をお願いします。もし COM 登録がされていない状態でしたら、登録後、マシンを再起動して、再度動作確認をお願いします。