サイトマップ

▼ サイトの紹介

このサイトは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 アドビフォーラム」で相談します。 ココ ↓
    http://forums.adobe.com/community/international_forums/japanese/acrobat
    当サイト pdf-file.nnn2.com より質が高い。
  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 使用上の注意事項
  4. Acrobatプログラミングにおける技術上の制約やライセンス上の制約
  5. PDFファイルを作成、及び操作する開発者に対しての注意事項
  6. Windows のコマンドラインから Acrobat や Adobe Reader を使用して印刷する方法
  7. PDFドキュメントの文書フラグとは
  8. 「PDF のバージョン」とは
  9. ExportTask.xml
  10. 一括で複数ファイルを処理(アクション、バッチ処理) 
  11. PDF の3つのパスワード

 

▼ ダウンロード

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

 

▼ SDK

  1. AcrobatプログラミングにおけるMenu and Toolbar Button Names 一覧
  2. PDDocのGetJsObjectのオブジェクト構造図が見当たらない
  3. Acrobat SDK:正誤表
    Acrobat SDK v8.1ドキュメントに記載ミスが有ります。
  4. Acrobat 9.0に関するSDKが Acrobat Developer Center のDownloadよりダウンロード出来ます。但し、リファレンス的なSDKはPDFからURL(HTML)公開に変わりました。OLE操作(IAC)に関するSDKも同じで、HTML公開に変更されました。場所は↓ココです。
    http://livedocs.adobe.com/acrobat_sdk/9/Acrobat9_HTMLHelp/wwhelp/wwhimpl/js/html/wwhelp.htm?&accessible=true
    全て英語です。(涙
  5. Acrobat JavaScript における「Safe Path:セーフパス」についての注意事項

 

▼ 備考

  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が対象です。
  3. お願い:Acrobat v4.0 SDK を入手したいのですが、持っている方はサイト管理人までメールで分割(9Mb)送信して頂けないでしょうか。

 


 

▼ その他&メモ

  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. サンプル:RBG値の一覧(カラー番号)
  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 を使用するために必要なすべての情報
  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ソフトウェアを一覧でまとめたサイトです。
    たぶん、ココの情報が最新で内容も充実してると思われます。

 


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

【更新日:2016/06/19 (10版)】

関数:PDFの文書プロパティを更新 [作業中-20]

TOP > サンプル/関数 > 関数:PDFの文書プロパティを更新      [...]


Pixfav-Images You Love to View

概要

SetInfo メソッドでは完全にPDFのプロパティを更新できない時に使用する関数です。PDFファイル内のメタデータ(XMP)と文書情報ディクショナリー(Info)に有る以下の項目を更新します。

  • タイトル
  • サブタイトル
  • 作成者
  • キーワード ※上書きします。
  • 著作権情報

関数:PDFの文書プロパティを更新

関数:PDFの文書プロパティを更新

  

機能

  1. 入力PDFから不要なオブジェクト類を消す為に最初に最適化します。
  2. 文書情報ディクショナリー(Info)情報を更新します。
  3. メタデータ(XMP)を取り出して更新します。
  4. 結果を出力PDFへ最適化して保存します。
  5. CON_DEBUG = True の時は各処理内容の詳細なログをテキストファイルへ出力します。

 

注意事項

  1. キーワードに関して、当関数は上書きします。
  2. SetInfo メソッドGetInfoメソッド、Acrobatのプロパティ画面、Acrobatのプロパティの詳細(XMP)画面との内容はそれぞれ異なる場合が有ります。当関数では全ての結果が同じになるように処理をします。
    ※但し、次の「3.」の場合の注意点は回避出来ませんでした。
  3. 当関数では、作成者を2つ以上登録しようとしてもInfoデータ(GetInfo の結果)には1番目しか登録されません。
  4. 作成者、キーワードの文字列に小文字のカンマ「,」とセミコロン「;」は使用できません。区切り文字として判断されてしまう為です。
    どうしても使用したい時は文字列の前後をダブルクオーテーションで囲ってください。※CSVデータの扱いと同じみたいです。
    但しダブルクオーテーションを使うと予期せぬ結果になる場合があります。その場合はカンマとセミコロンを全角に変更してなどして判断してください。
  5. メタデータ(XMP)と文書情報ディクショナリー(Info)の扱い方に疑問が有ります。AcrobatのOLEの動作に一部理解できない部分が有ります。よって必ず事前に動作確認をしてから、ご使用ください。
  6. 関数を動作させる前に CON_WORK_FOLDER 定数に作業フォルダを事前に指定する必要が有ります。指定方法はサンプル参照。

  

  

形式

[boolean] = PDF_Update_MXP_INFO (  _
  String  sInputPdf , _
  String  sOutputPDF , _
  String  sTitle , _
  String  sSubject  , _
  String  sAuthor( ) , _
  String  sKeywords( ) , _
  String  sRights , _
  String  sMessage  )

  

引数

  1. 第一引数 ( string  sInputPdf ) :
    入力PDF ファイルのフルパス
  2. 第二引数 ( string  sOutputPDF ) :
    出力PDF ファイルのフルパス
  3. 第三引数 ( string  sTitle ) :
    文書プロパティのタイトル
  4. 第四引数 ( string  sSubject ) :
    文書プロパティのサブタイトル
  5. 第五引数 ( string  sAuthor( )  ) :
    文書プロパティの作成者
    配列で複数指定可能。但し注意有り。
  6. 第六引数 ( string  sKeywords( ) ) :
    文書プロパティのキーワード
    配列で複数指定可能
  7. 第七引数 ( string  sRights ) :
    文書プロパティの著作権情報
  8. 第八引数 ( string  sMessage ) :
    関数内でエラー時のみにセットされるエラーメッセージ
  • 「タイトル」、「サブタイトル」、「作成者」、「キーワード」、「著作権情報」を処理したくない時は vbNullChar をセットします。0バイト文字 ”” の時は該当の文書プロパティを空にします。詳細はサンプルを参照してください。

 

戻り値

  1. True : 正常終了。
  2. False : エラー有り。第八引数に詳細なエラーメッセージがセットされます。

  

サンプル

  1. Test1.PDF の「タイトル」、「サブタイトル」、「作成者」、「キーワード」、「著作権情報」を更新し、Test1-OUT1.PDFで出力します。
    • タイトル: "■①タイトル"
    • サブタイトル: "■②サブタイトル"
    • 作成者の1番目: "■③作成者1"
    • 作成者の2番目: "■③作成者2"
    • キーワードの1番目: "■④キーワード1"
    • キーワードの2番目: "■④キーワード2"
    • 著作権情報: "■⑤著作権情報"
  2. 作業フォルダは "D:¥Temp¥Log¥" です。CON_WORK_FOLDER
  3. 途中の処理内容をログとして作業フォルダへテキストファイル出力します。 CON_DEBUG = True
  4. 事前に参照設定が必要です。

<以下サンプルの最終更新日時:2017/03/28 13:59>
注意:サンプルは "<" 、">" 文字を全角から半角に変換してご利用下さい。

注意:サンプルは "<" 、">" 文字を全角から半角に変換してご利用下さい。

  

結果

上記サンプルの実行結果です。

関数:PDFの文書プロパティを更新

関数:PDFの文書プロパティを更新

関数:PDFの文書プロパティを更新

但し、残念な事にOLEのInfo内容で作成者は1番目しかセットされませんでした。以下はログファイルからの結果です。

title(x):■①タイトル
Subject(x):■②サブタイトル
Author(x):■③作成者1
Keywords(x):■④キーワード1,■④キーワード2
Rights(x):■⑤著作権情報

Author(x)は下記が正解です。本当は以下の様にならないと駄目なハズ。
Author(x):■③作成者1,■③作成者2

 

既知の問題

  1. 文書プロパティの作成者を配列で複数指定してもGetInfo の結果は1つ目しか返されません。これに対する逃げ手は現時点(2017/3/25)では見つかっていません。
  2. 文書プロパティの作成者とキーワードの区切りは画面上ではカンマ「 , 」やセミコロン「 ; 」で表示されます。更に前後をダブルクオーテーションで表示される場合が有ります。

「XMPの結果」を今は最優先とし、上記の「既知の問題」に関しては余力が出来た時に再検討&再調査とします。

 

備考

  1. 当関数を改造すれば他のPDFのプロパティ項目も変更可能になると予測しています。しかし、その為にはXMPの知識が必要になります。よってXMPの扱いがよく判らない人は、コメントを頂ければ出来る範囲でご助言いたします。
  2. XMPはXMLファイルと同じなのでXMLパーサーを使ってVBAで処理をするのが本来の形です。しかしこのXMLの変形型のXMPをXMLパーサーで扱うのは実際は容易ではなかったです。よってVBAの文字列関数を駆使して処理をしました。
  3. XML内の以下の行は編集しなくても関数内のXML更新で自動的にOLE更新されます。一応、将来的な改造用に関数には更新ロジックをコメントで残してあります。
    • df:Keywords="■④キーワード1,■④キーワード2"
    • pdfx:Rights="■⑤著作権情報"

 

参考

  1. 文書プロパティを構成するメタデータと文書情報ディクショナリーについて。
  2. OLEからMetaDataとInfoの操作について。
    JavaScript for Acrobat API Reference Adobe Acrobat SDK バージョン 8.0
  3. XMPに関してダウンロードできるPDF文書とサンプル。

 

動作確認環境

  • Windows 10 Pro 64bit + Acrobat Pro XI  + Excel 2007

 

  

< 関数へ戻る >


<管理者の技術メモ>

これ以降はサイト管理人の技術関連メモです。見なくて結構です。

  1. メタデータ(XMP)と文書情報ディクショナリー(Info)がどのように関係して連携?しているのかが不明。PDFの内部を追ってみたが分からなかった。ココは非公開的な内容なのかもしれない。
  2. テスト結果から予測すると、複数指定可能なプロパティにはバグっぽい臭いが、ヤヤする。と言えども、それをカバーする関数処理が出来なかった事が悔しい。
  3. PDFのXMPに関する日本語の説明書(PDF等)は存在しなかった。
  4. 英語版のXMPの説明書はPDF専門の内容では無いが、かなり参考になった。説明内にはXMPのサンプルも豊富に入っている。タブン、これが唯一のXMPに関する最良の説明書と思われる。
  5. 他にもPDFのXMPデータを出力するコマンドラインツールは存在するが、これを更に読み込んでXMPを更新するツールは存在しない。
    PDFtkに似たような機能が合ったが、正常に機能しなかった。
    XMPのインポートとエクスポートの両方が出来るのは、調べた限りではAcrobatアプリ本体のみ。
    但し、当関数を参考にすればXMPのインポートとエクスポートを簡単に行うことが出来ることが分かる。
  6. 他のXMP要素名はココに書いてある内容かな? このXMPSpecificationPart1.pdf ファイル は上記のダウンロードZIPファイルに含まれている。
  7. XMPの<rdf:Bag> <rdf:Seq> <rdf:Alt >の説明に関してはココ<の7.7 Array valued XMP properties>に有る。
    テストでは別の要素名に書き換えても影響しないみたいで結果は同じだった。
  8. VBAソース内の<と>文字はHTMLコードと一部が見なされて、誤変換されたり、強制削除されてしまう。後々のメンテが面倒なので貼り付ける時は<、>文字は全角文字に一括変換してからWEB公開する。サンプルを利用する側に少し手間が掛かるが、メンテナンスする側の方が何倍も大変なので、ハイ。
    半角に戻す注意事項も忘れずにシツコイぐらい書いて置きました。

    • IF 命令内の比較演算子 <、>文字は問題無い。
    • ”<” 、”>” 、”</” が誤認識、又は強制排除(削除)される。

 

< 関数へ戻る >

VBA(Excel)からAcrobat経由でPDFをプログラミング操作(OLE:IAC)する