関数:PDFを特定のフォーマットに変換する

TOP > サンプル/関数 > 関数:PDFを特定のフォーマットに変換する      [...]


 

関数:PDFを特定のフォーマットに変換する 

 

機能

PDFファイルを特定のフォーマット(doc , html , xml 等) に変換する。

  • 変換可能な別フォーマットの種類はインストールされている Acrobat Pro アプリのバージョンによっても異なる。
    テキスト(txt) , Word(doc) , Word97(doc) , Word07(docx) , EPS , HTML , HTML 3.2形式 , HTML 4形式 , JPEG2K(jpf, jpx, jp2, j2k, j2c, jpc) , JPEG(jpeg , jpg , jpe) , TEXT(txt) , PNG , PowerPoint(pptx) , spreadsheet , PS , rtf , Excel(xlsx) , tiff(tiff , tif) , XML , PDF/A , PDF/E , PDF/X
    詳細は ExportTask.xml 参照
  • 出力先フォルダを指定できる ※一括
  • PDFファイル単位で出力時のファイル名が指定できる
  • 当関数は変換する前に厳重なPDFのファイル状態と動作環境の状態を事前にチェックする

 

形式

[boolean] = Convert_PDF_Format_Main_nnn2(
    string strConvertPdf() , 
    string strOutputFolder )

 

引数

引数の説明は難しいので、必ずサンプルも参照してください。

  1. 第1引数 ( string strConvertPdf() ) :   ※備考も参照
    2次元配列。 以下は2次元目の位置
    0 : 変換元のPDFのフルパス (IN/必須)
    1 : 変換タイプ (IN/必須)
        例:accesstext , doc , pdfx
    2 : 変換先ファイル名 (IN/任意)
        未指定時はPDFファイルのファイル名+変換タイプのデフォルト拡張子
    3 : 処理結果 エラーメッセージをセット(OUT)
  2. 第2引数 ( string strOutputFolder ) : (IN) 
    変換先のフォルダ名
    既に存在する必要が有る。無いとエラーになる。 

 

戻り値

  1. True : 正常な処理
  2. False : 実行エラー等

 

動作するバージョン

Version Adobe
Acrobat
備考
4
NO
Acrobat 4.0    ※Windows 98SE + Excel 2000
5
NO

Acrobat 5.0.5
6
NO

Acrobat 6.0.3 Pro
7
NO
Acrobat 7.1.4 Pro
8
OK
Acrobat 8.2.2 Pro
9
-
Acrobat 9.3.2 Extended
10
-
Acrobat X (10.1.8) Extended
11
-
Acrobat XI (11.0.04) Extended

未確認だが Acrobat 8 Pro 以上で動作すると説明では有る。

 

Microsoft
Excel
結果
備考
2000
NO
※OS : Windows 98SE
XP
-
※Office XP [=2002]
2003
-
Windows XP Pro (SP3)
2007
OK
Windows 7 64bit Home (SP1)
2010
-
 
  • OK : 正常処理する。
  • NO : 正常に処理できない。 
  • - : 未確認。 

 





 


VBAサンプル

 

  • 参照設定を事前に行う。
  • 以下のサンプルはテスト用です。
    F8キーでステップ実行して動作確認できます。

 

' 関数のテスト用

Sub Convert_PDF_Format_Main_TEST()

    Dim bRet                    As Boolean
    Dim strOutputFolder         As String
    Dim strConvPDFfile(2, 3)    As String
    Dim i                       As Long
    
    strOutputFolder = "I:¥Adobe PDF¥Output"
    
    strConvPDFfile(0, 0) = "I:¥Adobe PDF¥TEST-NO-Sec.pdf"
    strConvPDFfile(0, 1) = "accesstext"     '変換タイプ
    strConvPDFfile(0, 2) = "TEST-NO-Sec.txt" '出力ファイル名
    strConvPDFfile(0, 3) = ""               '処理結果
    strConvPDFfile(1, 0) = "I:¥Adobe PDF¥TEST-NO-Sec.pdf"
    strConvPDFfile(1, 1) = "doc"            '変換タイプ
    strConvPDFfile(1, 2) = "TEST-NO-Sec.doc"    '出力ファイル名
    strConvPDFfile(1, 3) = ""               '処理結果
    strConvPDFfile(2, 0) = "I:¥Adobe PDF¥VBJavaScript.pdf"
    strConvPDFfile(2, 1) = "eps"            '変換タイプ
    strConvPDFfile(2, 2) = "" '未指定はVBJavaScript.epsになる
    strConvPDFfile(2, 3) = ""               '処理結果
    
    bRet = Convert_PDF_Format_Main_nnn2(strConvPDFfile, strOutputFolder)
    
    For i = LBound(strConvPDFfile, 1) To UBound(strConvPDFfile)
        If strConvPDFfile(i, 3) <> "" Then
            Debug.Print i & " " & strConvPDFfile(i, 3)
        End If
    Next i
    
End Sub

'********************************************************
'
' PDFを別フォーマット形式に変換します(Main)
'
' ・変換できる環境であるか事前チェックします
' ・インストールされているAcrobatに合った変換パラメータ作成
' ・出力先フォルダが指定できる
' ・出力ファイル名が指定できる
'
' Create  : 2013/10/09
' Update  :
' Vertion : 1.0.0
'
' 引数1   : strConvertPdf() As String (IN/OUT)
'           ※2次元配列で以下は2次元目の位置
'           0 : 変換元のPDFのフルパス (IN/必須)
'           1 : 変換タイプ (IN/必須)
'               例:accesstext , doc , pdfx
'           2 : 変換先ファイル名 (IN/任意)
'           3 : 処理結果 エラーメッセージをセット(OUT)
'
' 引数2   : strOutputFolder As String (IN)
'           出力先フォルダ名
'
' 戻り値  : True  正常終了
'           False エラーが有る
'
' 環境条件:
'        Acrobat 8 Pro,9 Pro,10 Extend,11 Extend が
'         インストールされている必要がある
'
' 備考    :・既にファイルが存在しても無条件に上書きされる
'          ・処理はサイレントで行われる
' URL     : http://pdf-file.nnn2.com/?p=768
' その他  : 著作権等は主張しません。
'           上記URLにコメントを頂けると嬉しいです。
'
'********************************************************

Public Function Convert_PDF_Format_Main_nnn2( _
            ByRef strConvertPdf() As String, _
            ByVal strOutputFolder As String) As Boolean
            
On Error GoTo Err_Convert_PDF_Format_Main_nnn2:

    Dim tblCovertPara(19, 2) As String '変換パラメータ・テーブル
    Dim strAcrobatVersion   As String  'Acrobatバージョン
    Dim strAcrobatPath      As String  'File full path
    Dim strMsg              As String  'Error Message
    Dim bRet                As Boolean '戻り値
        
    Dim i                   As Long
    Dim j                   As Long
    Dim lIndex              As Long
    Dim strPara             As String
    Dim lPara_Inx           As Long
    Dim strOutputFile       As String
    Dim strOutFileName      As String
    
    Const CON_APP = "Acrobat"   'Acrobat
    
    Convert_PDF_Format_Main_nnn2 = True
    
    '----------------------------------------
    'Acrobat バージョンの取得
    bRet = Get_Adobe_App_Info_nnn2( _
                CON_APP, _
                strAcrobatPath, _
                strAcrobatVersion, _
                strMsg)
    If bRet = False Then
        Convert_PDF_Format_Main_nnn2 = False
        MsgBox "01:Acrobat バージョンの取得 エラー / " & strMsg
        Exit Function
    End If
    If strAcrobatVersion = vbNullString Then Exit Function
    
    '----------------------------------------
    'PDFの変換テーブルの作成
    bRet = Convert_PDF_Format_ET_nnn2(strAcrobatVersion, tblCovertPara)
    If bRet = False Then
        Convert_PDF_Format_Main_nnn2 = False
        Exit Function
    End If
    
    '----------------------------------------
    '出力先フォルダの存在チェック
    If strOutputFolder = "" Then
        Convert_PDF_Format_Main_nnn2 = False
        MsgBox "02:出力先フォルダを指定して下さい"
        Exit Function
    End If
    If Right$(strOutputFolder, 1) = "¥" Then
        strOutputFolder = Left$(strOutputFolder, Len(strOutputFolder) - 1)
    End If
    '※Dir関数はフォルダ名の最後に ¥ が入ってるとエラーになる
    If Dir$(strOutputFolder, vbDirectory) = "" Then
        Convert_PDF_Format_Main_nnn2 = False
        MsgBox "03:出力先フォルダが存在しない"
        Exit Function
    End If
    strOutputFolder = strOutputFolder & "¥"
    
    
    '----------------------------------------
    '出力先フォルダのCドライブ以外のチェック
    '※「Safe Path」についての注意事項
    '※ http://pdf-file.nnn2.com/?p=229
    If Left$(strOutputFolder, 1) = "C" Or Left$(strOutputFolder, 1) = "c" Then
        Convert_PDF_Format_Main_nnn2 = False
        MsgBox "03:出力先フォルダにCドライブは使えない"
        Exit Function
    End If
    
    '----------------------------------------
    'ループ処理

    For i = LBound(strConvertPdf, 1) To UBound(strConvertPdf, 1)
        
        '----------------------------------------
        'ファイルのチェック
         bRet = Check_PDF_W_nnn2(strConvertPdf(i, 0), strMsg)
        If bRet = False Then
            strConvertPdf(i, 3) = "10:PDFファイルでは無い / " & strMsg
            Convert_PDF_Format_Main_nnn2 = False
            GoTo Skip_Convert_PDF_Format_Main_nnn2:
        End If
        
        '----------------------------------------
        '変換パラメータのチェック
        strPara = strConvertPdf(i, 1)
        lPara_Inx = -1
        For j = LBound(tblCovertPara, 1) To UBound(tblCovertPara, 1)
            If tblCovertPara(j, 2) = strPara Then
                lPara_Inx = j
                Exit For
            End If
        Next j
        If lPara_Inx = -1 Then
            strConvertPdf(i, 3) = "11:変換パラメータが間違ってる"
            Convert_PDF_Format_Main_nnn2 = False
            GoTo Skip_Convert_PDF_Format_Main_nnn2:
        End If
        
        '----------------------------------------
        '出力ファイル名を決定
        strOutputFile = strConvertPdf(i, 2)
        If strOutputFile = "" Then
            '出力ファイル名が指定されて無いので
            '入力ファイル名を使う
            strOutFileName = Right$(strConvertPdf(i, 0), _
                    (Len(strConvertPdf(i, 0)) - InStrRev(strConvertPdf(i, 0), "¥")))
            '拡張子はデフォルトに変更する
            strOutputFile = strOutputFolder & _
                Left$(strOutFileName, Len(strOutFileName) - 3) & tblCovertPara(lPara_Inx, 1)
        Else
            '出力ファイル名が指定されてる
            '出力ファイル名に拡張子が存在するかチェック
            If InStrRev(strOutputFile, ".") < 1 Then
                '拡張子が指定されてない Not File extension
                strConvertPdf(i, 3) = "12:出力ファイル名に拡張子が指定されて無い"
                Convert_PDF_Format_Main_nnn2 = False
                GoTo Skip_Convert_PDF_Format_Main_nnn2:
            End If
            strOutputFile = strOutputFolder & strOutputFile
            
        End If
        
        '----------------------------------------
        '[ページの抽出]等が可能かを事前チェック
        bRet = Convert_PDF_Format_Check_nnn2(strConvertPdf(i, 0), strMsg)
        If bRet = False Then
            '[開くときのパスワード]か
            '[ページの抽出]が不可のセキュリティ
            'が有り、PDFを変換できない。
            strConvertPdf(i, 3) = "13:文書のセキュリティで処理不可 / " & strMsg
            Convert_PDF_Format_Main_nnn2 = False
            GoTo Skip_Convert_PDF_Format_Main_nnn2:
        End If
        
        '----------------------------------------
        '変換処理を開始する
        bRet = Convert_PDF_Format_nnn2( _
                strConvertPdf(i, 0), strOutputFile, _
                tblCovertPara(lPara_Inx, 0), strMsg)
        If bRet = False Then
            strConvertPdf(i, 3) = "14:文書の変換で失敗しました / " & strMsg
            Convert_PDF_Format_Main_nnn2 = False
        End If

Skip_Convert_PDF_Format_Main_nnn2:
        
'        If strConvertPdf(i, 3) <> "" Then
'            Debug.Print i & ": " & strConvertPdf(i, 3)
'        End If
    Next i
    
    '----------------------------------------
    '終了処理
'    Debug.Print Time & " End"
    
    If Convert_PDF_Format_Main_nnn2 = False Then
        MsgBox "結果に問題を表示しました" & vbCrLf _
            & "中断した処理もあります" & vbCrLf & _
            "確認して再度実行して下さい", , "エラー"
    Else
        MsgBox "処理は完了しました", , "お知らせ"
    End If
    
    Convert_PDF_Format_Main_nnn2 = True
    
    Exit Function
    
Err_Convert_PDF_Format_Main_nnn2:
    MsgBox "Run time error" & vbCrLf & Err.Number & vbCrLf & _
        Err.Description, vbApplicationModal, _
        "実行エラー Convert_PDF_Format_Main_nnn2"
    
    Convert_PDF_Format_Main_nnn2 = False
End Function

'********************************************************
'
'[ページの抽出]等が可能かを事前チェック
'
' Create  : 2013/10/09
' Update  :
' Vertion : 1.0.0
'
'********************************************************

Private Function Convert_PDF_Format_Check_nnn2( _
            ByRef strCovertPdfFile As String, _
            ByRef strMessage As String) As Boolean

