9 返信 最新の回答 日時: Aug 27, 2007 10:58 AM ユーザー:(brazil)

    AcrobatSDKのサンプルの実行方法

      VC++2005で、PDFの印刷時にヘッダ情報を出力する機能を作りたくて、
      AcrobatSDKをダウンロードし、手始めに以下のサンプルをビルドしてDLLを
      作ろうとしたのですが、debugフォルダにDLLが作られませんでした。
      SDKの場合、DLLはdebugフォルダ以外の別の場所に作成されるのでしょうか?
      それとも、ビルドが失敗しているのでしょうか?
      画面上では成功したように見えたので、DLLがどこかに作られたと思うのですが…

      ・PluginSupport¥Samples¥CivilDiscovery

      ダウンロードしたSDKの中にある
      「PluginSupport¥Tools¥Visual Studio App Wizard¥setup.exe」は実行してあります。

      環境
      Win2000 SP4
      VC++2005
      Acrobat8.0
      Adobe Acrobat 8.1 SDK
        • 1. Re: AcrobatSDKのサンプルの実行方法
          Level 1
          ビルド方法は?
          VC++2005は知りませんがVC6.0では、デフォルト設定のプロジェクトの場合、debugビルドでないとdebugオブジェクトは生成されません。

          生成場所を調べるには、プロジェクトの設定を確認するとか、プロジェクトフォルダやオブジェクト名が判っているならファイル検索するとか、方法は色々あります。

          > それとも、ビルドが失敗しているのでしょうか?

          それはビルドメッセージを見ることができる、あなたにしか解りません。
          • 2. Re: AcrobatSDKのサンプルの実行方法
            Level 1
            bestie%再び病み上がり(リンゴ病)様、ありがとうございます。

            早速、オブジェクトの設定を確認したところ、debugフォルダに「〜.api」が生成されることがわかりました。
            ビルド後、debugフォルダを確認したら「CivilDiscovery.api」が生成されていました。

            AcrobatSDKと一緒にドキュメントもダウンローダウンロードしたので、サンプルの実行方法を翻訳しながら調べたのですが、どのexeを実行すればサンプル「CivilDiscover y」を試すことが出来るのか、わかりませんでした。
            私の調べ方が悪いだけかも知れませんが、ご存知でしたら、ご教示下さい。
            よろしくお願いいたします。
            • 3. Re: AcrobatSDKのサンプルの実行方法
              Level 1
              私のハンドルは、bestieのみで良いですよ。
              '%'以降は、現況を記しているだけですので。;-)
              さて、拡張子apiは、プラグインモジュールですね。

              1. プラグインモジュールを、例えばReaderの適切なプラグインフォルダに置く
              2. Readerを起動(プラグインがロードされる)
              3. VCのデバッガを、Readerのプロセスにアタッチ
              4. サンプルソースのAPIに入ってすぐに、ブレークポイントを設定
              5. そのプラグインが利用される操作を、Readerで行う
              6. ブレークポイントで停止するので、後はお好きに :-)

              ごく普通のDLLをデバッガで追う場合は、こんな感じです。Acrobatプラグインも実体はDLLですので、これでOKでしょう。
              5については全然知りませんので、ダウンロードされたドキュメントを参照してください。
              • 4. Re: AcrobatSDKのサンプルの実行方法
                Level 1
                bestie様、ありがとうございます。
                サンプルはどうにか動かすことが出来ました。

                ただ、今回やりたいのはプラグインではなく、exe形式での実装を考えています。
                apiのソリューションをexeに置き換えることは出来るのでしょうか?

                あるいは、具体的に言うとPDDocCreate関数やASTextFromScriptText関数を
                exeから使用することは出来るのでしょうか?
                • 5. Re: AcrobatSDKのサンプルの実行方法
                  Level 1
                  > 具体的に言うとPDDocCreate関数やASTextFromScriptText関数を
                  > exeから使用することは出来るのでしょうか?

                  質問の意図がよく解りませんが、普通に考えたら出来るんじゃないでしょうか。ソースが公開されているDLL内でコールしているAPIを、EXEからコールするだけのことでしょう?
                  どちらのAPIも私は用いたことがないのでお尋ねしますが、出来ないと思われる理由は何ですか? あるいは「こうしたけど出来なかった」という具体的な情報でも結構です。
                  • 6. Re: AcrobatSDKのサンプルの実行方法
                    Level 1
                    出来ないと思った理由はライブラリファイルが存在しなかったからです。
                    普通はヘッダとライブラリが用意されてて、リンクして、ライブラリの提供する関数を利用すると思うのですが、
                    AcrobatSDKにはヘッダはあるものの、ライブラリファイルは存在しませんでした。

                    英文だったので、時間がかかってしまいましたが、一緒にダウンロードしたドキュメントをひたすら翻訳し
                    再調査したたところ、以下のことがわかりました。

                    ・AcrobatSDKにライブラリファイルは存在しせず、Acrobatプラグインではライブラリは明示的には使用しない。
                    ・その代わりに、Acrobat本体がAPI関数を提供している。
                     提供方法としてはHFT(API関数のアドレスを示すポインタ?)で実現されている。
                    ・CoreAPI(Acrobatプラグインを開発する為にAbrobat本体が持っているC言語レベルのAPI)のヘッダファイルでは、
                     HFTの各要素(関数ポインタ)を、C言語のキャストとマクロ機能によりAPIの関数プロトタイプを宣言している。
                    ・プラグイン側はコレを参照してAPI関数を呼び出している。

                    ここまではどうにか解ったのですが、結局どうやったら使えるのかが解りませんでした・・・
                    (いろいろなサイト等を調べたら、OLEオートメーションを使用する?ようなことも書かれていたのですが、
                     OLEオートメーションが何なのかもわからず、今調べている最中です。)

                    長々と書いてしまいましたが・・・
                    ライブラリでは無くHFTで実現する方法をご存知でしたら、アドバイスをお願い致します。
                    何か参考になりそうなHPでも結構ですのでご教示下さい。
                    • 7. Re: AcrobatSDKのサンプルの実行方法
                      Level 1
                      なるほど、Acrobat本体がAPIを持つわけですか。確かにexported関数を、exeにも持たせることはできます。

                      Core APIのヘッダファイルでは、各APIがtypedefされていると推測します。ならばacrobat.exeをLoadLibrary()し、GetProcAddress()を用いるこ とで、各APIが利用できるようになるはずです。
                      もし各APIが無名関数でも、Dependency Walkerでの調査結果をCore APIヘッダファイルを突き合わせれば、関数アドレスが取得できたと記憶しています。

                      ただ、起動しているAcrobatを外部から操作したいのなら、プロセス間通信が必要になります。その場合はプラグインと外部exeを、COM、RPC、ソケット等で結ぶことになるのではない かと思います。

                      私はVCから離れて長いので、あとはVCのコミュニティでどうぞ。
                      Acrobat特有の話でしたら、遠慮なくこちらへ。;-)
                      • 8. Re: AcrobatSDKのサンプルの実行方法
                        Level 1
                        bestie様、ありがとうございます。

                        acrobat.exeではありませんでしたが、同じフォルダにあるdllをLoadLibrary()、GetProcAddress()し、
                        関数を取得することが出来ました!!
                        本当にありがとうございます。

                        ですが、コレだけではSDKは使えないようですので、またひたすら翻訳しながら再調査しているところです。
                        調査して、解らないことが出てきたら、またご教示をお願いすることもあるかと思います。
                        そのときは宜しくお願いします。
                        • 9. Re: AcrobatSDKのサンプルの実行方法
                          Level 1
                          以下は参考。

                          ・アドビ ソリューション パートナー プログラム
                          http://partners.adobe.com/public/asn/solutionpartner/detail.html?force-locale=ja-jp

                          ・よくある質問:アドビ ソリューション パートナー プログラム
                          http://support.adobe.co.jp/faq/faq/pasnfaq.sv

                          ・Developer Support Knowledgebase(会員専用)
                          http://support.adobe.co.jp/ds/faq/faqindex.sv

                          文書番号 : 2618
                          http://support.adobe.co.jp/faq/faq/qadoc.sv?2618+001
                          デベロッパーサポート関連の文書一覧