AcroExch.PDDoc: GetFlags メソッド

TOP > AcroExch.PDDoc > GetFlags      [...]


説明

文書フラグを取得します。

文書フラグは合計された状態で返されます。

 

形式

long GetFlags();

 

引数

  • 無し

 

戻り値

  • 戻り値は、文書フラグの定数をが合計されて返されるます
    PDDocWasRepaired, PDDocNewMajorVersion,
    PDDocNewMinorVersion, PDDocOldVersion 等。

 

動作するバージョン

Version Adobe
Acrobat
備考
4
OK
Acrobat 4.0    ※Windows 98SE + Excel 2000
5
OK
Acrobat 5.0.5
6
OK
Acrobat 6.0.3 Pro
7
OK
Acrobat 7.0.9 Pro
Acrobat 7.1.4 Pro
8
OK
Acrobat 8.2.2 Pro
9
OK
Acrobat 9.3.2 Extended
10
-
Acrobat X (10.1.8) Extended
11
-
Acrobat XI (11.0.04) Extended
  • OK = 動作する。
  • NO = 動作しない。 戻り値が0を返す。
  • - = 未確認。

 






サンプル:Excel のVBA

説明: AcroPDDocオブジェクトを作成して、動作確認をする。

  • F8キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。
  • 以下のサンプルはAcrobatアプリケーションを画面表示しないで行っています。

 

Sub AcroExch_PDDoc_GetFlags()

    'Acrobatオブジェクトの定義&作成
    'Acrobat 4,5,6 の時
'    Dim objAcroApp   As Acrobat.CAcroApp
'    Dim objAcroAVDoc As Acrobat.CAcroAVDoc
'    Dim objAcroPDDoc As Acrobat.CAcroPDDoc
'    Set objAcroApp = CreateObject("AcroExch.App")
'    Set objAcroAVDoc = CreateObject("AcroExch.AVDoc")
    
    'Acrobat 7,8,9,10,11 の時
    Dim objAcroApp As New Acrobat.AcroApp
    Dim objAcroAVDoc As New Acrobat.AcroAVDoc
    Dim objAcroPDDoc As Acrobat.AcroPDDoc

    '以降はAcrobat全て共通
    Dim lRet As Long    '戻り値
    
    '①PDFファイルを開く。(メモリ上)
    lRet = objAcroAVDoc.Open("C:¥work¥Test01.pdf", "")
    '②Acrobatアプリケーションを起動し、画面表示する。
    'lRet = objAcroApp.Show
    
    'PDDocオブジェクトを取得する。
    Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
    'PDDocオブジェクトのGetFlagsメソッドの戻り値を表示する。
    Debug.Print "AcroPDDoc.GetFlags(1)=" & objAcroPDDoc.GetFlags()
    
    'ページ3から4を削除する
    lRet = objAcroPDDoc.DeletePages(2, 3)
    Debug.Print "AcroPDDoc.GetFlags(2)=" & objAcroPDDoc.GetFlags()
    
    lRet = objAcroPDDoc.ClearFlags(PDDocOldVersion)
    Debug.Print "AcroPDDoc.GetFlags(3)=" & objAcroPDDoc.GetFlags()
    
    lRet = objAcroPDDoc.ClearFlags(PDDocNeedsSave)
    Debug.Print "AcroPDDoc.GetFlags(4)=" & objAcroPDDoc.GetFlags()
    
    lRet = objAcroPDDoc.ClearFlags(PDDocIsModified)
    Debug.Print "AcroPDDoc.GetFlags(5)=" & objAcroPDDoc.GetFlags()
    
    lRet = objAcroPDDoc.ClearFlags(PDDocOldVersion + _
                                   PDDocNeedsSave + _
                                   PDDocIsModified)
    Debug.Print "AcroPDDoc.GetFlags(6)=" & objAcroPDDoc.GetFlags()
    
    'PDFファイルを閉じます。
    lRet = objAcroAVDoc.Close(1)
    'PDDocオブジェクトのGetFlagsメソッドの戻り値を表示する。
    '※以下のGetFlags()はAcrobat v4,v5,v6では実行エラーになる
    Debug.Print "AcroPDDoc.GetFlags(9)=" & objAcroPDDoc.GetFlags()
    
    'Acrobatアプリケーションを終了する。
    'lRet = objAcroApp.Hide
    lRet = objAcroApp.Exit
    'オブジェクトを強制解放する
    Set objAcroPDDoc = Nothing
    Set objAcroAVDoc = Nothing
    Set objAcroApp = Nothing

End Sub 

 

実行結果

PDFファイル(Test01.pdf)のPDFバージョンは「1.3」を使用しました。

 

▼ Acrobat v4.0 の結果

※1029=1024+4+1

AcroPDDoc.GetFlags(1)=1024
AcroPDDoc.GetFlags(2)=1029
AcroPDDoc.GetFlags(3)=1029
AcroPDDoc.GetFlags(4)=1024
AcroPDDoc.GetFlags(5)=1024
AcroPDDoc.GetFlags(6)=1024

▼ Acrobat v5.0 の結果

