AcroExch.PDPage: SetRotate メソッド

TOP > AcroExch.PDPage > SetRotate      [...]


説明

現在のページを回転させる。

回転値は0度、90度、180度、270度の4種類のみ。

 

形式

VARIANT_BOOL SetRotate(short nRotate);

 

引数

  1. 第1引数(short nRotate):
    参照設定をしている場合はAcrobat OLE(IAC)専用の定数も使用できる。
    pdRotate0 = 0
    pdRotate90 = 90
    pdRotate180 = 180
    pdRotate270 = 270

 

戻り値

  • -1 : 成功。
  • -1以外 : 失敗。

 

動作するバージョン

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

 

説明:PDFドキュメントの各ページに設定されている回転度を0に戻す。

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

 

Sub AcroExch_PDPage_SetRotate()

    Debug.Print "AcroExch_PDPage_SetRotate:" & Now
    Dim objAcroApp             As New Acrobat.AcroApp
    Dim objAcroAVDoc         As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc         As New Acrobat.AcroPDDoc
    Dim objAcroPDPage       As Acrobat.AcroPDPage
    Dim objAcroAVPageView   As Acrobat.AcroAVPageView
    Dim objAcroPdAnnot      As Acrobat.AcroPDAnnot
    Dim lRet                    As Long     '戻り値
    Dim lCnt                    As Long     '件数
    Dim i                        As Long     '添え字
    Dim lPage                 As Long     'ページ数
    Dim l0                     As Long
    Dim l90                   As Long
    Dim l180                 As Long
    Dim l270                As Long
    
    'Acrobatを起動表示する
    lRet = objAcroApp.Show
    '画面にPDFドキュメントを表示する
    lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "")
    
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
    Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
    lPage = objAcroPDDoc.GetNumPages - 1
    Debug.Print "PDF全頁数=" & (lPage + 1)
    
    For i = 0 To lPage
        'ページ移動する。
        lRet = objAcroAVPageView.Goto(i)
        '現在のページのPDPageオブジェクトを取得する
        Set objAcroPDPage = objAcroAVPageView.GetPage
        '現在のページに設定されている回転度
'        Debug.Print "Page=" & (i + 1) & " 回転=" & _
                    objAcroPDPage.GetRotate
        '回転値を0に戻す
        With objAcroPDPage
            Select Case .GetRotate
            Case pdRotate0
                l0 = l0 + 1
            Case pdRotate90
                lRet = .SetRotate(pdRotate0)
                l90 = l90 + 1
            Case pdRotate180
                lRet = .SetRotate(pdRotate0)
                l180 = l180 + 1
            Case pdRotate270
                lRet = .SetRotate(pdRotate0)
                l270 = l270 + 1
            Case Else
                Debug.Print "Proguramming Error"
            End Select
        End With
    Next i
    Debug.Print "  0度の頁=" & l0
    Debug.Print " 90度の頁=" & l90
    Debug.Print "180度の頁=" & l180
    Debug.Print "270度の頁=" & l270
    
    'PDFファイルを保存してで閉じる
    lRet = objAcroAVDoc.Close(0)

    'Acrobatを閉じる
    lRet = objAcroApp.Hide
    lRet = objAcroApp.Exit

    'オブジェクトを強制解放する
    Set objAcroAVDoc = Nothing
    Set objAcroPdAnnot = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroAVPageView = Nothing
    Set objAcroPDDoc = Nothing
    Set objAcroApp = Nothing

End Sub

 

実行結果

Test_AcroPDPage_SetRotate:2008/07/25 17:24:45
PDF全頁数=34
0度の頁=31
90度の頁=1
180度の頁=1
270度の頁=1
Test_AcroPDPage_SetRotate:2008/07/25 17:25:00
PDF全頁数=34
0度の頁=34
90度の頁=0
180度の頁=0
270度の頁=0

※上記は2回実行した結果です。

 

補足

  • 参照設定をしてオブジェクトブラウザでAcrobatを指定すると、
    PDRotateFlagsのメンバーにpdRotate0(=0), pdRotate90(=90), pdRotate180(=180),
    pdRotate270(=270)の4つが存在する。これは
    Const pdRotate0 = 0
    Const pdRotate90 = 90 (&H5A)
    Const pdRotate180 = 180 (&HB4)
    Const pdRotate270 = 270 (&H10E)
    を定義したと同じ事になる。
  • PDFの各ページは原本を回転させた時にその情報を各ページが持っている事がこれで判明する。

 

動作確認環境

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

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください