TOP > OLE objects and methods
はじめに
Acrobat OLE で連携するオブジェクト、メソッド、プロパティの一覧を図にした物です。
※オブジェクト(=機能単位)、メソッド(=命令)、プロパティ(=値)
当サイトを見る上で必ず必要になる図です。
オブジェクトの連携とは
Acrobat OLEで使用するオブジェクト用の変数は数種類存在します。各オブジェクト用の変数により使用できる機能が異なります。
その変数を使ってPDFファイルをオープンして、すぐに他の変数でそのPDFファイルを扱える訳ではありません。以下を御覧ください。
上記はobjAcroAVDoc でPDFをOpenしてobjAVPageView が操作します。
013 行目では objAcroAVDoc から「GetAVPageView」を使ってobjAVPageView 変数にSetしています。Set 無しでその後のobjAVPageView で「Goto(1)」や「GetPageNum」を実行すると実行エラーになってしまいます。
この「GetAVPageView」操作をオブジェクトの連携と言います。連携する命令(メソッド)名は何を使うか、この後で紹介する連携図で分かります。詳細は各オブジェクトの一覧(サイト右上の「Object & List 」)を御覧ください。
但し、AFromAut オブジェクトへ連携する Set は無く、事前にAVDoc オブジェクトを使ってPDFをオープンする事により連携します。
連携図
1つ目は当サイト管理者が作成して使用している連携図です。
項目が多くてちょっと見難いですが、当サイトで解説しているOLEが理解できてくると、コッチの方が見やすいです。綺麗なのが欲しい方はPDF でもダウンロード出来ますので、ソチラを見てください。
※↓クリックすると拡大表示します。
2つ目はSDKによって提供された物です。最初はこちらの方がシンプルで見やすいです。
これはSDK ver 8.1 のPDF解説書「iac_developer_guide.pdf (Developing Applications Using Interapplication Communication)」の30ページ(2016/03/01時点)にあります。
SDKの「Adobe Acrobat 9.0 SDK」のPDFファイルには上記の図は見当たらなかったです。入手するには「Adobe Acrobat 8.1 SDK」をダウンロードする必要があります。
※現時点(2013/10/11)でダウンロード出来るSDKは 9.1 X(10.0) のみですので、上記画像を印刷してください。
以下のWEBサイト(「Adobe Acrobat 9.1 SDK」)でも公開していますが画像が荒くて見にくいです。
注意点
当サイトに来たばかりでは意味不明かもしれませんが、以下はメモです。
- 以下のオブジェクトは他のオブジェクトの実行する時の引数に使われます。
Time , Rect , Point , HiliteList オブジェクト - 機能的には独立しているので、上記の連携図には有りません。
AcroPDFLib.AxAcroPDF オブジェクト - 以下だけはPDDoc からの連携専用のメソッドが存在しません。
AFormAut オブジェクト
この↑オブジェクトはPDDocの最新の状態に自動的に連携するようになっています。よって連携用のメソッドは存在しません。
参照
< TOPへ >
1.何をしようとしているのか?
①所定のフォルダにあるPFDファイルのページ数を取得して
ファイルの一覧を表示する。
②一覧に表示されているページ数から印刷するページを入力して
入力された該当ページを設定されているプリンタに印刷する。
③ダイレクトメールのような帳票があります。(請求書など)
大量のデータを受け取り帳票の所定の座標に対して入力データの項目を1ページごと
編集して印刷しています。
現状、紙に印刷していたものをPDFファイルとして作成する。
PDFの作成時は1ファイルのページ数および解像度、
出力時のファイル名は外部設定ファイルで指定する。
以上、3点を実現する必要があります。
2.開発環境 (利用しているツール)
1) Windows 7
2) Acorobat SDK
3) C++Bulder XE8
4) Acrobat DC
5) 他は使用しておりません。
環境はどうあれAcrobatのどのライブラリを使用してどの関数を使用すればようかまったく検討がつきません。
何かしらヒントなるものをご教授いただけないでしょうか。
サンタパパ さん
初めまして
>①・・
PDFのページ数取得は以下を参照。
ACROEXCH.PDDOC: GETNUMPAGES メソッド
※PDFの文書プロパティの概要タブにある 「タイトル」、「作成者」、「サブタイトル」、「キーワード」、「アプリケーション」、「PDF変換」、「作成日」、「更新日」の項目は以下を参照。
ACROEXCH.PDDOC: GETINFO メソッド
>②・・
当サイトに書かれているコマンドはデフォルトプリンターのみです。
プリンターを指定しての印刷は以下を参照。
ADOBE READER で PDF ファイルを表示 / 印刷する方法
なお、上記ルーチンを公開しているサイトが閉鎖?しているので、ココから臨時ですが見れます。サンプルのDLはココから一時的に出来るようにして置きました。
>③・・
>・・入力データの項目を1ページごと編集・・
文字を所定の場所に追加するので有れば、以下を参照。
AFORMAUT : FIELDS.ADD メソッド
>・・紙に印刷していたものをPDFファイルとして作成・・
元のファイル形式が仮にテキストとしても、当サイトではこの手の情報は無いです。ただネットの世界にはコマンドラインから「テキスト to PDF」なるモノがかなり有るので、それを流用すれば可能かと思います。
>PDFの作成・・、・・ページ数および解像度、出力時のファイル名・・
「ページ数の指定」は聞いいたことが無いです。但し、当サイトの「ACROEXCH.PDDOC: DELETEPAGES メソッド」で指定ページの削除が出来ます。出力後に不要ページの削除をしてみてはどうでしょうか。
「解像度の指定」はAcrobat本体からは出来ますが、プログラムから指定しての操作は判りません。過去にも似たような質問が有りましたが、その時は関係するレジストリの値を見つけ出し、事前に変更する様な返答ささせて頂きました。「site:pdf-file.nnn2.com レジストリ」又は「site:pdf-file.nnn2.com 解像度」でネット検索すると、当サイト内での関連記事が見れます。
Acrobat DC は未確認ですが、レジストリ「HKEY_CURRENT_USER¥Software¥Adobe」の下にAcrobatの各種情報が保存されているはずです。※
C++なら、itext(itextsharp.dll)などのオープンソースの使用も検討されたほうがイイかもしれません。
※itext はライセンスに怪しい部分が有るのでご注意下さい。
SDKにはCとC#のサンプルも入ってます。それもご覧ください。
日本語サイトでのプログラミング情報はほとんど無いです。英単語で海外のサイトを検索する方が早い場合も有るかもしれません。当サイトの情報の半分以上は海外サイトを参考にしました。
Adobe社はAcrobatアプリ本体の機能アップはしてますが、この手のプログラミング操作に関する情報は積極的に公開してません(と言うより、もうやってない)。SDK内容も古く、見てもかなり無理が有ります。よって他のソフトでコマンドラインから使用できるソフトを見つけて、それを内部で流用するのが得策かとも一部では思っています。
解決に少しでもつながれば幸いです。