▼ サイトの紹介
このサイトはExcel VBAから、Acrobat アプリケーションをプログラミング操作するOLE機能について解説しています。
Adobe社はこのOLE機能の事を「IAC」と表現しています。
(注意:Adobe Readerだけでは使用出来ません)
Adobe社提供のSDK資料を元にサンプルを加えて説明をしています。
サイト管理人もご覧下さい。
▼ 当サイトの使い方
当サイトをうまく使う上での手順を以下に示します。
- 最初に「Acrobat SDK:OLE objects and methods図を入手する」にあるオブジェクト連携図を手に入れます。出来れば印刷する方が見やすいです。1頁です。
- 下記の「Excel」、「Acrobat」、「ダウンロード」、「SDK」、「備考」にサッと目を通します。「その他&メモ」は特に見なくてもイイです。
- 自分が目的とする処理を探しながら、印刷したオブジェクト連携図を元にサイト右記「Object & List」下を上からクリックしてザックリと内容を見ます。各オブジェクトのメソッドの詳細は後にして全体で何が出来て、何が出来ない(サポートされていない)かを把握します。
「Acobat OLE 以外の選択」も見て下さい。 - 目的が解決出来ない時は、キッパリとあきらめてAdobe社の日本語「Acrobatフォーラム」で相談します。当サイトより質が高い。
- それでもダメなら、当サイトにコメントを入れてみます。サイト管理人がある程度、判る範囲でお答えをします。
(お願い:管理人を「様」での呼び方はご遠慮下さい。管理人さん、で十分です。)
▼ Excel
- Excel からAcrobatを操作する訳
- Excel から PDFファイル を作成&操作出来る
- Excel のオブジェクトブラウザ
- Excel からAcrobatを起動する
- Excel からPDFファイルを起動表示する
- Excel サンプル:PDFの文書プロパティを表示する
- 上記7のサンプルファイルの実行エラー
- Excel VBA 実行エラー時のメッセージ
- Excel でOLEの参照設定をする
- Excel でOLEの参照設定をする (AFormAut の追加)
- Excel でOLEの参照設定をする (Stream の追加)
- Excel でOLEの参照設定をする (MSXMLの追加)
▼ Acrobat
- Acrobat SDK:OLE objects and methods図を入手する
ここで示す図は必ず入手する必要があります。
これが無いとオブジェクト連携が判らなく、OLE(IAC)操作が出来ません。 - Acrobatアプリケーションを閉じる(実は簡単に出来ない)
- Acrobat OLEのエラーを防ぐVBAロジック
- Acrobat OLE 使用上の注意事項
- Acrobatプログラミングにおける技術上の制約やライセンス上の制約
- PDFファイルを作成、及び操作する開発者に対しての注意事項
- Windows のコマンドラインから Acrobat や Adobe Reader を使用して印刷する方法
- PDFドキュメントの文書フラグとは
- PDF バージョンとは
- PDFバージョンの変化
- ExportTask.xml
- 一括で複数ファイルを処理(アクション、バッチ処理)
- PDF の3つのパスワード
- PDFのパスワードは32文字まで
- 印刷の問題点を解決
- PDF内での座標の起点
- Acrobatとレジストリ
- PDF上のテキストとその座標
▼ ダウンロード
- 各種サンプルのダウンロード
- Adobe Acrobat 9.1 SDK のダウンロード
SDKをダウンロードしてサンプル、解説PDF,HTML等を入手する必要があります。
Adobe Acrobat X SDK のダウンロード情報も入ってます。 - Adobe Acrobat 8.1 SDK のダウンロード
この 8.1 バージョンのSDKは現時点(2013/10/03)で一般公開されてません。
情報が入り次第、掲載します。 - Acrobat製品別ダウンロード先 URL
- AcroPDFLib.AxAcroPDF:Excel VBAサンプル(A)
- AcroPDFLib.AxAcroPDF:Excel VBAサンプル(B)
- Adobe Readerの各種バージョンのダウンロード
▼ SDK
- AcrobatプログラミングにおけるMenu and Toolbar Button Names 一覧
- PDDocのGetJsObjectのオブジェクト構造図が見当たらない
- Acrobat SDK:正誤表
Acrobat SDK v8.1ドキュメントに記載ミスが有ります。 - Acrobatに関するSDKが Acrobat Developer Center からダウンロード出来ます。
- Acrobat JavaScript における「Safe Path:セーフパス」についての注意事項
- Acrobat SDK公開Webサイト URLの取得方法
▼ 備考
- JavaScriptの解説はAcrobat v7 v8 共に英語版です。しかし、旧バージョンですがコメントを頂いた方から日本語版のAcrobat JavaScript解説PDFが見つかりました。以下がそのPDFです。
http://www.adobe.com/jp/support/products/pdfs/acrojs_j.pdf - [2009/1/7] AcroExch.AVDoc:Open メソッド でバグ?を発見しました。Acrobat v8.1.3 v9.0が対象です。
▼ その他&メモ
- OCR機能:読んde!ココと比較した結果
- アドビ(Adobe)製品に関するRSSの情報
- 添付ファイルの扱いには注意が必要
- AcrobatはPDF作成ソフトの標準では無くなる?
- Acrobat PDF は国際標準化された
- 「手書きPDF入門」 リンク
- planet pdf (PDF関連の英語サイト) リンク
- デフォルトプリンタを一時的に変更する方法
- Delphi(デルファイ,デルフィ)言語からの使用方法
- Acrobat使用時のレジストリ変化を取得する方法
- オブジェクトは値では無く、参照情報を持つ
- Adobe Reader で PDF ファイルを表示 / 印刷する方法
- サンプル:RGB値の一覧(カラー番号)
- 「・・このバージョンの Acrobat ではサポートされていない新しい形式・・」警告メッセージへの対応
▼日本語の資料
日本語版で公開されている技術情報が非常に少なく、また対応バージョンも古く、作成年度も古いのが多いです。しかし、PDF 又はAcrobat のエンジニア向けの基本的な技術はこの10年間はそれ程進歩していません。よって思った以上に使える事に気がつくはずです。
公開されている情報は今後消滅すると予想されます。必要な情報はバックアップする事をお勧めします。
▼ Acrobat SDK 関連
Acrobat JavaScript Object Specification バージョン 5.0.5テクニカルノート# 5186 改訂日:2001年9月14日
(297頁) Acrobat 5.0 JavaScript リファレンスマニュアル。
PDF ドキュメントでJavaScript を使用するために必要なすべての情報。
※2018/10 リンク先は消滅しました。- Developing Acrobat Applications Using JavaScript
Adobe Acrobat SDK バージョン 8.0
(220頁) JavaScript を使用してAdobe Acrobat での開発や拡張したりする方法について
説明したマニュアル。必読! - JavaScript for Acrobat 3D Annotations API Reference
Adobe Acrobat SDK 2007年4月バージョン 8.1
(105頁) 3D 機能(3D注釈のJavaScript API)をユーザに提供したい開発者を対象にしたマニュアル - Parameters for Opening PDF Files(日本語版)
Adobe Acrobat SDK Version 8.1 April 2007
(8頁) PDF ファイルをURL やコマンドの中で開く際に使用できるパラメータについて説明したマニュアル - Adobe Acrobat Workshop
(78頁) Acrobat 7.0 JavaScript、API、IAC等の開発環境に関する概念の説明図 - Adobe Acrobat 7.0 Acrobat JavaScript Scripting Guide 2005年1月7日
(276頁) Acrobat JavaScript を使用して開発したり拡張したりする方法について簡単に説明ししたもの - Programming Acrobat JavaScript Using Visual Basic
Technical Note #5417 バージョン:Acrobat 6.0 2003年5月
(14頁) Acrobat 6.0 提供のJSObject と言うOLE オートメーション機能のプログラミング環境に関しての概念を説明したもの - Acrobat JavaScript Scripting Guide
Technical Note #5430 バージョン:Acrobat 6.0 2003年5月
(90頁) Acrobat 6 Pro に搭載されている JavaScript 開発環境を使用して Acrobat アプリケーションを開発したり拡張したりする方法を簡単にまとめたもの - 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 にアップグレードする際に開発者が理解しておくべきことについて説明したマニュアル - Adobe® Solutions Network Developer Program FAQ for Members
Version 3.0 MAY 2002
(461頁) ASNディベロッパーサポートプログラム会員から頂いたAcrobat Plug-in API,IAC,Readerに関する質問を整理した情報 - Acrobat Developer FAQ
Adobe Developer Relations 改定:1999年9月2日
(37頁) 質問および回答形式を整理した情報 - Parameters for Opening PDF Files(日本語版)
Adobe Acrobat SDK Version 8.1 April 2007
(24頁) Acrobat SDK でよくある質問と回答を整理したもの - Adobe Acrobat 7.0 Acrobat SDK ユーザガイド 2004年12月14日
(124頁) Acrobat SDKで提供されている機能、Acrobatで提供されている機能とその操作説明等 - JavaScript for Acrobat API Reference
Adobe Acrobat SDK バージョン 8.0
(765頁) Acrobat JavaScript の詳細な解説書/リファレンス
▼ Acrobat 一般資料
- 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には無い機能で複数ファイルの自動化処理が可能だと思われます。
- Qpdf
PDF をコマンドラインで操作するツール
セキュリティ(パスワード)の設定が出来る! - Poppler
PDF をコマンドラインで操作するツール
Xpdf をペースした機能拡張版
注意:公式サイトからはWin版EXEは配布されてません。 - pdf2htmlEX
PDF をHTMLへ変換する高性能なツール - Coherent PDF Command Line Tools
非常に多機能なコマンドラインツール
ライセンスに注意が必要 - Xpdf
PDF をコマンドラインで操作するツール
Popplerの旧バージョン。安定版。 - PDFtk * ※検証予定(時期未定)
PDF をコマンドラインで操作するツール - PDFill PDF Writer: PDF作成ツール
コマンドラインの使用は有償版のみ。
無償版と有償版。表示は英語。 - ★その他の各種ソフトとツール★
各種のPDFソフトウェアを一覧でまとめたサイトです。
たぶん、ココの情報が最新で内容も充実してると思われます。
[コメント入力] <-をクリックするとページの最後にコメント入力が出来ます。
名前(ニックネーム)は必須。メールアドレス(非表示)も必須ですが、適当で結構です。
【更新日:2019/06/05 (11版)】
管理人さん。
丁寧な解説と対策の公開、ありがとうございます。
確かに、連続で作業しないとは言い切れないので、このようなエラーに出くわしたら私ではどうにもできなかったと思います。
色々とお気遣いいただきありがとうございます。
リスクと実行タイミングについて理解できたのですが、自分の理解があっているかが不安なので確認させてください。
ご提示いただいたTerminateAcrobatを、今回のコードに組み込んで使いたい場合、
> '前回、処理が中断した場合の安全対策を実行する
> objAcroApp.CloseAllDocs
> objAcroApp.Hide '稀に表示されるので隠す
このコードの前にCALLするということでよろしいですか?
それとも、TerminateAcrobatをCALLすれば、上記二行は要らなくなるのでしょうか。
お手数ですが、お時間ありますときにご回答いただければ幸いです。
ototo さんへ。
追加の位置はそれでも結構です。
質問の2行は邪魔でなければ入れて下さい。
不要と思うのでしたら削除しても構いません。
アレ?、と思ったら戻せばイイだけの事です。
以下を御覧ください。前回と同時並行で作成していました。
Acrobat OLEのエラーを防ぐVBAロジック
必要と思われるところだけ見ていただければ結構です。
今後、内容の追加は有っても変更は無いと思います。
以前からまとめないといけないと思っていた部分です。
参考になれば幸いです。
管理人さん。お世話になっております。
本当に丁寧に考えて教えていただきまして、ありがとうございました!
早速、おすすめの基本ロジック(1)の形式で、先にいただきましたコードにエラー処理の部分を追加し、TerminateAcrobatとしおり抽出のルーチンをそれぞれCALLするメイン呼び出しという形にさせていただきました。
おかげさまで、効率的な作業をできるようになりました。
本当にありがとうございました。
また何かありましたら、助けを求めに来るかもしれませんが、その時はよろしくお願いいたします。
こんにちは
snowmansnow こと 三上と申します(実名非公開)
いつも便利に拝見しています。
「GetNumAnnotsメソッドが正しく動作している様に見えない」
は、その通りだと思います。でもそれでは困るので、
jsoで確実に取得できないか試してみました。
dashプロパティは、まだ不完全ですが、他はそこそこだと思います。
良かったら、御覧になってみて下さい。
コードは改造しても、御自身のコードとしても、公開しても大丈夫です。
コードを下につけるとエラーになります・・・
snowmansnow さん
はじめました。
お手数ですが、もう一度、コード入力をお願いします。
※一時的に設定変更しました。
▼2022/3/9 20:10 追加
snowmansnow さんへ
入力が無かったので、設定を元に戻しました。
管理人さん
Excelマクロで、複数のPDFにパスワードを付けることを自動化したいと考えています。
色々調べたところ、こちらのサイトを見つけてSDKを用いて実施できるかもしれないと思いました。
SDKにはPDFにパスワードを付ける機能などあるのでしょうか。
ご回答よろしくお願いいたします。
mon さん はじめまして。
残念ですが「SDKにはPDFにパスワードを付ける機能」は無いです。正確にはSDK内にその様な記述を見つけていません。Acrobat JavaScriptにもその機能は無いです。C等から操作するAPIは有りますが、その資料は通常(無料)での公開はされてないみたいなので不明です。
過去にも似たような質問を受けましたが、VBA等から操作できるのは Qpdf 以外は無いと思っています。有償ソフトの方は調べてないので不明です。
ご検討下さい。
※もっと専用のフリーソフトが有ればイイのにといつも感じています。
管理人さんこんにちは。
自分はchat-gptを駆使してプログラミングを学んでいるものです。
https://pdf-file.nnn2.com/?p=1105のページを参考にAcrobat内の埋め込みjavascriptでマッチした文字列にハイライト(マーカー)を追加したいのですが、いくら試してもページの左下にハイライトが現れてしまいます。
以下にスクリプトを記述しますので、意見をいただけたら幸いです。
スクリプトでは"特"にマッチした部分にマーカーを追加しようとしています。
マッチした文字の座標を確認するときちんと座標の位置を取得できているのでマーカーを追加する部分で期待している出力が得られません。
※
・・・
タグを前後に入れても403になってしまいました。Martin さん はじめました。
お手数ですが、スクリプト部分は前後にタグ無しで結構ですから、全てを全角文字列にして入れてください。こちらで半角に戻します。
海外からの不要(=不審)なアクセスを防ぐためです。
PDFの操作に関して、詳しくまとめられてあり大変参考になりました。
質問なのですが
PDFファイルにVBAでバーコードを追加するには
どのようは方法がよいでしょうか?
addFieldでバーコードを数値として追加、
フォントを CODE 128 に変更すれば解決すると思ったのですが
フォントの変更ができませんでした。
画像として埋め込む方法など、何か解決策があれば
教えて頂けますでしょうか