【VBScript】PDFファイルをPNG画像に変換する(Ghostscript使用)

PDFファイルと同じ階層に同名のフォルダを作成し、その配下にPNGで変換する
使用方法:本ソースファイルを「.vbs」にて保存。変換したいファイルを本スクリプトへドラッグ&ドロップすると自動的に開始される。
Ghostscriptのパスは環境によって変更する。

Option Explicit

' GhostScriptへのパスとオプションを指定
Const GS_PATH = "C:\Ghostscript\bin\gswin64c.exe"
Const GS_OPTION = "-dSAFER -dBATCH -dNOPAUSE -sDEVICE=pngalpha -r300"

' FileSystemObjectとシェル
Dim objFSO:	Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objShell:	Set objShell = CreateObject("WScript.Shell")

' 変数定義
Dim tmpFN	' ループ変数(ファイル名)
Dim tmpBaseName	' ループ内変数(拡張子を除くファイル名)
Dim tmpCurFolder	' ループ内変数(カレントフォルダ)
Dim tmpDstFolder	' ループ内変数(出力先フォルダ)
Dim tmpstrCmd	' ループ内変数(コマンドライン)

' 直接実行しても動作しない
If Wscript.Arguments.Count = 0 Then Wscript.Quit

' ドラッグアンドドロップされたファイルをひとつずつ変換する
For Each tmpFN In WScript.Arguments
	' 拡張子を除くファイル名を取得
	tmpBaseName = objFSO.GetBaseName(tmpFN)

	' カレントフォルダと出力先フォルダを指定、出力先フォルダがなければ作成する
	tmpCurFolder = objFSO.GetParentFolderName(tmpFN)
	tmpDstFolder = tmpCurFolder & "\" & tmpBaseName & "\"
	If Not objFSO.FolderExists(tmpDstFolder) Then objFSO.CreateFolder(tmpDstFolder)

	' コマンドライン組み立て
	tmpstrCmd = Join( Array(_
		GS_PATH, _
		GS_OPTION, _
		"-sOutputFile=" & tmpDstFolder & tmpBaseName & "_page%03d.png", _
		tmpFN), " ")

	' 出力先フォルダへ変換する
	objShell.Run tmpstrCmd, 1, True

Next

Set objShell = Nothing
Set objFSO = Nothing

' 完了メッセージを表示
MsgBox "PDFファイルをPNGに変換しました。", vbOKOnly + vbInformation, WScript.ScriptName