InDesignからPDFを書き出し、すぐに表示する

現在開いているファイルをPDF書き出しし、書き出されたPDFを表示します。

PDFの表示には、関連付けされているアプリケーションを使用します。


動作環境・注意

InDesign CS 以降で動作すると思います。

細かい設定を行いたい場合は事前にPDF書き出しプリセットを作成する必要があります。

途中で表示されるダイアログでプリントプリセットを指定しないとエラーになります。


使用方法

基本的にはスクリプトパレットから実行します(直接実行しても構いません)。


ソース

Dim app, oShell, oFolder
Set app = CreateObject("InDesign.Application")
If app.Documents.Count=0 Then
    MsgBox "ドキュメントがありません。スクリプトを終了します。"
Else
    Set oShell = CreateObject("Shell.Application")
    Set oFolder = oShell.BrowseForFolder(0,"保存先のフォルダを選んでください", &H40 + &H1)
    If oFolder Is Nothing Then
        MsgBox "スクリプトがキャンセルされました。終了します。"
        Set oShell = Nothing
    Else
        sFolder=oFolder.Self.Path
        If Right(sFolder,1) <> "\" Then sFolder=sFolder & "\"
        Set oShell = Nothing
        nextstep app, sFolder
    End If
End If

Sub nextstep(app, sFolder)
    Dim pep(), i, doc, dlg, dlc, ddd, flag, pdfname, pepname
    ReDim pep(app.PDFExportPresets.Count - 1)
    For i = 0 To app.PDFExportPresets.Count - 1
        pep(i) = app.PDFExportPresets(i + 1).Name
    Next
    Set doc = app.ActiveDocument
    Set dlg = app.Dialogs.add
    Set dlc = dlg.DialogColumns.add
    with dlc.DialogRows.add
        .StaticTexts.add
        .StaticTexts(1).StaticLabel = "保存先のフォルダ:"
    end with
    with dlc.DialogRows.add
        .StaticTexts.add
        .StaticTexts(1).StaticLabel = sFolder
    end with
    with dlc.DialogRows.add
        .StaticTexts.add
        .StaticTexts(1).StaticLabel = "PDF ファイル名:"
    end with
    dlc.TextEditBoxes.add
    dlc.TextEditBoxes(1).MinWidth = 240
    dlc.TextEditBoxes(1).EditContents _
        = Left(doc.Name, InStrRev(doc.Name, ".") - 1) & ".pdf"
    with dlc.DialogRows.add
        .StaticTexts.add
        .StaticTexts(1).StaticLabel = "使用するPDF書き出しプリセット:"
    end with
    Set ddd = dlc.DropDowns.add
    ddd.StringList = pep
    flag = dlg.Show
    
    If flag = false Then
        MsgBox "スクリプトがキャンセルされました。終了します。"
    Else
        pdfname = dlc.TextEditBoxes(1).EditContents
        pepname = ddd.StringList(ddd.SelectedIndex)
        'PDF形式で書き出し--1952403524=idExportFormat.idPDFType
        doc.Export 1952403524, sFolder & pdfname, False, pepname
        
        Set WSShell = CreateObject("WScript.Shell")
        WSShell.Run sFolder & pdfname
        Set WSShell = Nothing
    End If
End Sub

[HOME]