前提・実現したいこと
VBA(Excel)でPDF文書のプロパティを取得したいです。いくつかはうまく取得できているのですが、**「ページレイアウト」**の取得方法が分からず困っています。ページレイアウトには、以下のいずれかの値が設定されているので、これらを数値等で取得したいです。
- デフォルト
- 単一ページ
- 連続ページ
- 見開きページ
- 連続見開きページ
- 見開きページ(表紙)
- 連続見開きページ(表紙)
使い道ですが、数百あるPDFファイルを読み込み、設定されているページレイアウトに応じて印刷方法(印刷の向きやNアップ)を制御するための判定材料として使いたいと考えています。
補足情報
**「ページレイアウト」**は、Acrobatのメニューから「ファイル」→「文書のプロパティ」の「開き方」タブにあります。
http://pdf-file.nnn2.com/?p=783で紹介されているようなAcrobatアプリケーションの環境設定ではなく、PDFファイルのプロパティの方を取得したいです。
取得できているその他のプロパティ
質問を受けまして、現在取得できているプロパティのコードを掲載しました。
Excel
1Private Sub GetProperty() 2Dim objAcroAVDoc As New Acrobat.AcroAVDoc 3Dim objAcroPDDoc As Acrobat.AcroPDDoc 4Dim objAcroPDPage As Acrobat.AcroPDPage 5Dim objAcroPoint As Acrobat.AcroPoint 6Dim objAcroApp As New Acrobat.AcroApp 7Dim lRet As Long 8Dim fp As String 9Dim i As Long 10Dim bRet As Boolean 11 12fp = "xxx.pdf" 13lRet = objAcroAVDoc.Open(fp, "") 14 15Set objAcroPDDoc = objAcroAVDoc.GetPDDoc 16Set objAcroPDPage = objAcroPDDoc.AcquirePage(0) 17Set objAcroPoint = objAcroPDPage.GetSize 18 19Cells(1,1) = objAcroPDDoc.GetNumPages '★1 20Cells(1,2) = objAcroPoint.x '★2 21Cells(1,3) = objAcroPoint.y '★3 22Cells(1,4) = objAcroApp.GetPreferenceEx(52) '★4 23 24lRet = objAcroAVDoc.Close(1) 25 26Set objAcroPoint = Nothing 27Set objAcroPDPage = Nothing 28Set objAcroPDDoc = Nothing 29Set objAcroAVDoc = Nothing 30 31End Sub
上記コードは、掲載用に少しアレンジしています。★1~3のページ数やページサイズは取得できていますが、★4が取れていない箇所で、このコードではAcrobatアプリケーションの環境設定を取得してしまいますので、ファイルに設定されている値を取得できていません。