On Error GoTo Err_Convert_PDF_Format_Check_nnn2:

    Dim objAcroPDDoc    As New Acrobat.AcroPDDoc
    Dim objAcroPDDocNew As New Acrobat.AcroPDDoc
    Dim lRet            As Long
    Dim i               As Long

    Convert_PDF_Format_Check_nnn2 = True
    strMessage = ""
    
    'PDFファイルをサイレントで開く。
    lRet = objAcroPDDoc.Open(strCovertPdfFile)
    
    '--------------------------------------------------
    '「文書を開くときのパスワード」付きPDF
    If lRet = 0 Then
        '「文書を開くときのパスワード」付きPDFファイルです。
        strMessage = "[文書を開くときのパスワード]付きPDFファイル"
        Convert_PDF_Format_Check_nnn2 = False
        'コレ以上の処理は出来ない
        GoTo Skip_Convert_PDF_Format_Check_nnn2:
    End If

    '--------------------------------------------------
    '.ページの抽出:ページの抽出可否
    '※検討中
        
    '--------------------------------------------------
    '.内容のコピー:内容の選択/コピーの可否
    '※検討中
    
    '--------------------------------------------------
    '.ページの抽出:ページの抽出可否
    '空の仮のPDFファイルを作成する
    lRet = objAcroPDDocNew.Create()
    '仮のPDFファイルに先頭ページを追加する
    lRet = objAcroPDDocNew.InsertPages(-1, objAcroPDDoc, 0, 1, True)
    If lRet = 0 Then
        '「ページの抽出」を許さないPDFファイル
        strMessage = "[ページの抽出]を許さないPDFファイル"
        Convert_PDF_Format_Check_nnn2 = False
    End If
    'PDFファイルを閉じる ※変更は無視
    lRet = objAcroPDDoc.Close

Skip_Convert_PDF_Format_Check_nnn2:

    'オブジェクトを強制開放する
    Set objAcroPDDoc = Nothing
    Set objAcroPDDocNew = Nothing

    Exit Function
    
Err_Convert_PDF_Format_Check_nnn2:
    strMessage = Err.Number & " " & Err.Description
    Convert_PDF_Format_Check_nnn2 = False
End Function

'********************************************************
'
' PDFを別フォーマット形式に変換する
' Convert to (format) a separate file PDF
'
' ※既にファイルが存在しても無条件に上書きされる。
'
' Create  : 2013/10/09
' Update  :
' Vertion : 1.0.0
'
' 引数1   : strPdfFilePath As String (IN)
'           PDFファイルのフルパス
' 引数2   : strOutputFile As String (IN)
'           変換する出力ファイルのフルパス
' 引数3   : strCmd As String (IN)
'           変換時のパラメータ
' 引数4   : strMsg As String (OUT)
'           エラー発生時のエラーメッセージ
'           ""はエラー無し
'
' 戻り値  : True  正常処理
'           False エラー処理 PDFで無い
'
' 備考    : JavaScriptオブジェクトを使ってPDFファイルを
'           別の形式のファイルへ変換する。
'           処理の最初に objAcroApp.CloseAllDocs を実行して
'           OLE処理でのエラーが出ない様にする。(経験上より)
' URL     : http://pdf-file.nnn2.com/?p=768
' その他  : 著作権等は主張しません。
'           上記URLにコメントを頂けると嬉しいです。
'
'********************************************************

Private Function Convert_PDF_Format_nnn2( _
                ByVal strPdfFilePath As String, _
                ByVal strOutputFile As String, _
                ByVal strCmd As String, _
                ByRef strMsg As String) As Boolean

On Error GoTo Err_Convert_PDF_Format_nnn2:

    Convert_PDF_Format_nnn2 = True
    
    Dim objAcroApp      As New Acrobat.AcroApp
    Dim objAcroPDDoc    As New Acrobat.AcroPDDoc
    Dim jso             As Object
    Dim lRet            As Long

    '(経験上より)Acrobatアプリをメモリに強制ロードする
    '※jsoオブジェクトの作成時にエラーとなる場合の回避策
    lRet = objAcroApp.CloseAllDocs
    'lRetの結果は見ない
    
    'Debug
'    Debug.Print Time & " SaveAs " & strOutputFile & " , " & strCmd
    
    lRet = objAcroPDDoc.Open(strPdfFilePath)
    If lRet = 0 Then
        Convert_PDF_Format_nnn2 = False
        strMsg = "20:objAcroPDDoc.Open(" & strPdfFilePath & ")"
'        Debug.Print strMsg
        GoTo Err_Convert_PDF_Format_nnn2:
    End If
    
    'JavaScriptオブジェクトを作成する。
    Set jso = objAcroPDDoc.GetJSObject
    If jso Is Nothing Then
        Convert_PDF_Format_nnn2 = False
        strMsg = "21:not get jso object (Nothing)"
