AcroExch.PDPage: AddNewAnnot メソッド

TOP > AcroExch.PDPage > AddNewAnnot      [...]


説明

ページの指定位置にテキスト注釈を新規追加します。

同時にPDAnnotオブジェクトを作成します。

 

形式

LPDISPATCH AddNewAnnot(long nIndexAddAfter,
        BSTR szSubType,
        LPDISPATCH iAcroRect);

 

引数

  1. 第1引数(long nIndexAddAfter) :
    「-2」固定。他の値を指定すると失敗する。
  2.  第2引数(BSTR szSubType) :
    注釈のタイプ。"Text"の固定。
  3. 第3引数(LPDISPATCH iAcroRect) :
    注釈をセットするページの位置をRectオブジェクトで指定。

 

戻り値

  • AcroPDAnnotオブジェクトでNull以外 :
    成功。
  • AcroPDAnnotオブジェクトでNull :
    失敗。注釈を追加出来なかった。

 

動作するバージョン

Version Adobe
Acrobat
備考
4
-
Acrobat 4.0    ※Windows 98SE + Excel 2000
5
-

Acrobat 5.0.5
6
-

Acrobat 6.0.3 Pro
7
-
Acrobat 7.0.9 Pro
Acrobat 7.1.4 Pro
8
OK
Acrobat 8.1.2 Pro
9
-
Acrobat 9.3.2 Extended
10
-
Acrobat X (10.1.8) Extended
11
-
Acrobat XI (11.0.04) Extended
  • OK = 動作する。
  • NO = 動作しない。 戻り値が0を返す。
  • - = 未確認。

 






サンプル:ExcelのVBA

 

説明:最初の1ページにテキスト注釈を新規追加します。

  • F8キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。

 

Sub AcroExch_PDPage_AddNewAnnot()

    Dim objAcroApp             As New Acrobat.AcroApp
    Dim objAcroAVDoc         As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc         As New Acrobat.AcroPDDoc
    Dim objAcroRect            As New Acrobat.AcroRect
    Dim objAcroPDPage       As Acrobat.AcroPDPage
    Dim objAcroPDAnnot      As Acrobat.AcroPDAnnot
    Dim lRet                       As Long     '戻り値
    
    'Acrobatを起動表示する
    lRet = objAcroApp.Show  '(注1)
    'PDFドキュメントを開く
    lRet = objAcroPDDoc.Open("E:¥Test01.pdf")
    '画面にPDFを表示する。
    lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "") '(注1)
    '1ページ目のPDPageオブジェクトを取得します
    Set objAcroPDPage = objAcroPDDoc.AcquirePage(0)
    'テキスト注釈の4枠サイズをセットする
    With objAcroRect
        .Top = 700
        .bottom = .Top - 60
        .Left = 300
        .Right = .Left + 90
    End With
    'テキスト注釈を追加します
    Set objAcroPDAnnot = objAcroPDPage.AddNewAnnot( _
                            -2, "Text", objAcroRect)
    lRet = objAcroPDAnnot.SetContents( _
            "これはテストのテキスト注釈です。")
    '別名でPDFファイルを保存する
    lRet = objAcroPDDoc.Save(PDSaveFull, _
                            "E:¥Test01_A.pdf")
    'PDFファイルを閉じる
    lRet = objAcroPDDoc.Close

    'Acrobatを閉じる
    lRet = objAcroApp.Hide      '(注1)
    lRet = objAcroApp.Exit      '(注1)

    'オブジェクトを強制解放する
    Set objAcroAVDoc = Nothing  '(注1)
    Set objAcroRect = Nothing
    Set objAcroPDAnnot = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroPDDoc = Nothing
    Set objAcroApp = Nothing

End Sub

 

補足

  • 上記サンプルコードで「(注1)」は必要ありません。
    その代り、外すとサイレントで実行します。
  • 第3引数のRectオブジェクトで注釈の場所と四角サイズを指定しますが、
    上記サンプルの様にBottomとLeftは自動計算にした方がいいです。
    値を大きくしても見にくいだけで余り意味を持ちません。
  • 参考ページ:
    http://forums.adobe.com/thread/414635
    http://forums.adobe.com/thread/763471
  • PDFの座標系はページの左下隅を基点としていますが、
    注釈の座標はページの左上隅を基点とします。

 

注意事項

  • 第1引数は「-2」固定です。
    Acrobat SDK 8.0にはページの位置指定等の説明があるが実際は違います。
    -2以外の値を設定するとメソッドは失敗し、PDAnnotオブジェクトがNothingになってしまいます。
  • [文書のセキュリティ]で「注釈」が追加不可になっていても、追加出来る事がある。
    Acrobat 8.3.1 で動作確認済み。

 

動作確認環境

  • WindowsXP Pro(+ SP3) +
    Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate
  • Windows 7 64bit (+SP1) +
    Acrobat 8.3.1 Pro + Office 2003 + MicrosoftUpdate

 

戻る

コメントを残す

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

CAPTCHA


出来るだけ早く返答する様には心がけています。
が、遅くなる時もありますのでご了承ください。


SAMURAI Plugin

コメントをする時は最低でも以下をお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン