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

このページでは『Antenna House PDF Driver API』について、よくお寄せいただくご質問を紹介しています。
『Antenna House PDF Driver』については、「PDF Driver よくいただくご質問」をご覧ください。
PDF Driver よくいただくご質問

ライセンス・保守に関して

保守契約を更新しないとPDF Driver APIは使えなくなるのですか?

いいえ、そんなことはありません。保守契約を更新していない場合でも、PDF DriverおよびPDF Dirver APIは利用できます。
ただし、保守契約期間終了後に公開された改訂版を適用したとき、改訂版は評価版として動作するため、出力されるPDFファイルの各ページには評価用の透かし文字列が挿入されます。

保守契約を更新しました。新しいライセンスファイルが送られてきましたが、どのように更新するのでしょうか?

【V8.0/V7.5の場合】
ライセンスファイルは以下のフォルダーに存在します。
 {PDF Driver V8.0のインストールフォルダー}\lic
 {PDF Driver V7.5のインストールフォルダー}\lic
このフォルダーに存在する「pdalic.dat」を新しいライセンスファイルで上書きしてください。

【V6.0の場合】
ライセンスファイルは、以下のレジストリに設定されているフォルダパスに存在します。
 キー名 : HKEY_LOCAL_MACHINE\SOFTWARE\AntennaHouse\PDF_Driver\6.0\API
 値名 : LicenseFile
「LicenseFile」の設定値であるフォルダパスに存在する「pdalic.dat」を新しいライセンスファイルで上書きしてください。

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

現状でインストールされているバージョンをそのまま使用する場合はライセンスファイルを更新する必要はありません。 ライセンスファイルを更新しなくてもこれまで通りに動作します。

ただし、保守契約終了後にリリースされた改訂版をご使用されると、出力されるPDFファイルの各ページに評価用の透かし文字列が挿入されます。 新しい改訂版をご利用になる場合には、保守契約の更新をご検討ください。

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

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

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

使用できる機能、動作環境に差はありません。

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

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

最新のバージョンで購入した場合、旧バージョンへダウングレードして使用する事は可能でしょうか? また旧バージョンを購入して、後から最新版へのアップグレードする権利はありますか?

はい、可能です。 ただし、改訂版のご提供期間が最新版よりも短くなっておりますのでご注意ください。
改訂版情報ページ

最新版へのアップグレードについても、保守契約が継続されている限り可能です。

PDF Driver APIの機能について

Excelファイルを変換すると印刷中ダイアログが表示されます。このダイアログを非表示にすることはできますか?

Excelは、印刷中に下記の「印刷中ダイアログ」を表示します。

Excel印刷中ダイアログ

このダイアログを非表示にすることはできません。
Wordにおいても同様の印刷中ダイアログが表示されますが、非表示にすることはできません。

PDF Driver API は、Word , Excel , PowerPoint , 一太郎の各ファイルをどのように起動してPDF出力処理をしているのですか?

PDF Driver API は、Word , Excel , PowerPoint , 一太郎の各アプリケーションのCOMを利用しています。入力ファイルの形式を判別して該当するアプリケーションのCOMオブジェクトを生成し、これを使用してファイルを開き印刷を行っています。

PDF Driver API はマルチプロセスあるいはマルチスレッドに対応していますか?

はい。マルチプロセスあるいはマルチスレッドから印刷処理を行うことができます。
ただし、PowerPointと一太郎についてはソフトウェアの仕様上、同一システム内で起動可能であるのはひとつのプロセスのみであるため、PDF Driver API内部では 処理がひとつずつになるよう制御を行っています。

複数のプロセスのユーザーが同一である場合や複数のスレッドで印刷処理を行う場合はあらかじめ、モデル名が
 【V8.0】 Antenna House PDF Driver 8.0
 【V7.5】 Antenna House PDF Driver 7.5
 【V6.0】 Antenna House PDF Driver 6.0
