TOP > *
概要
Acrobat OLEでのPDFバージョンの扱いを解説します。Acrobat本体での手作業と異なります。
- Acrobat OLE
プログラグの処理内で扱っているPDFのPDFバージョンで保存されます。複数のPDFを扱っている場合は一番上のPDFバージョンで保存されます。
但し、プログラムの処理内容によってはPDFバージョンが上がる場合もあるので注意が必要です。
PDFバージョンを変更する操作は出来ません。
- Acrobat本体での手作業
保存を行うと「Adobe PDF 設定」に従って保存されます。
Excelシートの印刷で「Adobe PDF」を使った時も「Adobe PDF 設定」に従って印刷(保存)されます。
この設定を変更してPDFバージョンを変更する事も出来ます。
※注)「手作業」の部分は詳細に動作検証してない。
注意事項
ここでの解説はメーカーサイトから公開されている公式情報では無く、当サイトがテスト結果から推測した内容です。テストケースが漏れている可能性も有るので、各自が実際に検証した上でご利用下さい。
検証の環境
- Windows 10 Pro 64bit
- Acrobat XI Pro
- 「Adobe PDF 設定」の [互換性のある形式] は標準が1.6ですが、検証の為に 1.5 の「Acrobat 6 (PDF 1.5)」に変更しました。
検証の図
- ボックスはPDFファイルを示します。
- 数値はPDFバージョンを示します。
- (*)の*は処理内容を示します。
検証:PDFバージョンの変化(1)
処理内容
- 頁の削除等の処理を何もしないで、開いて別名で保存するだけです。
結果
まとめ
- PDFバージョンは変更されずに保存されます。
検証:PDFバージョンの変化(2)
処理内容
- PDFの頁を1頁だけ削除して、その後に別名で保存します。
結果
まとめ
- 元のPDFバージョンで保存します。但し、バージョンが1.5以下の場合は1.6で保存します。
バージョンが上がるのはAcrobat XI ProのOLE仕様と予測されます。
検証:PDFバージョンの変化(3)
処理内容
- A.PDFの全ページをB.PDFへ挿入した後にB.PDFを保存します。
結果
まとめ
- ケース 3-1 と 3-2:
Acrobat OLEで何らかの処理を行うと上のPDFバージョン 1.6 (Acrobat 7)で保存します。
注意)「Adobe PDF 設定」の [互換性のある形式] は検証の為に 1.5 の「Acrobat 6 (PDF 1.5)」に設定しています。にもかかわらず1.6で保存されたと言う事は、「Adobe PDF 設定」は参照されず、Acrobat XI ProでのOLE仕様が1.6と定義されている、と予測されます。 - ケース 3-3 ~ 3-7:
PDFページの存在有り無しに関係無く、扱ったPDFの一番上位のPDFバージョンで保存されます。
総まとめ
- PDFページの存在有り無しに関係無く、扱ったPDFの一番上位のPDFバージョンで最後は処理されます。
- PDFバージョンの最終が1.5以下の場合は1.6に上げられます。
これは動作環境にインストールされているAcrobat のOLE仕様と予想されます。今回はAcrobat XI Proでの仕様と思われます。 - 「Adobe PDF 設定」の値は影響しません。
備考
- PDFバージョンのみを強制的に変更したい場合は、コマンドラインツール CPDFの -set-version オプションを使います。
参照
- PDF のバージョンとは
- Adobe PDF 変換設定
Adobe社サイト:「Adobe PDF 設定」のAdobe PDF プリセットに関する解説です。
< TOPへ >
サイト管理者用メモ
これ以降はサイト管理者のメモです。見なくて結構です。
テストで使用したVBAコード。
001 Option Explicit
002
003 Sub Test_Case_1()
004
005 Dim AcroPDDocNew As New Acrobat.AcroPDDoc
006 Dim lRet As Long
007 Dim lGetNumPages As Long
008 Dim sPath As String
009
010 Const CON_PATH = "I:\Adobe PDF\"
011
012 'PDFを開く
013 sPath = CON_PATH & "PDF-1.7-VBA.pdf"
014 lRet = AcroPDDocNew.Open(sPath)
015
016 '変更されたPDFファイルを保存
017 sPath = CON_PATH & "test-new-B4-1.7.pdf"
018 lRet = AcroPDDocNew.Save(1, sPath)
019 lRet = AcroPDDocNew.Close()
020
021 'オブジェクトを強制開放する
022 Set AcroPDDocNew = Nothing
023
024 End Sub
025
026 Sub Test_Case_2()
027
028 Dim AcroPDDocNew As New Acrobat.AcroPDDoc
029 Dim lRet As Long
030 Dim lGetNumPages As Long
031 Dim sPath As String
032
033 Const CON_PATH = "I:\Adobe PDF\"
034
035 'PDFを開く
036 sPath = CON_PATH & "PDF-1.7-VBA.pdf"
037 lRet = AcroPDDocNew.Open(sPath)
038 '1ページを削除
039 lRet = AcroPDDocNew.DeletePages(0, 0)
040
041 '変更されたPDFファイルを保存
042 sPath = CON_PATH & "test-new-B4-1.7.pdf"
043 lRet = AcroPDDocNew.Save(1, sPath)
044 lRet = AcroPDDocNew.Close()
045
046 'オブジェクトを強制開放する
047 Set AcroPDDocNew = Nothing
048
049 End Sub
050
051
052 Sub Test_Case_3()
053
054 Dim AcroPDDocNew As New Acrobat.AcroPDDoc
055 Dim AcroPDDocAdd As New Acrobat.AcroPDDoc
056 Dim lRet As Long
057 Dim lGetNumPages As Long
058 Dim sPath As String
059
060 Const CON_PATH = "I:\Adobe PDF\"
061
062 'PDFを開く
063 sPath = CON_PATH & "PDF-1.4-VBA.pdf"
064 lRet = AcroPDDocNew.Open(sPath)
065
066 '全ページを削除して、空のPDFにする
067 lGetNumPages = AcroPDDocNew.GetNumPages() - 1
068 lRet = AcroPDDocNew.DeletePages(0, lGetNumPages)
069
070 'PDFファイルを追加する
071 sPath = CON_PATH & "PDF-1.4-VBA.pdf"
072 lRet = AcroPDDocAdd.Open(sPath)
073 lGetNumPages = AcroPDDocAdd.GetNumPages()
074 lRet = AcroPDDocNew.InsertPages(-1, _
075 AcroPDDocAdd, 0, lGetNumPages, True)
076 lRet = AcroPDDocAdd.Close()
077
078 '変更されたPDFファイルを保存
079 sPath = CON_PATH & "test-new-A7.pdf"
080 lRet = AcroPDDocNew.Save(1, sPath)
081 lRet = AcroPDDocNew.Close()
082
083 'オブジェクトを強制開放する
084 Set AcroPDDocAdd = Nothing
085 Set AcroPDDocNew = Nothing
086
087 End Sub
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
Adobe PDF 設定
Acrobat OLEはこの設定を見ないので関係無いが、メモだけ残す。
Excelの印刷時に指定する方法:
プリンタ「Adobe PDF」を選択し、[プロパティ] をクリック。
以下の画面が出たら、[PDF設定] -> [編集]ボタン をクリックし、更に次の画面が表示したら、そこから [互換性のある形式] で指定したいPDFバージョンを選択する。
以上でPDFバージョンの指定が可能。
< TOPへ >