TOP > AcroExch.PDPage > *
説明
現在のページを回転します。回転値は0度、90度、180度、270度の4種類のみ。
形式
VARIANT_BOOL SetRotate(short nRotate);
引数
- 第1引数(short nRotate):
※参照設定をしている場合はAcrobat OLE(IAC)専用の定数も使用できます。
pdRotate0 = 0
pdRotate90 = 90
pdRotate180 = 180
pdRotate270 = 270
戻り値
- -1 : 成功。
- -1以外 : 失敗。
動作するバージョン
| 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キーでステップ実行しながら動作確認します。
001 Sub AcroExch_PDPage_SetRotate()
002
003 Debug.Print "AcroExch_PDPage_SetRotate:" & Now
004 Dim objAcroApp As New Acrobat.AcroApp
005 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
006 Dim objAcroPDDoc As New Acrobat.AcroPDDoc
007 Dim objAcroPDPage As Acrobat.AcroPDPage
008 Dim objAcroAVPageView As Acrobat.AcroAVPageView
009 Dim objAcroPdAnnot As Acrobat.AcroPDAnnot
010 Dim lRet As Long '戻り値
011 Dim lCnt As Long '件数
012 Dim i As Long '添え字
013 Dim lPage As Long 'ページ数
014 Dim l0 As Long
015 Dim l90 As Long
016 Dim l180 As Long
017 Dim l270 As Long
018
019 'Acrobatを起動表示する
020 lRet = objAcroApp.Show
021 '画面にPDFドキュメントを表示する
022 lRet = objAcroAVDoc.Open("E:\Test01.pdf", "")
023
024 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
025 Set objAcroAVPageView = objAcroAVDoc.GetAVPageView()
026 lPage = objAcroPDDoc.GetNumPages - 1
027 Debug.Print "PDF全頁数=" & (lPage + 1)
028
029 For i = 0 To lPage
030 'ページ移動する。
031 lRet = objAcroAVPageView.Goto(i)
032 '現在のページのPDPageオブジェクトを取得する
033 Set objAcroPDPage = objAcroAVPageView.GetPage
034 '現在のページに設定されている回転度
035 ' Debug.Print "Page=" & (i + 1) & " 回転=" & _
036 objAcroPDPage.GetRotate
037 '回転値を0に戻す
038 With objAcroPDPage
039 Select Case .GetRotate
040 Case pdRotate0
041 l0 = l0 + 1
042 Case pdRotate90
043 lRet = .SetRotate(pdRotate0)
044 l90 = l90 + 1
045 Case pdRotate180
046 lRet = .SetRotate(pdRotate0)
047 l180 = l180 + 1
048 Case pdRotate270
049 lRet = .SetRotate(pdRotate0)
050 l270 = l270 + 1
051 Case Else
052 Debug.Print "Proguramming Error"
053 End Select
054 End With
055 Next i
056 Debug.Print " 0度の頁=" & l0
057 Debug.Print " 90度の頁=" & l90
058 Debug.Print "180度の頁=" & l180
059 Debug.Print "270度の頁=" & l270
060
061 'PDFファイルを保存してで閉じる
062 lRet = objAcroAVDoc.Close(0)
063
064 'Acrobatを閉じる
065 lRet = objAcroApp.Hide
066 lRet = objAcroApp.Exit
067
068 'オブジェクトを強制解放する
069 Set objAcroAVDoc = Nothing
070 Set objAcroPdAnnot = Nothing
071 Set objAcroPDPage = Nothing
072 Set objAcroAVPageView = Nothing
073 Set objAcroPDDoc = Nothing
074 Set objAcroApp = Nothing
075
076 End Sub
実行結果
以下はExcelのVBA開発環境のイミディエイトウィンドウの内容です。
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の各ページは原本を回転させた時にその情報を各ページが持っている事がこれで分かります。
Adobe Web 解説
OLE Automation / AcroExch.PDPage / SetRotate (公式サイト・英語)
動作確認環境
- WindowsXP Pro(+ SP3) +
Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate
< 戻る >