であるプリンターを、同時に印刷処理が行われると想定される個数分×2個程度を作成してください。
プリンターの複製は「プリンター追加削除ツール」
 【V8.0】 AHPD8_AddDelete.exe
 【V7.5】 AHPD7_AddDelete.exe
 【V6.0】 AHPD6_AddDelete.exe
で作成できます。

PDF 変換の並行処理は、コマンドラインから同一ユーザーでも実施可能でしょうか?

はい。可能です。
同時処理する場合は、必要を想定される数のプリンターを「プリンター追加削除ツール」で事前に作成してください。

サーバー上で Word や Excel を PDF に変換するシステムを開発したいと考えています。これらのファイルのハイパーリンクをそのまま活かして PDF 化したいのですが、PDF Driver API ではそのような処理が可能でしょうか?

はい。実現可能です。PDF Driver API には、PDF Driver のOfficeアドインボタンの機能を使用するインターフェースがあります。 アドイン変換により、ハイパーリンクをPDFのリンクに、 Wordの見出しをしおりに、文書のプロパティをPDFの文書情報に出力することができます。

PDF Driver APIで、テキスト文書を PDF にしたところ、Word でテキストを開いて出力したような結果になりました。なぜでしょうか?

PDF Driver API は関連付けされたアプリケーションからPDF出力を行うのではなく、変換元ファイルの中身から形式を判定しWord/Excel/PowerPoint/一太郎 各アプリケーションのCOMを利用して処理を行います。テキスト形式の場合、Wordを利用してPDF出力を行います。

convertFileで PDFファイルを出力すると、Adobe Acrobat Readerが起動してその PDF ファイルが開かれてしまいます。変換のみで Acrobat Readerが起動されないようにする方法を教えてください。

PtlParamCommonSettings クラスの「setViewAuto」に「FALSE」をセットします。
C++ APIの場合は以下のようになります。

PtlDrvConvert conv;
PtlParamDriverSettings settingsData;

PtlDrvString settingsFile( 設定ファイル名 );
int res = settingsData.load(settingsFile); //設定ファイルをロードする
if( res )
{
  PtlDrvException ex(res);
  wcout << ex.getErrorMessageJP().w_str() << endl;
  return res;
}
else
{
  PtlParamCommonSettings tempcommon(settingsData.getCommon());
  tempcommon.setViewAuto(FALSE); // FALSE -> PDF 作成後に開かない
  settingsData.setCommon(tempcommon);
  conv.setSelectSettings(PtlDrvConvert::SELECT_SETTINGS_CLASS());
  conv.setParamSettings(settingsData);
}
conv.convertFile( 省略 );

御社のサンプルコードを参考に「サイズ指定」を行ったのですが、Word や Excel に設定が反映されません。

正常な動作です。Word と Excel の場合は、ファイルが用紙サイズ持っていますので API で指定しても反映されません。テキストファイルについても API では Word を利用して印刷されるため、API で指定した用紙サイズは反映されません。

PDF Driver API の Delphi からの利用は可能ですか?

C++ インターフェースを利用してVC で C インターフェースのラッパー DLL を作成し、更に Delphi でラッパークラスを記述することで動作は可能です。

PDF Driver API を利用して、一太郎のマルチシートを 1つの PDF にしたり、複数の PDF に変換することは可能ですか?

できません。一太郎ファイルが複数シートを持っている場合は、カレントシート(=開いたときに最前面に表示されるシート)のみ印刷されます。

一太郎文書のシートが一太郎以外の形式であっても PDF にできますか?

PDF Driver API は、一太郎文書のカレントシートの形式が一太郎/Word/Excel/PowerPoint のケースで動作確認を行っています。Word/Excel/PowerPoint の場合は、動作環境にこれらのアプリケーションがインストールされている必要があります。また、以下の注意事項があります。

  • カレントシートが Word の場合
    • 1ページ目が出力されない場合があります。
      ※ これは、「ページ番号の書式」において「開始番号」を「1」に設定することで回避できます。
    • 2ページ目以降の数ページだけが出力される場合があります。
  • カレントシートが Excel の場合
    • 複数シートを持つファイルで印刷ジョブが分かれるケース(シートの「解像度」が異なる、など)では、出力 PDF が分かれます。
      例)test.pdf、test.pdf.pdf
  • カレントシートが PowerPoint の場合
    • PowerPoint ウィンドウが前面に表示されます。

※ カレントシートが Word/Excel/PowerPoint の場合は、一太郎がこれらのアプリケーションを操作して印刷処理を行っているため、上記の現象など印刷処理の問題に対して PDF Driver API 側では回避することができません。

PDF Driver APIを利用したプログラムで Excel ファイルを変換しようとしたのですが、「205」エラー(Excel でプリンターの選択に失敗)が発生します。なぜでしょうか?

PDF Driver APIは、Microsoft Office(Office) Word / Excel / PowerPoint 各アプリケーションの COM コンポーネントを利用しています。Office の COM コンポーネントを正しく動作させるためには、Office の「インストールオプション」-「Office 共通機能」にある「Visual Basic for Applications」がインストールされていなければなりません。ご確認ください。

PDF Driver APIを利用したプログラムをASP.NETで開発しています。サンプルプログラムの検証を行おうとしていますが、
「System.IO.FileNotFoundException:ファイルまたはアセンブリ 'PdfDrvNet80.dll'、またはその依存関係の 1 つが読み込めませんでした。指定されたモジュールが見つかりません。」
というメッセージが表示され実行できません。設定等の不足があるのでしょうか?
 ※V7.5の場合:PdfDrvNet75.dll
 ※V6.0の場合:PdfDrvNet4_60.dllまたはPdfDrvNet2_60.dll

PDF Driver APIの.NETインターフェースはC++インターフェースのラッパーとして作成されています。このため、動作にはC++ API用モジュールファイルが参照できるようになっている必要があります。システム環境変数「PATH」に、C++ API用モジュールファイルがあるフォルダパスを指定してください。

C++ API用モジュールファイル名
【V8.0】 PdfDrvAPI80AH.dll
【V7.5】 PdfDrvAPI75AH.dll
【V6.0】 PdfDrvAPI60.dll

PDF Driver APIを利用したInternet Information Service(IIS)上のプログラムからPDF出力を行うにはどのような設定が必要ですか?

※PDF Driver APIのサーバーサイドでの利用については制限事項があります。ご留意ください。
制限事項

PDF Driver APIを使用したプログラムをサーバーサイド(Microsoft Active Server Pages(ASP)、ASP.NET、Windowsサービス等)で実行するとき、Microsoft Officeアプリケーション(以下Office)に適切な権限が与えられていないとPDF Driver APIからオートメーションを利用することができません。
以下にその一例を示します:

・Officeへの権限の与え方
1) 「管理ツール」‐「コンポーネントサービス」を開く。(*1)
2) 「コンソール ルート」‐「コンポーネント サービス」‐「コンピューター」‐「マイコンピューター」‐「DCOM の構成」を開く。
3) Word の場合(*2)では、「Microsoft Word 文書」という項目を右クリックし「プロパティ」を開く。
4) 「ID」タブを選択する。
5) 「このユーザー」を選択し、「ユーザー」と「パスワード」を設定する。「ユーザー」には管理者権限を持つユーザー名を設定する。または、「起動したユーザー」を選択する。

(*1) 64bit OSで32bitのOfficeを使用している場合のコンポーネントサービスの開き方
1. コマンドプロンプトを起動します。
2. 次のコマンドを実行します。「mmc.exe comexp.msc /32」

(*2) 各アプリケーションに対する項目名(項目名は Office のバージョンにより異なります)
・Word : Microsoft Word 文書
・Excel : Microsoft Excel アプリケーション
・PowerPoint: Microsoft PowerPoint プレゼンテーション

・Internet Information Service(IIS)の場合
アプリケーションプールの「プロセスモデル」‐「ID」には、管理者権限を持つ「カスタムアカウント」を設定します。この「ID」に設定したアカウントと同一のユーザーを、上記のOfficeの権限のための「ユーザー」として設定してください。

※上記はあくまでも設定例であり、構築しようとしているシステム等によって異なる場合があります。設定の詳細については、WindowsサービスやIISなどについての文書、参考図書などを参照し、構築しようとしているシステムに応じた設定を行ってください。

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

製品版/評価版の「PDFDriverAPI\SampleCode」フォルダーにあります。

PDF Driver API を利用する際に動作環境に対して必要な設定はありますか?

V8.0/V7.5においては、必須となる設定はありません。

V6.0においては、ライセンスファイル(pdalic.dat)のために以下のレジストリキーと値を作成してください。
 キー名:HKEY_LOCAL_MACHINE\SOFTWARE\AntennaHouse\PDF_Driver\6.0\API
 値名と設定値:LicenseFile = pdalic.datのフォルダパス

PDF Driver API をサービスで利用するために Microsoft Office に DCOM の設定で ID とパスワードを設定したところ、サービスでは正常に PDF 出力できるようになりましたが、スタートメニューからの Excel 起動時に「OLE 機能は現在使用できません」と表示されるようになってしまいました。回避方法を教えてください。

本現象につきましては、DCOM 設定で Office に対して起動ユーザーID を設定したことが原因でOfficeの仕様と思われ回避方法はありません。

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

以下のページをご参考ください。
旧バージョンとの相違点

PDF 変換の並行処理を実施する場合、推奨する OS やスペックはありますか?

並行処理する分だけ Word や Excel 等のプロセスが動きます。そのため処理 1つあたり 50MB 程度の空きメモリが必要と考えられますが、ファイルやOfficeのバージョンによって増減します。

PDF 変換の並行処理に処理数の制限はありますか?

Word や Excel では特に制限はありません。
PowerPoint、一太郎は、アプリケーションの仕様により同時に 1ファイルしか処理できません。これらのファイルを処理する場合は API 内部でそれぞれシリアライズします。API を呼び出したスレッドには変換終了まで処理が返りません。 PowerPoint、一太郎の変換待ちの間でも Word、Excel の処理は続行します。

PDF Driver APIを使ったプログラムでOfficeファイルの変換を実行したら「153」というエラーが出ました。どのような場合に出ますか?対処方法はありますか?

発生するケースは、以下が考えられます。

  • A) PDFの生成途中で問題が発生している可能性があります。
  • B) ファイルにパスワードが設定されているときに発生する場合があります。
  • C) 複数の印刷処理を同時に実行している場合、同じファイルを同時に印刷しようしている可能性があります。

対処方法は以下をご参考ください。

  • A) 問題が発生するファイルとともにサポートにお問い合わせください。
  • B) パスワードを解除したファイルをご用意ください。
  • C) 印刷処理のタイミングを変える、ファイル名を別にするなど調整をしてください。

ユーザーがWordファイルなどのOffce製品を開く際、システム側でそのファイルをPDFに変換して画面表示することで、ユーザーはファイルをPDFとしてのみ閲覧可能となりファイルの編集をできないようにするシステムを構想しています。実現できる方法はありますか?

PDF Driver APIで実現可能です。
また、Office Server Document ConverterでもOffice文書をPDFへ変換が可能です。 こちらの製品は、動作環境にOffice製品がインストールされていなくてもPDFへ変換ができます。 PDFへのセキュリティの設定も可能です。

現在、弊社では、官公庁プロジェクトにおいて、一太郎ファイルをPDFファイルに自動変換する必要が生じております。 具体的には、外部プログラムからコマンドを実行し、インプットした一太郎ファイルに対し、自動的にPDFファイルが返却される仕組みを構築したいと考えております。

  • 一太郎ファイルのPDF変換の動作保証(対応拡張子、バージョン)はどの範囲まででしょうか?
  • 弊社は、オンプレ環境での構築を検討しておりますが、APIなどの実装は可能でしょうか?具体的には、冒頭に述べたようにプログラムにより一太郎ファイルをアップロードすると、PDFファイルが返却されるような外部コマンドの構築をイメージしております。

PDF Driver APIは、Microsoft Word,Excel,PowerPointのほかに「一太郎」にも対応しています。 対応バージョンは、一太郎 Pro4、一太郎 Pro5です。 対応拡張子は、「.jtd」です。

PDF Driver APIの内部で「一太郎」のCOMを利用してファイルのオープン、PDF Driverへの印刷処理を行っています。 呼び出し側では入力ファイルパスと出力ファイルパスを指定する程度の簡単なコードでプログラムの作成が可能です。 コマンドラインもあります。

PDF Driver API V6.0は、Windows Server 2022で動作しますか?

PDF Driver API 6.0はWindows Server 2022に対応しておりません。 Windows Server 2022はV7.5以降の対応になります。 保守契約期間内であればバージョンアップは可能です。

付属APIについて

複数のファイルを連続的に出力する場合、EndPrintイベントをもって出力処理完了とし、次のファイルの出力処理を行うという考え方でよいでしょうか?

基本的にはその考え方でよいです。
PDF Driver は印刷開始後、PDF ファイルを開き GDI 命令を受け取った順にPDF Driver内部のPDF Creator(=弊社のPDF作成ライブラリ) で PDF を生成していきます。生成処理が終了しファイルを閉じた後に、EndPrint イベント用の処理が行われるようになっています。したがって厳密には、PDF ファイル化が完了し(=ファイルは閉じられる)、その後に通知されることになります。

「出力先指定 API」(付属 API)と「PDF Driver API」の違いを教えてください。

「出力先指定 API」(付属 API)は、PDF Driver の出力先や印刷設定ファイルを指定するAPIで、印刷処理は行いません。したがって、出力先指定APIを使用する場合は、呼び出し側で印刷処理をプログラムする必要があります。

「PDF Driver API」は Word/Excel/PowerPoint/一太郎の各アプリケーションのCOMを利用して、PDF Driver API内部で印刷処理を行うことでPDFファイルを出力します。したがって、PDF Driver APIで扱うことができるファイル形式は限定されます。

出力先指定 API」(付属 API)で設定ファイルを指定しなかった場合(PDF の出力先のみ指定した場合)、設定ファイルには何が適用されますか?

PDF Driver の「印刷設定」ダイアログで指定されている設定ファイルが適用されます。

「出力先指定 API」(付属 API)で PDF の出力先を指定した際に、使用する PDF Driver の設定ファイルで「保存方法」に「出力先フォルダーを指定する」となっていたらどちらの設定が優先されますか?

「出力先指定 API」で指定されている出力先が優先されます。

「設定編集 API」(付属 API)を使用している弊社アプリケーション(A)と他のアプリケーション(B)から同時に PDF 出力した場合、(A)には「設定編集 API」で指定した設定が、(B)には PDF Driver の設定が反映されるのでしょうか?

いいえ。たとえば、(A)で「設定編集 API」を使用して設定した後、(A)から PDF 出力する前に(B)から PDF 出力した場合、(B)は「設定編集 API」で設定した内容で PDF を作成します。その後、(A)から PDF 出力しても「設定編集 API」で設定した内容では PDF 出力されません。PDF Driver の設定内容で PDF 出力されます。

出力先指定 API 使用時に、PDF Driver の設定ダイアログを開きましたが、出力先指定 API の指定が反映されていません。

出力先指定APIにより指定された出力先の内容はその直後の印刷処理が終了するとクリアされ、印刷設定に反映されることはありません。

「付属 API」は 32/64ビット 版が用意されていますが、どのように使い分ければよいでしょうか?

32bitのアプリケーションを開発する場合は32ビット版、64ビットアプリケーションの開発の場合は64ビット版の「付属 API」をご使用ください。

64ビット OS 上で「付属 API」を使用します。「付属 API」を使用するソフトが 32ビット であるため「付属 API」も 32ビット 版を使用します。この環境では PDF Driver は 64ビット 版がインストールされますが、このような組み合わせの使い方で問題はありませんか?

はい。問題ありません。「付属 API」を使用するアプリケーションが 32ビット なら 32ビット 版を、64ビット であれば 64ビット 版の「付属 API」をご使用ください。