AcroExch.PDAnnot: SetRect メソッド

TOP > AcroExch.PDAnnot > SetRect      [...]


説明

注釈のGetSubtypeが "Text" の時は注釈アイコンのサイズを設定(変更) します。

注釈のGetSubtypeが "Popup" の時はテキスト編集のサイズを設定(変更) します。

注釈のGetSubtypeが "Link" の時は何も変化ありません。

よって、注釈のGetSubtypeが "Popup" の時のみ使用します。

 

形式

VARIANT_BOOL SetRect(LPDISPATCH iAcroRect);

 

引数

  1. 第1引数(LPDISPATCH iAcroRect) :
    AcroRectオブジェクト(Top,bottom,Left,Right)を指定します。

 

戻り値

  • -1 : 設定出来た。注)GetSubtypeが"Link"の時でも-1が返る。
  • 0 : 設定出来なかった。又は設定出来ない。

 

動作するバージョン

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
NO
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

 

説明:PDFファイルの開いているテキスト注釈を全てページ左上部に移動させる。

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

 

Sub AcroExch_PDAnnot_SetRect()

    Debug.Print "AcroExch_PDAnnot_SetRect:" & Now
    Dim objAcroAVDoc        As New Acrobat.AcroAVDoc
    Dim objAcroAVPageView   As Acrobat.AcroAVPageView
    Dim objAcroPDDoc        As Acrobat.AcroPDDoc
    Dim objAcroPDPage       As Acrobat.AcroPDPage
    Dim objAcroPDAnnot      As Acrobat.AcroPDAnnot
    Dim objAcroRect         As New Acrobat.AcroRect
    Dim lRet                As Long     '戻り値
    Dim lPagesCnt           As Long     'ページ数
    Dim lAnnotsCnt          As Long     '注釈数
    Dim i                   As Long     '添え字
    Dim j                   As Long     '添え字
    Dim lCnt                As Long     '件数
    Dim lPopupCnt           As Long     'Popup件数
    
    lCnt = 0
    lPopupCnt = 0
    
    'テキスト注釈の4枠サイズをセットする
    With objAcroRect
        .Top = 751
        .bottom = .Top - 60
        .Left = 100
        .Right = .Left + 90
    End With
    
    'PDFドキュメントを開いて表示する。
    lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "")
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
    Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
    'PDFドキュメントのページ数を得る
    lPagesCnt = objAcroPDDoc.GetNumPages() - 1
    For i = 0 To lPagesCnt
        '該当ページのページオブジェクトを得る ★注意①
        Set objAcroPDPage = objAcroPDDoc.AcquirePage(i)
        'PDFビュアーのページを移動させる
        lRet = objAcroAVPageView.Goto(i)    '(TEST用)
        'ページに存在する注釈数を得る
        lAnnotsCnt = objAcroPDPage.GetNumAnnots() - 1
        For j = 0 To lAnnotsCnt
            lCnt = lCnt + 1
            Set objAcroPDAnnot = objAcroPDPage.GetAnnot(j)
            'Debug.Print objAcroPDAnnot.GetSubtype
            If objAcroPDAnnot.GetSubtype = "Popup" Then
                'Popup注釈
                lRet = objAcroPDAnnot.SetRect(objAcroRect)
                lPopupCnt = lPopupCnt + 1
            End If
        Next j
    Next i
    Debug.Print "全件数= " & lCnt
    Debug.Print "Popup変更件数= " & lPopupCnt
    
    'PDFファイルを保存しないで閉じる
    lRet = objAcroAVDoc.Close(1)    '(TEST用)
    'オブジェクトを強制解放する
    Set objAcroAVDoc = Nothing
    Set objAcroPDAnnot = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroAVPageView = Nothing
    Set objAcroPDDoc = Nothing
    Set objAcroRect = Nothing

End Sub

 

実行結果

  

TEST_PDAnnot_SetRect:2008/10/06 15:35:43
全件数= 247
Popup変更件数= 15

<実行前>

PDAnnot:SetRect メソッド 実行前

<実行後>

PDAnnot:SetRect メソッド 実行後

  

補足

  • SetRectメソッドは GetSubtypeが"Text"の時は注釈アイコンのサイズを変更できる。しかしこれは意味が無い。理由は実行後に手動で注釈アイコンを移動させると元のサイズに戻ってしまうからだ。これはSetRectメソッドの仕様上のミスか、SetRectメソッド自身が過去の遺物と化したメソッドと考えられる。
    <実行前>
    AcroPDDoc:SetRect メソッドの実行前 Text
    <実行後> ※デ、デカイ!
    AcroPDDoc:SetRect メソッドの実行後 Text(1)
    <手動で少し下に移動した後>
    AcroPDDoc:SetRect メソッドの実行後 Text(2)
  • 上記の実行結果は「Popup変更件数= 3」が正解。
    つまり注意①の箇所の影響でテキスト注釈の判断が出来ない。

 

動作確認環境

  • WindowsXP Pro(+ SP3) +
    Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れるとエラーになる場合が有ります。その時はコードの前後に <code> ・・・</code> タグを入れてください。

This site uses Akismet to reduce spam. Learn how your comment data is processed.