AcroExch.PDDoc: SetFlags メソッド

TOP > AcroExch.PDDoc > SetFlags      [...]


説明

文書フラグをOLEで使用中のPDFドキュメントにセットします。

文書フラグはビット単位でセットします。

 

形式

VARIANT_BOOL SetFlags(long nFlags);

 

引数

  1. 第一引数 (long nFlags):
    文書フラグの定数を指定します。 合計で指定も出来ます。
    PDDocWasRepaired, PDDocNewMajorVersion,
    PDDocNewMinorVersion, PDDocOldVersion 等。

 

戻り値

  • 戻り値は常に、-1 が返されます。

 

動作するバージョン

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_SetFlags()

    '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()
    '現在の文書フラグの状態を表示する。
    Debug.Print "AcroPDDoc.GetFlags(1)=" & objAcroPDDoc.GetFlags()
    
    '文書フラグを変更する =+1
    lRet = objAcroPDDoc.SetFlags(PDDocNeedsSave)
    '文書フラグの状態を表示する。
    Debug.Print "AcroPDDoc.GetFlags(2)=" & objAcroPDDoc.GetFlags()
    
    '文書フラグを変更する =2+1024
    lRet = objAcroPDDoc.SetFlags(PDDocRequiresFullSave _
                               + PDDocIsLinearized)
    '文書フラグの状態を表示する。
    Debug.Print "AcroPDDoc.GetFlags(3)=" & 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 の結果

AcroPDDoc.GetFlags(1)=1024 ※ 2進表示=10000000000
AcroPDDoc.GetFlags(2)=1029 ※ 2進表示=10000000101
AcroPDDoc.GetFlags(3)=1031 ※ 2進表示=10000000111

▼ Acrobat v5.0 の結果

AcroPDDoc.GetFlags(1)=1152 ※ 2進表示=10010000000
AcroPDDoc.GetFlags(2)=1157 ※ 2進表示=10010000101
AcroPDDoc.GetFlags(3)=1159 ※ 2進表示=10010000111

▼ Acrobat v6.0 の結果

AcroPDDoc.GetFlags(1)=1152 ※ 2進表示=10010000000
AcroPDDoc.GetFlags(2)=1157 ※ 2進表示=10010000101
AcroPDDoc.GetFlags(3)=1159 ※ 2進表示=10010000111

▼ Acrobat v7.0 の結果

AcroPDDoc.GetFlags(1)=1152 ※ 2進表示=10010000000
AcroPDDoc.GetFlags(2)=1157 ※ 2進表示=10010000101
AcroPDDoc.GetFlags(3)=1159 ※ 2進表示=10010000111
AcroPDDoc.GetFlags(9)=0

▼ Acrobat v8.0 の結果

AcroPDDoc.GetFlags(1)=1152 ※ 2進表示=10010000000
AcroPDDoc.GetFlags(2)=1157 ※ 2進表示=10010000101
AcroPDDoc.GetFlags(3)=1159 ※ 2進表示=10010000111
AcroPDDoc.GetFlags(9)=0

▼ Acrobat v9.0 の結果

AcroPDDoc.GetFlags(1)=1152 ※ 2進表示=10010000000
AcroPDDoc.GetFlags(2)=1157 ※ 2進表示=10010000101
AcroPDDoc.GetFlags(3)=1159 ※ 2進表示=10010000111
AcroPDDoc.GetFlags(9)=0

 

補足

  1. Acrobvat v4.0以外の実行結果は同じです。(バグ?
  2. 第一引数の値は数値でも指定できるが、ミスをする可能性が有るので、定数を使用します。
  3. 第一引数の値は合計値を指定する事も出来ます。
  4. 第一引数の値に値=1(PDDocNeedsSave)を指定すると、同時に値=4(PDDocIsModified)も指定された状態になります。
  5. 制限事項(英語原文):Flags to be set. See PDDoc.GetFlags for a description of the flags. The flags PDDocWasRepaired, PDDocNewMajorVersion, PDDocNewMinorVersion, and PDDocOldVersion are read-only and cannot be set.
    翻訳すると、この4つの文書フラグは使用出来ない、と書かれているみたいです。
    文書フラグ自体の意味が理解出来ない部分があるので、テストして解説が出来ません。(スイマセン

 

注意

  • 備考の4番目にも書きましたが、SetFlagsメソッドの実行結果は連鎖反応を起こし、他の値(文書フラグ)も設定される事があります。
  • Acrobat v4.0 ~ Acrobat v6.0 ではCloseメソッドを実行した後にGetFlagsを実行するとOLEオートメーションの実行エラーになる。
    OLEオートメーションエラー 
    実行時エラー'-2147417851 (80010105)':
    オートメーション エラーです。
    サーバーによる例外が返されました。
  • Acrobat v7.0 ~ Acrobat v9.0 ではCloseメソッドを実行した後にGetFlagsメソッドを実行すると、戻り値は「0」になる。 

 

動作確認環境

  • 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.124.html

 

戻る

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin

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

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

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