サイトマップ

▼ サイトの紹介

このサイトは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. PDFバージョンの変化
  10. ExportTask.xml
  11. 一括で複数ファイルを処理(アクション、バッチ処理)
  12. PDF の3つのパスワード
  13. PDFのパスワードは32文字まで
  14. 印刷の問題点を解決
  15. PDF内での座標の起点
  16. Acrobatとレジストリ

▼ ダウンロード

  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. サンプル: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 を使用するために必要なすべての情報。
    ※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版)】

透かしをファイルで追加する (addWatermarkFromFile)

TOP > サンプル / 関数 > *      [...]


説明

PDF に別のファイルを使って透かしを追加します。

透かしの追加はAcrobat OLE の JSObject 経由で addWatermarkFromFile メソッドを使って、外部ファイルからPDFへ行います。

透かしをファイルで追加する (addWatermarkFromFile)

 

addWatermarkFromFile

メソッド

Doc オブジェクト / addWatermarkFromFile メソッド

説明

PDFファイルの指定のページに外部ファイルを透かしとして追加します。

形式

JSObject.addWatermarkFromFile  cDIPath , [nSourcePage] , [nStart] , [nEnd] , [bOnTop] , [bOnScreen] , [bOnPrint] , [nHorizAlign] , [nVertAlign] , [nHorizValue] , [nVertValue] , [bPercentage] , [nScale] , [bFixedPrint] , [nRotation]

引数

  1. 第1引数 (cDIPath) :
    透かしに使うファイルのフルパス。
    PDFファイル、JPEG および BMP ファイルが指定できる。   
  2. 第2引数 (nSourcePage) : (オプション)
    透かしに使う第1引数のソースファイルの該当ページを指定。
    0から数える。つまり1頁目は0。デフォルトは0。  
  3. 第3引数 (nStart) : (オプション)
    透かしを追加するPDFのページ範囲で最初のページの番号を指定。
    0から数える。つまり1頁目は0。
    nStart と nEnd を指定しない時は、文書の全てのページが対象になります。
    nStart のみを指定した場合は、nStart で指定した単一のページが対象になります。
    nEnd のみを指定した場合は、0 から nEnd までが対象範囲になります。   
  4. 第4引数 (nEnd) : (オプション)
    透かしを追加するPDFのページ範囲で最後のページの番号を指定。
    指定方法はnStartを参照。  
  5. 第5引数 (bOnTop) : (オプション)
    PDFページ上のコンテンツ(文字、画像等)の上下を指定。
    デフォルトはTrue。
    bFixedPrint が true の場合には無視される。
    • True : コンテンツの上に透かしが表示される。
    • False : コンテンツの下に透かしが表示される。    
  6. 第6引数 (bOnScreen) : (オプション)
    PDFを画面表示する際に、透かしを表示するかどうかを示すブーリアン値。
    デフォルトは True。
    • True : 表示する
    • False : 表示しない  
  7. 第7引数 (bOnPrint) : (オプション)
    PDFを印刷する際に、透かしを表示するかどうかを示すブーリアン値。
    デフォルトは True。
    • True : 表示する
    • False : 表示しない   
  8. 第8引数 (nHorizAlign) : (オプション)
    透かしの水平方向の整列方法を表す数値。
    有効な値については、app.constants.align を参照。
    デフォルトはapp.constants.align.center (中央)。
    ※値とフローティングウィンドウ位置
    • jso.app.constants.align.left  : 左
    • jso.app.constants.align.center  : 中央
    • jso.app.constants.align.right  : 右  
  9. 第9引数 (nVertAlign) : (オプション)
    透かしの垂直方向の整列方法を表す数値。
    有効な値については、app.constants.align を参照。
    デフォルトはapp.constants.align.center  (中央)。
    ※値とフローティングウィンドウ位置
    • jso.app.constants.align.center  : 中央
    • jso.app.constants.align.top  : 上
    • jso.app.constants.align.bottom  : 下  
  10. 第10引数 (nHorizValue) : (オプション)
    ページ上で透かしの水平位置をシフトさせるために使用する数値。
    bPercentage が True の場合、この数値はページの幅のパーセンテージを示す。
    bPercentage が False の場合、この数値はオフセットするポイント数を示す。
    デフォルトは 0。
    「配置」-「左右からの距離」-「基点」項目と同様。   
  11. 第11引数 (nVertValue) : (オプション)
    ページ上で透かしの垂直位置をシフトさせるために使用する数値。
    bPercentage が true の場合、この数値はページの高さのパーセンテージを示す。
    bPercentage が false の場合、この数値はオフセットするポイント数を示す。
    デフォルトは 0 です。
    「配置」-「上下からの距離」-「基点」項目と同様。   
  12. 第12引数 (bPercentage) : (オプション)
    nHorizValue や nVertValue がページサイズのパーセンテージを示すのか、ポイント数を示すのかを表すブーリアン値。
    デフォルトは falseでポイント数を示す。
    • True : パーセンテージを示す
    • False : ポイント数を示す  
  13. 第13引数 (nScale) : (オプション)
    透かしに使用するスケール。
    1.0 が 100 %を意味する。
    値が -1 の場合は、透かし形状を維持したまま、大きさをページにフィットさせます。
    デフォルトは 1.0 です。
    「ページに合わせた相対倍率」項目と同様。   
  14. 第14引数 (bFixedPrint) : (オプション)
    「異なるページサイズで印刷する場合、透かし位置とサイズを一定にする」ことを示すブーリアン値。
    印刷するページのサイズに関係なく、透かしが固定のサイズおよび位置に印刷される。
    True の場合は、bOnTop は無視される。
    デフォルトはFalse です。
    • True : 透かしが固定のサイズおよび位置に印刷する
    • False : 透かしが固定のサイズおよび位置に印刷しない  
  15. 第15引数 (nRotation) : (オプション)
    透かしを反時計回りに回転させる角度。0~360の値を指定。
    デフォルトは 0。
    「回転」項目と同様。   
  16. 第16引数 (nOpacity): (オプション)
    透かしの不透明度を示す。
    0 が透明で、1.0 が不透明。 デフォルトは 1.0。
    「不透明度」項目と同様。

 

サンプル:ExcelのVBA

Downloadsample-JSObject_addWatermarkFromFile.xls

Test.pdf ファイルに透かし用のファイルとして sukasi,pdf を全ページに追加します。

追加したら最適化して test-out.pdf として別名保存します。

  • F8キーでステップ実行しながら動作確認出来ます。
  • 参照設定を事前にする。
001 Sub JSO_addWatermarkFromText() 002      003     Dim objAcroApp      As New Acrobat.AcroApp 004     Dim objAcroPDDoc    As New Acrobat.AcroPDDoc 005     Dim jso             As Object 006     Dim lRet            As Long 007      008     '透かしが追加されるPDFファイル 009     Const CON_PDF_IN    = "D:¥work¥test.pdf" 010     '透かしが追加されたPDFファイル 011     Const CON_PDF_OUT = "D:¥work¥test-out.pdf" 012     '透かし用として追加するファイル 013     Const CON_SUKASI    = "D:¥work¥sukasi.pdf" 014      015     'JSObjectオブジェクト作成時のNothingの回避策 016     'Acrobatアプリを強制的にメモリにロードする 017     lRet = objAcroApp.CloseAllDocs 018      019     'PDFファイルを開く 020     lRet = objAcroPDDoc.Open(CON_PDF_IN) 021     If lRet = False Then 022         MsgBox "AcroExch PDDoc Open エラー" 023         GoTo JSO_addWatermarkFromText_Skip: 024     End If 025      026     Set jso = objAcroPDDoc.GetJSObject 027      028     'PDF文書の指定のページに指定のPDFを透かしとして追加 029     jso.addWatermarkFromFile CON_SUKASI 030      031 JSO_addWatermarkFromText_Skip: 032     'PDFを最適化して別名で保存する 033     lRet = objAcroPDDoc.Save( _ 034          PDSaveFull + PDSaveLinearized + _ 035          PDSaveCollectGarbage, CON_PDF_OUT) 036           037     'アプリケーションの終了 038     lRet = objAcroApp.Hide 039     lRet = objAcroApp.Exit 040 041     'オブジェクトの強制開放  042     Set jso = Nothing 043     Set objAcroPDDoc = Nothing 044     Set objAcroApp = Nothing 045 046 End Sub


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 


実行結果

透かしをファイルで追加する (addWatermarkFromFile)

全ページに同じ様に透かしが追加されました。

 

補足

  1. Acrobat Reader では動作しません。
    Acrobat Pro 本体がデフォルトでインストールされているパソコン環境だけです。  
  2. 上記サンプル、addWatermarkFromFile の第2引数以降はデフォルトです。     
  3. テキストのみの透かしなら addWatermarkFromText メソッドでも対応出来る。     
  4. ダイナミックスタンプ、ビジネススタンプ、メッセージスタンプ等のカスタムスタンプの代わりに透かし機能で代用出来るかもしれません。
    承認済、社外秘、却下、極秘、非公開、公開用等の文字を透かし機能を使って追加出来ます。

注意

  1. Acrobatアプリ本体の透かしの追加のダイアログ画面のデフォルトとは多少異なる結果で追加が行われます。   
  2. 透かしを一括で削除するOLEやAcobat JavaScript等は現時点(2014/02/19)では見つかっていません。
    見つけられなかったのかもしれません。  

名前付き引数

addWatermarkFromText メソッドでは名前付き引数の使用が可能ですが、当 addWatermarkFromFile メソッドでは使用できません。詳細な理由は不明です。

動作確認環境

  • Windows 7 64bit Home + SP1 +
    Acrobat 8.3.1 Pro + Office 2007 + フルMicrosoftUpdate

Adobe Web 解説

  1. JavaScript™ for Acrobat® API Reference
    Adobe® Acrobat® SDK バージョン 8.0
    addWatermarkFromFile メソッドの日本語解説  
  2. JavaScript for Acrobat API Reference
    (Acrobat v10) 英語解説
    addWatermarkFromFile メソッドの英語解説
    (リンク先消滅)   
  3. Acrobatアプリからの透かしの削除方法  日本語解説
    (リンク先消滅)

サンプル一覧

 


サイト管理人のメモ

これ以降はサイト管理人のメモです。

見る必要性は無いです。

「addWatermarkFromFile はPDF文書に透かしを追加すると同時に、
オプショナルコンテンツグループ(OCG)に配置します。」

と Acrobat JavaScriptのマニュアルに記述が有る。ならば、OCGなるものを削除、又は無効にすれば透かしを削除、又は非表示に出来るのではないか?

そこで 511727_js_api_reference.pdf の

「JavaScript™ for Acrobat® API Reference Adobe® Acrobat® SDK バージョン 8.0」の550ページに書かれているサンプルを元に以下のJavaScriptを作成した。

Source file //p.550 透かしOCGをオフで非表示に設定 var ocgArray = this.getOCGs(); for (var i=0; i < ocgArray.length; i++) { if (ocgArray[i].name == "Watermark") { ocgArray[i].state = false; } }

 

上記を文書レベルのJavaScriptに追加する。

しかし、追加時には正常に処理して透かしを非表示にするが、PDF文書を保存して、再度表示すると実行されない。正確には実行されるが、falseが反映されない。

上記JavaScriptの実行前に

app.alert("xx");

を入れるとAcrobat Pro 8 では反映されるが Adobe Reader XI では反映されない。

OCG特有の性質が存在する可能性が有る。が、現時点では不明。

記録

  1. 初版:2019年5月9日
  2. 2版:2019年7月12日 「名前付き引数」の記事を追加

サンプル一覧

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