※1152=1024+128
※1157=1024+128+4+1

AcroPDDoc.GetFlags(1)=1152
AcroPDDoc.GetFlags(2)=1157
AcroPDDoc.GetFlags(3)=1157
AcroPDDoc.GetFlags(4)=1152
AcroPDDoc.GetFlags(5)=1152
AcroPDDoc.GetFlags(6)=1152

▼ Acrobat v6.0 の結果

AcroPDDoc.GetFlags(1)=1152
AcroPDDoc.GetFlags(2)=1157
AcroPDDoc.GetFlags(3)=1157
AcroPDDoc.GetFlags(4)=1152
AcroPDDoc.GetFlags(5)=1152
AcroPDDoc.GetFlags(6)=1152

▼ Acrobat v7.0 の結果

AcroPDDoc.GetFlags(1)=1152
AcroPDDoc.GetFlags(2)=1157
AcroPDDoc.GetFlags(3)=1157
AcroPDDoc.GetFlags(4)=1152
AcroPDDoc.GetFlags(5)=1152
AcroPDDoc.GetFlags(6)=1152
AcroPDDoc.GetFlags(9)=0

▼ Acrobat v8.0 の結果

AcroPDDoc.GetFlags(1)=1152
AcroPDDoc.GetFlags(2)=1157
AcroPDDoc.GetFlags(3)=1157
AcroPDDoc.GetFlags(4)=1152
AcroPDDoc.GetFlags(5)=1152
AcroPDDoc.GetFlags(6)=1152
AcroPDDoc.GetFlags(9)=0

▼ Acrobat v9.0 の結果

AcroPDDoc.GetFlags(1)=1152
AcroPDDoc.GetFlags(2)=1157
AcroPDDoc.GetFlags(3)=1157
AcroPDDoc.GetFlags(4)=1152
AcroPDDoc.GetFlags(5)=1152
AcroPDDoc.GetFlags(6)=1152
AcroPDDoc.GetFlags(9)=0

 

補足

  • 以下の注意を参照。
  • 上記の実行結果は文書フラグが持っている値の合計です。しかし、この値でどんな文書フラグが立っているのか直ぐには判りません。その値の見方の手順を以下に示します。
    1. Windows OSのアクセサリに有る「電卓」を起動します。そしてメニューから[表示(V)] -> [関数電卓(S)] を選択クリックします。
       普通の電卓 
       
    2. 以下の画面に変わります。
      関数電卓(初期画面)
       
    3. ここでGetFlagsメソッドの戻り値「1152」を入力します。そして「2進」チェックをクリックします。
       関数電卓(10進表示)
       
    4. 1152」が「10010000000」に変わります。 
      関数電卓(2進表示)
       
      これは「10010000000=10000000000+10000000」と言う意味で、「11桁+8桁」の数字です。ここで文書フラグに書かれている桁数を見ると「PDDocIsLinearized+PDDocOldVersion」になります。それぞれの意味は、
      ・PDDocIsLinearized : PDFドキュメントが直線化(WEB用に最適化)されています
      ・PDDocOldVersion : PDFドキュメントのバージョンは現在より古いです
      これがその時のPDFドキュメントの状態を表します。

 

注意

  1. Acrobat v4.0 ~ Acrobat v6.0 ではCloseメソッドを実行した後にGetFlagsを実行するとOLEオートメーションの実行エラーになる。
    GetFlags メソッドの実行エラー 
    実行時エラー'-2147417851 (80010105)':
    オートメーション エラーです。
    サーバーによる例外が返されました。

     
  2. Acrobat v7.0 ~ Acrobat v9.0 ではCloseメソッドを実行した後にGetFlagsメソッドを実行すると、戻り値は「0」になる。
  3. PDDocOldVersion(値:128)はクリア出来ません。
  4. PDDocIsModified(値:4)をクリアすると、同時にPDDocNeedsSave(値:1)もクリアされます。この逆も発生します。

 

動作確認環境

  • Windows98SE( + WindowsUpdate)
    + Acrobat 4.0 + Office 2000
  • WindowsXP Pro( + SP3 + WindowsUpdate)
    + Acrobat 5.0.5 + Office 2003( + SP3)
  • WindowsXP Pro( + SP3 + WindowsUpdate)
    + Acrobat 6.0.3 Pro + Office 2003( + SP3)
  • WindowsXP Pro( + SP2 + WindowsUpdate)
    + Acrobat 7.0.9 Pro + Office 2003
  • WindowsXP Pro( + SP3 + WindowsUpdate)
    + Acrobat 7.1.4 Pro + Office 2003( + SP3)
  • WindowsXP Pro( + SP3 + WindowsUpdate)
    + Acrobat 8.2.2 Pro + Office 2003( + SP3)
  • WindowsXP Pro( + SP3 + WindowsUpdate)
    + Acrobat 9.3.2 Extended + Office 2003( + SP3)

 

Adobe Web 解説 URL(英語) v9.1

http://livedocs.adobe.com/acrobat_sdk/9.1/Acrobat9_1_HTMLHelp/IAC_API_OLE_Objects.103.111.html

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

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

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