'        Debug.Print strMsg
        GoTo Err_Convert_PDF_Format_nnn2:
    End If
    
    'PDFを別ファイルへ変換する
    jso.SaveAs strOutputFile, strCmd
    '当関数は上記でエラーが極力出ないように作成済み
    
    'PDFを閉じる
    lRet = objAcroPDDoc.Close
    'lRetの結果は見ない
    
    'Acrobatアプリケーションを終了する
    lRet = objAcroApp.Hide
    lRet = objAcroApp.Exit
    'オブジェクトを強制開放する
    Set jso = Nothing
    Set objAcroPDDoc = Nothing
    Set objAcroApp = Nothing
    
    Convert_PDF_Format_nnn2 = True
    Exit Function
    
Err_Convert_PDF_Format_nnn2:
    
    strMsg = Err.Number & ":" & Err.Description
'    Debug.Print strMsg
    MsgBox strMsg, , "Convert_PDF_Format_nnn2"
   
    On Error Resume Next

    'Acrobatアプリケーションを終了する
    lRet = objAcroApp.Hide
    lRet = objAcroApp.Exit
    'オブジェクトを強制開放する
    Set jso = Nothing
    Set objAcroPDDoc = Nothing
    Set objAcroApp = Nothing
    Convert_PDF_Format_nnn2 = False
End Function

'********************************************************
'
' PDFを別フォーマット形式に変換するテーブルの作成
'
' Create  : 2013/10/08
' Update  :
' Vertion : 1.0.0
'
' 備考:
' 変換パラメータ:
'        PDFを別フォーマットに変換するjsoオブジェクトの
'        変換パラメータ
'      デフォルトの拡張子:
'        出力ファイルを指定しなかった時のデフォルトの
'        拡張子
'
' URL     : http://pdf-file.nnn2.com/?p=768
' その他  : 著作権等は主張しません。
'           上記URLにコメントを頂けると嬉しいです。
'
'********************************************************

Private Function Convert_PDF_Format_ET_nnn2( _
            ByVal strAcrobatVersion As String, _
            ByRef tblCovertPara() As String) As Boolean

    '事前チェック
    If Not (CLng(strAcrobatVersion) >= 8 And CLng(strAcrobatVersion) <= 11) Then
        MsgBox "Adobe Application バージョンが無い" & _
            vbCrLf & "又は処理未対応のバージョン", , "実行エラー"
        Convert_PDF_Format_ET_nnn2 = False
        Exit Function
    End If
    
    Dim i           As Long
    Dim j           As Long
    Dim strPara()   As String   '作業用

    'Initialization
    For i = LBound(tblCovertPara, 1) To UBound(tblCovertPara, 1)
        For j = LBound(tblCovertPara, 2) To UBound(tblCovertPara, 2)
            tblCovertPara(i, j) = vbNullString
        Next j
    Next i

    'Value of the array table
    'Acrobatバージョン単位にExportTask.xmlの情報を元に
    '変換テーブルを作成する
    
    Select Case strAcrobatVersion
    
    Case "8"
    'Acrobat 8 ExportTask.xml
        
        '変換パラメータ
        tblCovertPara(0, 0) = "com.adobe.acrobat.accesstext"
        '出力時のデフォルト拡張子
        tblCovertPara(0, 1) = "txt"
        
        tblCovertPara(1, 0) = "com.adobe.acrobat.doc"
        tblCovertPara(1, 1) = "doc"
        
        tblCovertPara(2, 0) = "com.adobe.acrobat.eps"
        tblCovertPara(2, 1) = "eps"
        tblCovertPara(3, 0) = "com.adobe.acrobat.html-3-20"
        tblCovertPara(3, 1) = "html"
        tblCovertPara(4, 0) = "com.adobe.acrobat.html-4-01-css-1-00"
        tblCovertPara(4, 1) = "html"
        tblCovertPara(5, 0) = "com.adobe.acrobat.jp2k"
        tblCovertPara(5, 1) = "j2k"
        tblCovertPara(6, 0) = "com.adobe.acrobat.jpeg"
        tblCovertPara(6, 1) = "jpeg"
        tblCovertPara(7, 0) = "com.adobe.acrobat.plain-text"
        tblCovertPara(7, 1) = "txt"
        tblCovertPara(8, 0) = "com.adobe.acrobat.png"
        tblCovertPara(8, 1) = "png"
        tblCovertPara(9, 0) = "com.adobe.acrobat.ps"
        tblCovertPara(9, 1) = "ps"
        tblCovertPara(10, 0) = "com.adobe.acrobat.rtf"
        tblCovertPara(10, 1) = "rtf"
        tblCovertPara(11, 0) = "com.adobe.acrobat.svgxpdf"
        tblCovertPara(11, 1) = "svgx"
        tblCovertPara(12, 0) = "com.adobe.acrobat.tiff"
        tblCovertPara(12, 1) = "tiff"
        tblCovertPara(13, 0) = "com.adobe.acrobat.xml-1-00"
        tblCovertPara(13, 1) = "xml"
        tblCovertPara(14, 0) = "com.adobe.acrobat.xpdf"
        tblCovertPara(14, 1) = "pdf"
        tblCovertPara(15, 0) = "com.callas.preflight.pdfa"
        tblCovertPara(15, 1) = "pdf"
        tblCovertPara(16, 0) = "com.callas.preflight.pdfx"
        tblCovertPara(16, 1) = "pdf"
    
    Case "9"
    'Acrobat 9 ExportTask.xml
        
        '変換パラメータ
        tblCovertPara(0, 0) = "com.adobe.acrobat.accesstext"
        '出力時のデフォルト拡張子
        tblCovertPara(0, 1) = "txt"
        tblCovertPara(1, 0) = "com.adobe.acrobat.doc"
        tblCovertPara(1, 1) = "doc"
        tblCovertPara(2, 0) = "com.adobe.acrobat.eps"
        tblCovertPara(2, 1) = "eps"
        tblCovertPara(3, 0) = "com.adobe.acrobat.html-3-20"
        tblCovertPara(3, 1) = "html"
        tblCovertPara(4, 0) = "com.adobe.acrobat.html-4-01-css-1-00"
        tblCovertPara(4, 1) = "html"
        tblCovertPara(5, 0) = "com.adobe.acrobat.jp2k"
        tblCovertPara(5, 1) = "j2k"
        tblCovertPara(6, 0) = "com.adobe.acrobat.jpeg"
        tblCovertPara(6, 1) = "jpeg"
        tblCovertPara(7, 0) = "com.adobe.acrobat.plain-text"
        tblCovertPara(7, 1) = "txt"
        tblCovertPara(8, 0) = "com.adobe.acrobat.png"
        tblCovertPara(8, 1) = "png"
        tblCovertPara(9, 0) = "com.adobe.acrobat.ps"
        tblCovertPara(9, 1) = "ps"
        tblCovertPara(10, 0) = "com.adobe.acrobat.rtf"
        tblCovertPara(10, 1) = "rtf"
        tblCovertPara(11, 0) = "com.adobe.acrobat.svgxpdf"
        tblCovertPara(11, 1) = "svgx"
        tblCovertPara(12, 0) = "com.adobe.acrobat.tiff"
        tblCovertPara(12, 1) = "tiff"
        tblCovertPara(13, 0) = "com.adobe.acrobat.xml-1-00"
        tblCovertPara(13, 1) = "xml"
        tblCovertPara(14, 0) = "com.adobe.acrobat.xpdf"
        tblCovertPara(14, 1) = "xpdf"
        tblCovertPara(15, 0) = "com.callas.preflight.pdfa"
        tblCovertPara(15, 1) = "pdf"
        tblCovertPara(16, 0) = "com.callas.preflight.pdfe"
        tblCovertPara(16, 1) = "pdf"
        tblCovertPara(17, 0) = "com.callas.preflight.pdfx"
        tblCovertPara(17, 1) = "pdf"
    
    Case "10"
    'Acrobat X (10.0) ExportTask.xml
        
        '変換パラメータ
        tblCovertPara(0, 0) = "com.adobe.acrobat.accesstext"
        '出力時のデフォルト拡張子
        tblCovertPara(0, 1) = "txt"
        tblCovertPara(1, 0) = "com.adobe.acrobat.doc"
        tblCovertPara(1, 1) = "doc"
        tblCovertPara(2, 0) = "com.adobe.acrobat.docx"
        tblCovertPara(2, 1) = "docx"
        tblCovertPara(3, 0) = "com.adobe.acrobat.eps"
        tblCovertPara(3, 1) = "eps"
        tblCovertPara(4, 0) = "com.adobe.acrobat.html"
        tblCovertPara(4, 1) = "html"
        tblCovertPara(5, 0) = "com.adobe.acrobat.jp2k"
        tblCovertPara(5, 1) = "j2k"
        tblCovertPara(6, 0) = "com.adobe.acrobat.jpeg"
        tblCovertPara(6, 1) = "jpeg"
        tblCovertPara(7, 0) = "com.adobe.acrobat.plain-text"
        tblCovertPara(7, 1) = "txt"
        tblCovertPara(8, 0) = "com.adobe.acrobat.png"
        tblCovertPara(8, 1) = "png"
        tblCovertPara(9, 0) = "com.adobe.acrobat.ps"
        tblCovertPara(9, 1) = "ps"
        tblCovertPara(10, 0) = "com.adobe.acrobat.rtf"
        tblCovertPara(10, 1) = "rtf"
        tblCovertPara(11, 0) = "com.adobe.acrobat.spreadsheet"
        tblCovertPara(11, 1) = "spreadsheet"
        tblCovertPara(12, 0) = "com.adobe.acrobat.tiff"
        tblCovertPara(12, 1) = "tiff"
        tblCovertPara(13, 0) = "com.adobe.acrobat.xlsx"
        tblCovertPara(13, 1) = "xlsx"
        tblCovertPara(14, 0) = "com.adobe.acrobat.xml-1-00"
        tblCovertPara(14, 1) = "xml"
        tblCovertPara(15, 0) = "com.callas.preflight.pdfa"
        tblCovertPara(15, 1) = "pdf"
        tblCovertPara(16, 0) = "com.callas.preflight.pdfe"
        tblCovertPara(16, 1) = "pdf"
        tblCovertPara(17, 0) = "com.callas.preflight.pdfx"
        tblCovertPara(17, 1) = "pdf"
    
    Case "11"
    'Acrobat XI (11.0) ExportTask.xml
        
        '変換パラメータ
        tblCovertPara(0, 0) = "com.adobe.acrobat.accesstext"
        '出力時のデフォルト拡張子
        tblCovertPara(0, 1) = "txt"
        tblCovertPara(1, 0) = "com.adobe.acrobat.doc"
        tblCovertPara(1, 1) = "doc"
        tblCovertPara(2, 0) = "com.adobe.acrobat.docx"
        tblCovertPara(2, 1) = "docx"
        tblCovertPara(3, 0) = "com.adobe.acrobat.eps"
        tblCovertPara(3, 1) = "eps"
        tblCovertPara(4, 0) = "com.adobe.acrobat.html"
        tblCovertPara(4, 1) = "html"
        tblCovertPara(5, 0) = "com.adobe.acrobat.jp2k"
        tblCovertPara(5, 1) = "j2k"
        tblCovertPara(6, 0) = "com.adobe.acrobat.jpeg"
        tblCovertPara(6, 1) = "jpeg"
        tblCovertPara(7, 0) = "com.adobe.acrobat.plain-text"
        tblCovertPara(7, 1) = "txt"
        tblCovertPara(8, 0) = "com.adobe.acrobat.png"
        tblCovertPara(8, 1) = "png"
        tblCovertPara(9, 0) = "com.adobe.acrobat.pptx"
        tblCovertPara(9, 1) = "pptx"
        tblCovertPara(10, 0) = "com.adobe.acrobat.ps"
        tblCovertPara(10, 1) = "ps"
        tblCovertPara(11, 0) = "com.adobe.acrobat.rtf"
        tblCovertPara(11, 1) = "rtf"
        tblCovertPara(12, 0) = "com.adobe.acrobat.spreadsheet"
        tblCovertPara(12, 1) = "spreadsheet"
        tblCovertPara(13, 0) = "com.adobe.acrobat.tiff"
        tblCovertPara(13, 1) = "tiff"
        tblCovertPara(14, 0) = "com.adobe.acrobat.xlsx"
        tblCovertPara(14, 1) = "xlsx"
        tblCovertPara(15, 0) = "com.adobe.acrobat.xml-1-00"
        tblCovertPara(15, 1) = "xml"
        tblCovertPara(16, 0) = "com.callas.preflight.pdfa"
        tblCovertPara(16, 1) = "pdf"
        tblCovertPara(17, 0) = "com.callas.preflight.pdfe"
        tblCovertPara(17, 1) = "pdf"
        tblCovertPara(18, 0) = "com.callas.preflight.pdfx"
        tblCovertPara(18, 1) = "pdf"
    
    Case Else
    
        'プログラムロジックエラー
        Convert_PDF_Format_ET_nnn2 = False
        MsgBox "プログラムのロジックでエラー発生", , "実行エラー"
        Exit Function
        
    End Select
    
    'Edit Parameters
    '変換パラメータの一部を抽出
    '例:[com.adobe.acrobat.accesstext] -> [accesstext]
    '例:[com.callas.preflight.pdfx] -> [pdfx]
    For i = LBound(tblCovertPara, 1) To UBound(tblCovertPara, 1)
        If tblCovertPara(i, 0) <> vbNullString Then
            strPara = Split(tblCovertPara(i, 0), ".")
            tblCovertPara(i, 2) = strPara(3)
'            Debug.Print "tblCovertPara(" & i & ")=" & _
'                            tblCovertPara(i, 2)
        End If
    Next i

    '正常処理
    Convert_PDF_Format_ET_nnn2 = True
    
End Function

Public Function Get_Adobe_App_Info_nnn2( _
        ByVal strApp As String, _
        ByRef strPath As String, _
        ByRef strVersion As String, _
        ByRef strMsg As String) As Boolean

’※当ロジックは
関数:Acrobat , Adobe Reader のインストールパスとバージョンを取得
http://pdf-file.nnn2.com/?p=767
’から持ってくる。

End Function

 

Public Function Get_PDF_Version_nnn2( _
        ByVal sFilePath As String, _
        ByRef sPDF_Version As String, _
        ByRef lAcrobat_Version As Long) As Boolean
        
’※当ロジックは
関数:「PDFのバージョン」を取得する
http://pdf-file.nnn2.com/?p=760
’から持ってくる。

End Function

 


 

テスト結果

1. Acrobat Pro 8.3.1 + Windows 7 64bit + Excel 2007

  • 正常処理した変換パラメータ ExportTask.xml
    • com.adobe.acrobat.accesstext
    • com.adobe.acrobat.doc
    • com.adobe.acrobat.eps
    • com.adobe.acrobat.html-3-20
    • com.adobe.acrobat.html-4-01-css-1-00
    • com.adobe.acrobat.jp2k
    • com.adobe.acrobat.jpeg
    • com.adobe.acrobat.plain-text
    • com.adobe.acrobat.png
    • com.adobe.acrobat.ps
    • com.adobe.acrobat.rtf
    • com.adobe.acrobat.xml-1-00
    • com.callas.preflight.pdfx
  • 実行エラー
    • com.adobe.acrobat.svgxpdf
      • 1001実行エラー
    • com.adobe.acrobat.xpdf
      • 1001実行エラー
    • com.callas.preflight.pdfa
      • 「別のプログラムでOLEの操作が完了するまで待機を続けます」エラー 

 

備考

 

  1. 第一引数の strConvertPdf に付いて。
    2次元配列で以下の様にセットする。

        strConvPDFfile(0, 0) = "I:¥Adobe PDF¥TEST-NO-Sec.pdf"
        strConvPDFfile(0, 1) = "accesstext"     '変換タイプ
        strConvPDFfile(0, 2) = "TEST-NO-Sec.txt" '出力ファイル名
        strConvPDFfile(0, 3) = ""               '処理結果

    "accesstext" はExportTask.xml にある変換パラメータ
    com.adobe.acrobat.accesstext の4番目の文字列を指定。

  2. サンプルの Convert_PDF_Format_ET_nnn2 関数で変換パラメータ(com.adobe.acrobat.svgxpdf 等)に
    対する変換後のデフォルトの拡張子は更に検討する部分もかなり有ります。
    1. com.adobe.acrobat.jp2k -> j2k
    2. com.adobe.acrobat.svgxpdf -> svgx
    3. com.adobe.acrobat.xpdf -> pdf
    4. com.adobe.acrobat.spreadsheet -> spreadsheet
    5. com.adobe.acrobat.pptx -> pptx

 

注意

 

  1. 変換するための jso オブジェクトを正常に処理させるために、非常に複雑な事前チェック処理を行っています。
    エラー等が出る時はコメント扱いにしている Debug.Print 命令を実行させて再検討して下さい。
    ※その時は当サイトページにコメントをお願いします。
  2. 機能で説明した出力時の拡張子は全てを動作確認してしていません。
  3. PDFをHTML変換すると、イメージ(画像等)は保存先フォルダにimageフォルダを作って、そこに別に保存されます。
    この時に多数のPDFファイルをHTML変換すると、複数のHTMLファイルに対してイメージ(画像等)は同じ保存先フォルダ上に有るimageフォルダに同時に保存されます。
    同じimageフォルダに保存されるのがダメな場合は、別々の保存先フォルダを個別に指定する必要が有ります。
    詳細は「PDFをHTMLへ変換する上でのイメージファイルを扱う注意事項」も参照 
  4. 出力先ドライブにCドライブは指定できません。
    Acrobat JavaScript における「Safe Path」についての注意事項」参照

 

動作確認環境

 

  • Windows 98SE (WindowsUpdate) + Excel 2000 (SP3)
  • Windows XP Pro (SP3 + WindowsUpdate) + Excel XP (SP3)
  • Windows XP Pro (SP3 + WindowsUpdate) + Excel 2003 (SP3)
  • Windows 7 64bit Home  (SP1 + MicrosoftUpdate) + Excel 2007 (SP3)

 

サンプル一覧

コメントを残す

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

CAPTCHA


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


SAMURAI Plugin