サイトマップ

▼ サイトの紹介

このサイトはExcel VBAから、Acrobat  アプリケーションをプログラミング操作するOLE機能について解説しています。

Adobe社はこのOLE機能の事を「IAC」と表現しています。

(注意:Adobe Readerだけでは使用出来ません)

Adobe社提供のSDK資料を元にサンプルを加えて説明をしています。

サイト管理人もご覧下さい。

▼ 当サイトの使い方

当サイトをうまく使う上での手順を以下に示します。

  1. 最初に「Acrobat SDK:OLE objects and methods図を入手する」にあるオブジェクト連携図を手に入れます。出来れば印刷する方が見やすいです。1頁です。
  2. 下記の「Excel」、「Acrobat」、「ダウンロード」、「SDK」、「備考」にサッと目を通します。「その他&メモ」は特に見なくてもイイです。
  3. 自分が目的とする処理を探しながら、印刷したオブジェクト連携図を元にサイト記「Object & List」下を上からクリックしてザックリと内容を見ます。各オブジェクトのメソッドの詳細は後にして全体で何が出来て、何が出来ない(サポートされていない)かを把握します。
    Acobat OLE 以外の選択」も見て下さい。
  4. 目的が解決出来ない時は、キッパリとあきらめてAdobe社の日本語「Acrobatフォーラムで相談します。当サイトより質が高い。
  5. それでもダメなら、当サイトにコメントを入れてみます。サイト管理人がある程度、判る範囲でお答えをします。
    (お願い:管理人を「様」での呼び方はご遠慮下さい。管理人さん、で十分です。)

▼ Excel

  1. Excel からAcrobatを操作する訳
  2. Excel から PDFファイル を作成&操作出来る
  3. Excel のオブジェクトブラウザ
  4. Excel からAcrobatを起動する
  5. Excel からPDFファイルを起動表示する
  6. Excel サンプル:PDFの文書プロパティを表示する
  7. 上記7のサンプルファイルの実行エラー
  8. Excel VBA 実行エラー時のメッセージ
  1. Excel でOLEの参照設定をする
  2. Excel でOLEの参照設定をする (AFormAut の追加)
  3. Excel でOLEの参照設定をする (Stream の追加)
  4. Excel でOLEの参照設定をする (MSXMLの追加)

▼ Acrobat

  1. Acrobat SDK:OLE objects and methods図を入手する
    ここで示す図は必ず入手する必要があります。
    これが無いとオブジェクト連携が判らなく、OLE(IAC)操作が出来ません。
  2. Acrobatアプリケーションを閉じる(実は簡単に出来ない)
  3. Acrobat OLEのエラーを防ぐVBAロジック
  4. Acrobat OLE 使用上の注意事項
  5. Acrobatプログラミングにおける技術上の制約やライセンス上の制約
  6. PDFファイルを作成、及び操作する開発者に対しての注意事項
  7. Windows のコマンドラインから Acrobat や Adobe Reader を使用して印刷する方法
  8. PDFドキュメントの文書フラグとは
  9. PDF バージョンとは
  10. PDFバージョンの変化
  11. ExportTask.xml
  12. 一括で複数ファイルを処理(アクション、バッチ処理)
  13. PDF の3つのパスワード
  14. PDFのパスワードは32文字まで
  15. 印刷の問題点を解決
  16. PDF内での座標の起点
  17. Acrobatとレジストリ
  18. PDF上のテキストとその座標

▼ ダウンロード

  1. 各種サンプルのダウンロード
  2. Adobe Acrobat 9.1 SDK のダウンロード
    SDKをダウンロードしてサンプル、解説PDF,HTML等を入手する必要があります。
    Adobe Acrobat X SDK のダウンロード情報も入ってます。
  3. Adobe Acrobat 8.1 SDK のダウンロード
    この 8.1 バージョンのSDKは現時点(2013/10/03)で一般公開されてません。
    情報が入り次第、掲載します。
  4. Acrobat製品別ダウンロード先 URL
  5. AcroPDFLib.AxAcroPDF:Excel VBAサンプル(A)
  6. AcroPDFLib.AxAcroPDF:Excel VBAサンプル(B)
  7. Adobe Readerの各種バージョンのダウンロード

▼ SDK

  1. AcrobatプログラミングにおけるMenu and Toolbar Button Names 一覧
  2. PDDocのGetJsObjectのオブジェクト構造図が見当たらない
  3. Acrobat SDK:正誤表
    Acrobat SDK v8.1ドキュメントに記載ミスが有ります。
  4. Acrobatに関するSDKが Acrobat Developer Center からダウンロード出来ます。
  5. Acrobat JavaScript における「Safe Path:セーフパス」についての注意事項
  6. Acrobat SDK公開Webサイト URLの取得方法

▼ 備考

  1. JavaScriptの解説はAcrobat v7 v8 共に英語版です。しかし、旧バージョンですがコメントを頂いた方から日本語版のAcrobat JavaScript解説PDFが見つかりました。以下がそのPDFです。
    http://www.adobe.com/jp/support/products/pdfs/acrojs_j.pdf
  2. [2009/1/7] AcroExch.AVDoc:Open メソッド でバグ?を発見しました。Acrobat v8.1.3 v9.0が対象です。

 

▼ その他&メモ

  1. OCR機能:読んde!ココと比較した結果
  2. アドビ(Adobe)製品に関するRSSの情報
  3. 添付ファイルの扱いには注意が必要
  4. AcrobatはPDF作成ソフトの標準では無くなる?
  5. Acrobat PDF は国際標準化された
  6. 手書きPDF入門」 リンク
  7. planet pdf (PDF関連の英語サイト) リンク
  8. デフォルトプリンタを一時的に変更する方法
  9. Delphi(デルファイ,デルフィ)言語からの使用方法
  10. Acrobat使用時のレジストリ変化を取得する方法
  11. オブジェクトは値では無く、参照情報を持つ
  12. Adobe Reader で PDF ファイルを表示 / 印刷する方法
  13. サンプル:RGB値の一覧(カラー番号)
  14. 「・・このバージョンの Acrobat ではサポートされていない新しい形式・・」警告メッセージへの対応

▼日本語の資料

日本語版で公開されている技術情報が非常に少なく、また対応バージョンも古く、作成年度も古いのが多いです。しかし、PDF 又はAcrobat のエンジニア向けの基本的な技術はこの10年間はそれ程進歩していません。よって思った以上に使える事に気がつくはずです。

公開されている情報は今後消滅すると予想されます。必要な情報はバックアップする事をお勧めします。

▼ Acrobat SDK 関連

  1. Acrobat JavaScript Object Specification バージョン 5.0.5
    テクニカルノート# 5186 改訂日:2001年9月14日
    (297頁) Acrobat 5.0 JavaScript リファレンスマニュアル。
    PDF ドキュメントでJavaScript を使用するために必要なすべての情報。
    ※2018/10 リンク先は消滅しました。
  2. Developing Acrobat Applications Using JavaScript
    Adobe Acrobat SDK バージョン 8.0

    (220頁) JavaScript を使用してAdobe Acrobat での開発や拡張したりする方法について
    説明したマニュアル。必読!
  3. JavaScript for Acrobat 3D Annotations API Reference
    Adobe Acrobat SDK 2007年4月バージョン 8.1

    (105頁) 3D 機能(3D注釈のJavaScript API)をユーザに提供したい開発者を対象にしたマニュアル
  4. Parameters for Opening PDF Files(日本語版)
    Adobe Acrobat SDK Version 8.1 April 2007

    (8頁) PDF ファイルをURL やコマンドの中で開く際に使用できるパラメータについて説明したマニュアル
  5. Adobe Acrobat Workshop
    (78頁) Acrobat 7.0 JavaScript、API、IAC等の開発環境に関する概念の説明図
  6. Adobe Acrobat 7.0 Acrobat JavaScript Scripting Guide 2005年1月7日
    (276頁) Acrobat JavaScript を使用して開発したり拡張したりする方法について簡単に説明ししたもの
  7. Programming Acrobat JavaScript Using Visual Basic
    Technical Note #5417 バージョン:Acrobat 6.0 2003年5月

    (14頁) Acrobat 6.0 提供のJSObject と言うOLE オートメーション機能のプログラミング環境に関しての概念を説明したもの
  8. Acrobat JavaScript Scripting Guide
    Technical Note #5430 バージョン:Acrobat 6.0 2003年5月

    (90頁) Acrobat 6 Pro に搭載されている JavaScript 開発環境を使用して Acrobat アプリケーションを開発したり拡張したりする方法を簡単にまとめたもの
  9. Upgrading Plug-ins From Acrobat 5 to Acrobat 6
    Technical Note #5424 バージョン:Acrobat 6.0 2003年7月

    (28頁) Acrobat 6 API の概要を説明し、Acrobat 5 およびそれ以前のプラグインを Acrobat 6 にアップグレードする際に開発者が理解しておくべきことについて説明したマニュアル
  10. Adobe® Solutions Network Developer Program FAQ for Members
    Version 3.0 MAY 2002

    (461頁) ASNディベロッパーサポートプログラム会員から頂いたAcrobat Plug-in API,IAC,Readerに関する質問を整理した情報
  11. Acrobat Developer FAQ
    Adobe Developer Relations 改定:1999年9月2日

    (37頁) 質問および回答形式を整理した情報
  12. Parameters for Opening PDF Files(日本語版)
    Adobe Acrobat SDK Version 8.1 April 2007

    (24頁) Acrobat SDK でよくある質問と回答を整理したもの
  13. Adobe Acrobat 7.0 Acrobat SDK ユーザガイド 2004年12月14日
    (124頁) Acrobat SDKで提供されている機能、Acrobatで提供されている機能とその操作説明等
  14. JavaScript for Acrobat API Reference
    Adobe Acrobat SDK バージョン 8.0

    (765頁) Acrobat JavaScript の詳細な解説書/リファレンス

▼ Acrobat 一般資料

  1. Adobe Acrobat Security ディベロッパーサポート 2005年4月7日
    (43頁) Acrobat 7.0 の各種セキュリティに関する概念

管理人の独り言

  • 2010/4/26 「Appメソッド一覧」移行完了。かなり見直したので、結構解説が難しくなってしまったかも・・。全部の移行が完了したら、再度見直す事にして、次に行きます。
  • 2010/5/14 データの移行と再リンクが終わりました(汗)。サイトマップの構成も少し見直して・・。後は見直し(リニューアル)する必要有り。OLE(IAC)の全貌が判った時点で細かい部分の追加が必要となった。各頁にかなりの追加と再テストが必要だが既に環境は出来あがっている。本当の踏ん張ると事はココからかもしれない。
  • 2010/5/18 Appオブジェクトの移行が完了しました。
  • 2012/11/12 AFormAut オブジェクトが IAC に含まれていない盲点に orz
  • 2013/10/14 JavaScriptAPIと言う当サイト独自の表現を JSObject と本来の表現に変更する。
  • 2015/5/9 サイトのレイアウトを変更。

▼ Acobat OLE 以外の選択

Adobe Acrobat OLE(IAC)以外で、PDFファイルをプログラミング操作する情報を以下に提供します。

VBA の Shell 関数(又はWscriptのExec関数)で起動する事により、IACには無い機能で複数ファイルの自動化処理が可能だと思われます。

  1. Qpdf
    PDF をコマンドラインで操作するツール
    セキュリティ(パスワード)の設定が出来る!
  2. Poppler
    PDF をコマンドラインで操作するツール
    Xpdf をペースした機能拡張版
    注意:公式サイトからはWin版EXEは配布されてません。
  3. pdf2htmlEX
    PDF をHTMLへ変換する高性能なツール
  4. Coherent PDF Command Line Tools
    非常に多機能なコマンドラインツール
    ライセンスに注意が必要
  5. Xpdf
    PDF をコマンドラインで操作するツール
    Popplerの旧バージョン。安定版。
  6. PDFtk *  ※検証予定(時期未定)
    PDF をコマンドラインで操作するツール  
  7. PDFill PDF Writer: PDF作成ツール
    コマンドラインの使用は有償版のみ。
    無償版と有償版。表示は英語。
  8. ★その他の各種ソフトとツール★
    各種のPDFソフトウェアを一覧でまとめたサイトです。
    たぶん、ココの情報が最新で内容も充実してると思われます。

[コメント入力] <-をクリックするとページの最後にコメント入力が出来ます。
名前(ニックネーム)は必須。メールアドレス(非表示)も必須ですが、適当で結構です。

【更新日:2019/06/05 (11版)】

「サイトマップ」への209件のフィードバック

  1. 昨日投稿した者です。すごく早いレスポンスにびっくりしています。
    ご存知でしたら教えて頂きたいのですが、AVDoc メソッド一覧等の内容は、Adobe Readerのバージョンが替わっても大きく変わらないと考えてよろしいでしょうか?
     Adobe Readerを利用したPDF自動印刷ツールを作成したいのですが、Adobe Readerのバージョンに関係なく正しく印刷されるようにしたいのです。
    コマンドライン引数ではバージョンによって動きが異なりますので、adobeSDKまたはJavaScriptで組むことを検討しております。

  2. FANさん。先日は御指南のコメント、ありがとうございました。教えていただいたPDFから、他の箇所も変更が必要かと思っています。
    質問の件ですが。
    ・「AVDocの件」は、メソッドやプロパティの追加はあっても、無くなる事は無いと思います。ただ、Adobe社は現在他の分野に手を広げているのでAcrobatのバージョンアップ速度は鈍くなると勝手に予測しています。それか名ばかりのバージョンアップは有るかもしれません。※MSが良く使う手です。
    ・「PDF自動印刷ツールの件」は、どのような環境で考えているかは判りませんが。私だったら、現在の自分のAdobe Readerのバージョンを判断して、DDEで操作するか、コマンドライン引数を生成し実行させるかです。 
    Adobe SDKは避けます。後の引継ぎやバージョンアップの時に手間が掛かる様な気がします。SDKは情報が多すぎるのが難点です。
    JavaScriptは使い方によっては一番いい選択肢かもしれません。ネットにはサンプルも多いですから、対応がしやすいかと思っています。
    余談ですが。
    私がシステムを考える時は、FANさんの様に後のメンテナンスを最優先にします。資料が無くても直ぐに修正できる。その手助けをするのがロジックに入れる「コメント」です。
    余談ですが。(その2)
    現在、NORITOはAIR開発で多忙です。未知の分野と格闘しています。よって、当サイトのメンテナンス(記事追加)は6月以降を考えています。

  3. こんにちわ、サイト運用お疲れ様です。
    このサイトは本当に勉強になりました。
    仕事でどうしても実現したかった機能が
    このサイトを見ることで実現できました!
    本当にありがとうございます。
    お忙しいとのことですので、ヒントだけでも
    教えて頂ければと思うのですが、PDFを
    読み込んでテキスト化ではなく、Adobe
    Professionalにある機能のように
    HTML化をシステム的に実現するのは可能
    でしょうか?またその場合どんな方法を使え
    ばいいでしょうか? 
    あつかましくお願いしてしまい申し訳ありま
    せん。 サイト本当に参考になりました。あ
    りがとうございます!

  4. かまあげさん。
     取り合えず、判る範囲で即答させて頂きます。PDFのHTML化の件ですが、前提条件があります。
    ・透明テキスト化されているPDFで有る事
     Adobe Acrobat Proには画像PDF(文字が画像になっているPDF)に対して、OCR機能がありますが、これは正直使い物になりません。認識率は良くて85%。悪くて、無い方がイイ=5%程度。結論としてはまったく頼れない。(=泣きたいぐらいの時もある。)
     それでまずは本体でテストしてみました。Acrobat Pro 8.1.2で「透明テキスト化されているPDF」を「名前を付けて保存」で形式をHTMLにすれば、HTML化で保存できます。但し、基本のPDFとは表示がかなり変わります。内容のテキストは全てHTML化されます。目次が有る無しに関わらず、先頭ページに目次が追加されています。試して見てください。
     なお、Google検索結果画面にPDFをHTML表示しているのがありますが、多分同じ事をしていると予測しています。
     OLE操作でどこまで出来るかは次回返答させて頂きます。

  5. <独り言>
     みんな、PDFで泣いているみたいですね。
    去年したバカみたいな仕事はPDFファイルの分割です。容量がデカイのを探して、分割する。そしてWEBから見れるようにする仕事でした。サーバーに登録するのはツールを使って。
     分割は人間様でした。(泣)

  6. さっそくの返信ありがとうございます。AcrobatのHTML化レベルでまったく問題ないです。私自身もなんとかOLEを使っていろいろ試してみましたがやり方がわからず。。。といった感じです。
    人間様で分割って大変でしたね! 私は今、
    大量のPDFファイルを自動ダウンロードする仕組みを作り、そしてHTML化するという仕事をやってます。 このサイトのおかげで半分できました! 

  7. かまあげさん。
    質問があります。
    Q1)社内開発か、受託開発か?
    Q2)開発言語は? VBA、それ以外か?
    Q3)Q2と同じですが開発環境について詳しく
    Q4)フリーソフト等の流用は可能か?
    Q5)納期は? ※一番聞きたくない事・・。
    公開できない部分は書かなくて結構です。
    上記の内容によって方向性が変わります。
    AcrobatのメニューをOLE操作する時に「SaveFileAs」指定で「名前を付けて保存」までは分かっているのですが、確か、この時点でVBAがダイアログを出すだけで、VBAスクリプトが一旦止まります。OK,キャンセル等のボタンを押さない限り、VBAスクリプトが次の命令を実行しません。(※確かそうだった。) それに対して別のアプリでそのダイアログを自動操作する事が出来るはずです。
    と、言う事で残りは質問の返答を待ちましょう。

  8. AcrobatとReaderの相違を自分でも調べてみました。
    Adobeのサポートページに
    「Visual Basic を使用した Adobe Reader の制御について」
    http://support.adobe.co.jp/faq/faq/qadoc.sv?2556+001
    というのがありSDKの7.05のファイルの中にあるIACOverview.pdfに以下の3つの記述を見つけました。
    1. Acrobat Support For Apple Events
    NOTE:Acrobat supports all of the above events, but Adobe Reader supports only the four required events: open, run, print and quit.
    2. Differences Among the Acrobat Applications
    Acrobat supports all of the OLE automation methods listed in this chapter and in the Acrobat Interapplication Communication Reference. Adobe Reader does not support OLE automation, except for the PDF browser controls provided in the AcroPDF object.
    3. Differences Among the Acrobat Applications
    Adobe Reader supports only the following DDE messages: AppExit, CloseAllDocs, DocClose, DocGoTo, DocGoToNameDest, DocOpen, FileOpen, FilePrint, FilePrintEx, FilePrintSilent, and FilePrintTo.
    Adobe Readerを使用する場合はこれ以外の機能は一切動かないと言うのが現状のようですね。Windowsではブラウザから操作する一部機能とDDEのみで、あとはサポート外のコマンドライン引数と言うことになりそうです。最初にDDEというヒントを頂いていながら深く考えずにサンプルソースを動かそうと四苦八苦しておりました。

  9. FANさん。
    情報提供ありがとうございます。
    Adobe Readerに関してはOLE操作が出来ない事はある程度サンプル実行で確認していました。DDEは手軽ですが、デバッグが難しい。しかし、Windowsが提供しているOLEも実は内部ではDDEが動いている事は多分皆さんは知らないと思います。OLEはDDEを駆使して動いている、なんて最初は馬鹿な話と思いましたが、事実です。
    OLEもOSのバージョンアップ等に沿って仕様が変わっているかもしれません。DDEを使わなくなっているかもしれませんが、その手の情報は未確認です。
    FANさんが最終的にどれを使うかは予想できませんが、上記のURL内容から見ると、OLEが妥当なのかな?
    いや、やはり手堅い「コマンドライン引数」だな。しかし、それだと完了ステータスが得れない。ああ~、やっぱ、OLEだ!
    ※VB.NETからOLEがイイかも・・。SDKにサンプルもあるし。

  10. Adobe Reader 6.0 なんて、いまだに使っているのはあるのかな?
    ・・あるかもしれない。(汗

  11. DDEサンプルテスト結果 20080520
    A simple wrapper to control Acrobat Reader from your application
    http://www.codeproject.com/KB/cpp/ReaderWrapper.aspx
    からDDEのサンプルソースをダウンロードして動作確認しました。
    少しは使えそうな感触を持ったので、報告します。
    1.ソースファイルの手直しとサンプルコード修正
    ダウンロードしたソースcppとヘッダをプロジェクトに追加して
    VC6.0++のMFC対応コンソールアプリを作成した。OSはWin2000Pro、
    WinXP_Pro/Homeの3つ混在でテストした。#include "sstpdf2.h"
    をコメントアウトし、コンパイルして実行すると、数十回実行し
    て1回か2回しか正しく動作しない。
    コンソールの動きを見ていると、最初のAdobeReader起動のところ
    で失敗している。コンソールには以下のように表示される。
    DDE Connection Failed.
    Command failed: [DocOpen("d:¥temp¥Untitled.pdf")]
    Command failed: [FilePrintSilent("d:¥temp¥Untitled.pdf")]
    Command failed: [DocClose("d:¥temp¥Untitled.pdf")]
    Command failed: [AppExit()]
    そこで、MessageBoxを挿入したり、色々確認したところ、以下のように
    ソースとサンプルを修正すると安定して動作するようになった。
    ・ReaderWrapper.cpp
    1).//#include "sstpdf2.h" コメントアウトしないとコンパイルできない。
    ダウンロードページのCompiling errorを参照
    2).Sleepの挿入
    「void CReaderWrapper::DocOpen()」関数の中で
    ASSERT((int)hRet >= 33);の直後に
    Sleep(300);
       最低でも300ミリsec以上の待ちを挿入しないと正しく動かない。
       また、AdobeReaderのバージョンによって最低の数値は異なる。
       私のPC:PenⅣ2.4GHz、1GBMemのHP_CompaQマシンでの結果。
    ・サンプルコード修正
     こちらも上記2).と同じく2箇所の「待ち」を入れた所安定して
     動作した。
    //Print the file without displaying any modal dialog box
    ReaderDemo.FilePrintSilent();
    Sleep(400); //400ミリsec程度以上の待ちを入れると安定した。
    //Close the document
    ReaderDemo.DocClose();
    Sleep(400); //400ミリ秒程度以上の待ちを入れると安定した。

  12. 2.テスト結果
    動作は、サイレント印刷ではなく、AdobeReaderが起動し、PDFファイルを
    一度開いた後印刷ダイアログを開かずに印刷し、PDFを閉じ、AdobeReaderが
    終了する。
    1).AdobeReader6.0.0~6.0.6
    私の手元にはAdobeReader6.0.0と6.0.1(フル版)があったので、残りは
    以下よりダウンロード。
    http://www.adobe.com/jp/support/downloads/acrwin.html
     AdobeReader終了時に必ずAcroRd32.exeのエラーが発生する。
     AdobeReader6はDDEの「AppExit()」コマンドに対応していないと思われる。
     AcrobatReader5.05で確認すると、正しく動作しているので、これはReader6
     でずっと改修されなかったバグと想定される。
    2).AdobeReader7(7.0.0~7.1.0、但し7.0.4、7.0.6は動作検証していない。)
     7.1.0はWinXP_SP2でもWindowsInstaller3.1へのバージョンアップを要求された。
     AdobeReader7は起動にかなり時間がかかる。テストの範囲では、1.で述べた
     3箇所のSleepの時間を適当に調整(増加)すると正常に動作する。
    3).AdobeReader8
     AdobeReader8は起動時に「操作ガイド」が表示されるので、予め起動しておき、
     「起動時表示しない」にチェックを入れる必要がある。
     8.0.0でDocCloseに失敗、時間を延長したり、MessageBoxを入れても変わらない。
     8.1.0(日本語版がないため、怪しげなミラーサイトより英語Full版をDL)
     8.1.0では、動作は更に重く、起動600ミリsec、その他650ミリsec程度まで
     時間を増やすと正常に動作した。
     8.1.1は上記英語版を全言語対応版Update.exeでバージョンアップした。動作は
     8.1.0同様問題なし。
     8.1.2日本語Full版も上記同様正しく動作した。

  13. 3.考察
    使用したPDFは1ページのごく簡単なサンプルである。ページ数が多くなると、
    正しく全ページを開き終わるまで待った後に印刷を実行する必要がある。
    これはダウンロードしたサンプルソースのレベルでは期待出来ない。
    また、印刷はデフォルトプリンタにしかできない。プリンタを指定できる
    コマンドとしてFilePrintToやFilePrintToExも利用できそうであるが、こ
    れでは印刷ダイアログが開くので自動印刷は?である。
    AdobeReader6を使う場合は、全てのバージョンでAppExit()コマンドで終了
    することは出来ない。
    AdobeReader8は8.0.0のみDocCloseに失敗した。

  14. FANさん。
    経過のご報告、ありがとうございます。
    >2).Sleepの挿入
    Sleepを使う手段は一時的にはいいかもしれませんが、環境が変わると時間を長くしないといけない場合が多々あります(過去の経験上)。よって、このSleep法の使用は避けた方がいいと思います。
    こちらでは今調べれる環境(知能?)が無いので分かりませんが、Acrobatは印刷している時に別のプロセスを起動していると予想しています。Microsoft の Spy++ で調べれないでしょうか? 開発環境がCならば他のプロセスの存在有無を確認できると思います。それがだめなら印刷前のCPU稼働率と印刷中のCPU稼働率から判断して次のPDF印刷に入るのも一つの手だと思います。CPU稼働率は確かレジストリにOSが随時書き込んでいるはずですからこちらの情報取得は楽かと。Sleepの替わりにするのです。
    >2.テスト結果
    どうせ作るなら「サイレント印刷する」の「オプション設定」にした方がイイです。人間様は目に見えないで動いていると不安になる性質を持ています。何かしら動いている所を画面に見せれば文句は言いません。見せないと文句を言います。(過去の経験上:汗)
    >AdobeReader7は起動にかなり時間がかかる。
    これは仕方が無いです。それが仕様みたいですから。
    >「操作ガイド」が表示・・
    これもレジストリに情報を保存していると予想しています。
    http://pdf-file.jugem.jp/?eid=109
    でも書きましたが、レジストリの動きを調べて、Acrobat起動前にレジストリ操作で一時的に表示させないようしてしまう事をお勧めします。なお、バージョンによって保存場所は違う事も予想されます。もちろん印刷が終了したらレジストリ値は元に戻す。
    >印刷はデフォルトプリンタ
    これも98時代からレジストリに情報があったはず。XPでも同じだと思うので、調査してみてはどうですか?
    >AdobeReader8は8.0.0のみDocCloseに失敗した。
    こうゆう事があるからソフト開発者は困るんですよね~。 メーカーに文句を言っても仕方がないから、印刷前にメッセージを出して、「AdobeReader8を8.1.2にアップデートして下さい!」要求で逃げた方が楽です。
    こちらでは「Microsoft Virtual PC 2007」を使って今はテストをしています。メモリは3G有るので余裕です。ただHDDの方が余裕が無いです。(汗
    それとFANさんの開発経過はこちらではなく、このサイト(実はブログ)の様にしてサイト公開してみてはどうでしょうか? もっといい意見を言ってくれる人が出てくると思います。こちらでリンクを張ってあげても結構です。Acrobat関連の操作に関しては、結構関心が多いです。このサイトのアクセスをみるとそれがよくわかります。2~3ヵ月更新しなくても毎日200~400アクセスはあります。この手のサイト・アクセスに詳しい人に聞いたら、更新しなくても日に200以上あれば上出来と言っていました。

  15. レジストリ操作についてですが、
    http://pdf-file.jugem.jp/?eid=109
    でも書きましたが、Acrobatは起動前にレジストリを読み込んで、起動中はレジストリを見ていません。よって、起動後にレジストリを変更しても意味がありません。
    そしてAcrobat終了時(メモリからプロセスが消える時)にレジストリへの書き込みをしているみたいです。これはテスト結果からの判断です。注意して下さい。

  16. 管理人様
    お世話になっております。勝手にサイトの趣旨とは異なる投稿をして申し訳ありません。
    にもかかわらず、早速色々丁寧な助言を頂きありがとうございました。頂いたご意見を参考にもう少し試してみたいと思います。私自身も実環境でsleepに頼るつもりはありません。動作確認と比較の都合上利用しました。
    おっしゃる通り独自サイトにアップする件も場合によっては検討いたします。但し仕事の関係で検討しておりますので、どこまで公開できるかは分かりません。

  17. Readerの方は未確認ですが、Acrobatは変な終了(Acrobatの各種オブジェクトを解放しないで強制終了)をするとメモリ上にプロセスを残して終了したかのようになっている時があります。とにかく印刷前はメモリ上のプロセスの存在を確認して、「Readerを終了するか、パソコンを再起動して下さい」等のメッセージを最初に出した方が確実でしょう。それか内部エラー等で強制終了する時は必ずすべてのReraderが開いているPDFを全て閉じてオブジェクトを解放する。
    ダイアログが出ている時は何も出来ないな・・。
    その時は強制解放コマンドでプロセスを落とす!(コワ
    「お仕事」ですか。
    会社に最大限のメモリ増設をお願いしましょう。フリーの「Microsoft Virtual PC 2007」を利用して各種環境(OS+Reader)の作成する事をご提案します。

  18. 管理人様
    DDEのサンプルソースをいじくり回し、少し使える関数を増やしたりしてみましたが、結局DDEでAdobe Readerをコントロールするメリットは、ページめくり機能程度しかありません。これは、私の利用目的では意味のない機能です。
    しかもサンプルソースは、よく見ると最初のDocOpen関数の中で「ShellExecute」を「open」パラメータ付で実行しており、この部分は本当にDDEをつかっているのかどうか怪しいところがあります。なぜこうなっているのかと言うと、Adobe Readerを使用する場合には、DDEでもAdobe Readerを単純に起動するAppShowコマンドが使えないための苦肉の策のように思われます。
    私の目的であるPDF自動印刷機能の実現のためには、どうせ「ShellExecute」を実行するならDDEを全く使わないで、「print」パラメータ付で初めから実行すればよいことに気付きました。試しに表示状態パラメータで「SW_HIDE」をつけて「ShellExecute」を実行しましたが、Adobe Readerは無視して起動します。
    この関数を呼ぶだけで、Adobe Readerを起動し、PDFファイルを開く、印刷する、ファイルを閉じるまで実行してくれます。
    あとは、印刷終了後に残った空のAdobe Readerを閉じればよいので、Adobe Readerのプロセスが存在する場合のみAPIを利用してWindowsスプーラをチェックし、印刷ジョブがなくなればAdobe Readerを強制終了することにしました。
    あとはデフォルトプリンタを変更したり、障害系(異常系)の処理を組込む必要がありますが、要素技術的にはこれで利用できそうです。
    結果としてDDEは全く使わず、コマンドラインと何ら変わらない操作になってしまいました。Adobeのサポートフォーラムなどを見ますと、Adobe Reader7以降はコマンドラインからもサイレント印刷は出来ない(8.0までは/cjsという隠しコマンドがあったようです)そうなので、不特定のユーザに利用される可能性のあるツールとしては、仕様上これ以上はできないと判断します。
    勝手な書き込みにも関わらず色々ご教示頂きありがとうございました。

  19. FANさん。ご苦労様です。
    >Readerは無視して起動します
    何かまだ足りないものがあるか、公開されている情報に誤りがあるか・・。
    >・・/cjsという隠しコマンド・・
    昔、MSも「隠しAPI」を持っていて、世界中のエンジニアから非難を浴びた事があります。
    知っていてもこの手の物には手を出さない方がいいです。仕様を勝手に変更される。
    どちらにしても、PDF印刷に関してはDDEは「×」と言う結果ですか・・。残念と言うよりは、こちらは「ショック」状態です。印刷関連のメソッドはパラメータがややこしく、その時はプリンターの調子も悪かったので全般的に未サンプル状態でした。無理をしてでも手掛けた方が良かったの、か。 申し訳ないです。
    どちらにしても、会社側から見れば「納品日」を押した紙切れ1枚が重要なので、とにかく先に進むしかないですね。
    ここでFANさんが書かれた事は全体の1割にも満たさない情報だと予測しています。残りの9割を見てみたい気はしますが、「会社」ソフトでは無理か。
    ここまでの経過だけでも1サイトを立ち上げればみんなが喜ぶはずです。
    (イヤ、当サイトから見れば脅威です)

  20. <環境>
    Windows Xp
    office2003
    Adobe Acrobat 8.0 Profssonal
    <参照設定>
    Adobe Acrobat 8.0 Type Library
    PDFファイルのドキュメントをテキスト変換(文字列として取得したい)したいのですが、どの関数を使えばいいのでしょうか?

  21. 初めまして、mzと申します。
     こちらのHPでいろいろと勉強させていただいております。
     もしかしたら既出かもしれませんが、OLEを使用する場合には
    ReaderではなくAcrobatが必要になると思うのですが
    AcrobatはStanderdとProで使用できる機能に差はあるのでしょうか?
     業務から始まりましたが、個人的な興味が先行してきて購入を検討しているのですが
    2万以上の差があるので
    Standerdでもよければそちらのほうを購入しようかと思ってます。
     あと1点、このAcrobatのインストールは
    6.0より前のバージョンでも問題ありませんか?
     それともやはり少なくとも7.0以降といった制限はあるのでしょうか?
    以上、基礎的なことで申し訳ありませんが
    よろしくお願いします。

  22. mzさん。初めまして。
    コメント、ありがとうございます。
    >OLEを使用する場合には
    >ReaderではなくAcrobatが必要になると
    >思うのですが 
    OLEを100%使うにはReaderでは駄目です。
    >AcrobatはStanderdとProで
    >使用できる機能に差はあるのでしょうか?
    ProとStandardの違いを厳密には調査&動作確認していません。しかし、以下のURLの内容から判断すると使えない機能(メソッド等)が一部有るかもしれません。※予想
    http://support.adobe.co.jp/faq/faq/qadoc.sv?6027+001
    >業務から始まりましたが、個人的な・・
    ProとStandardの大きな違いは3D機能搭載、CAD対応、そして企業向け機能搭載(実はサイト管理者はそう思っていない)と理解しています。先の事とエンジニア向けならばProをお勧めします。
    >6.0より前のバージョンでも問題ありませんか?
    これも難しい質問ですネ。
    本心は、「やってみないと分からない」です。ただ、このサイトのサンプルや情報は基本的にv7.0+v8.1から作られています。OLEの命令にも下位バージョン互換が存在しますが、いずれかは消えると思っています。
    まとめですが、お金に無理が可能ならば、購入は最新のAcrobat Pro 9.0.0をお勧めします。※しかし・・↓。
    いまだに、Adobe社はv9.0のSDKを公開していません。よって、v9.0からOLE部分がどのように変更されるか未知数です。何も変わらないかもしれません。大幅に見直しをするかもしれません。これには困っています。

  23. ご回答ありがとうございます。
    ファイルを開く
      ↓
    キーワードを可変で文字列検索
      ↓
    その位置を開いて内容確認する
      ↓
    ファイルを閉じる
    をExcel上でやりたいだけなので
    削除される機能とは考えずらいのですが・・・
    でも、通常、下位互換がある程度担保されるけど下位から上位が
    どういう状況か分からないときには
    上位で動かしたほうが無難ですよね・・・
    今は上記の用途しか考えてませんが
    やれることが多ければいろいろ考えるかもしれませんし
    そのときにないからあきらめるとか買いなおすはあまりしたくないですからね。
    ただSDKが公開されていないとなると
    Proは確定させつつも9か8のどちらかは
    ちょっと悩みますね・・・
    引き続き検討してみます。
    ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


★ 文章での質問は難しいですよネ。でも、早く解決して、家に帰りたい。


SAMURAI Plugin

コメントをする時は出来れば以下もお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください