インデザイン 画像取り込みvbs事例
管理者用
クリアファイルの印刷用のデザインテンプレートをWebページで紹介しようと作業に入りました。
イラストレータでの作業です。
クリアファイルの形をデザインした上にテンプレート画像を貼り付けて行く作業です。
これを100件繰り返すのです。
10件ほどでやめてしまいました。さらに繰り返す事を考えるとぞーっとします。
そこで、インデザインで自動化する事にしました。
以前に使った事のあるスクリプトを探し出し、改造することにしました。
このスクリプトは、非常にシンプルなものでした。
PDFファイルを取り込んでインデザインファイルで保存するだけのものです。
この時の使用目的をお話ししておきます。
組版ソフトのエディカラーを使って、あるお客様の名刺のレイアウトを行って来ました。
しかし、様々な問題から、インデザインに切り替える事にしたのです。
この時、古い名刺データを活かすため、全てPDFファイルに書き出しました。
そして、全てのPDFファイルをインデザインに貼り付けたのです。
この時のPDFファイルの貼り付け作業にスクリプトを書きました。
変更のあった方の名刺は、インデザインで新しく作り、リピートでお受けした時は、PDFが貼り付けられたインデザインのファイルを使用すると言うものです。
今回、インデザインに貼り付けるファイルは、.png 画像ファイルです。
取り込みたいPNG画像ファイルと同じフォルダー位置に vbs実行ファイル ”in_in.vbs” を保存します。
インデザインで、クリアファイルの形をデザインして保存しておきます。
in_in.vbs ファイルをダブルクリックしてスクリプトを実行します。
スクリプトと同じフォルダーの .png ファイルがインデザインに取り込まれて行きます。
インデザインにテンプレート画像が取り込まれていく様子です。
インデザインファイルと、PNG画像ファイルが追加されて行きます。
すべての取り込んだら終わります。
スクリプトは、最後に紹介しておきます。
ファイル名やサイズ、取り込む画像の拡張子など変更して見て実際に使って見てください。
vbsファイルは、メモ帳などのテキストファイルで書けますので便利です。
少し変えるだけで、色々便利に使えると思います。
最後に、このスクリプトの終わりに
ご参考として、書き出しの際のフォーマットの定数を調べておきましたので紹介しておきます。
スクリプト全体
Dim objFSO
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Dim strFileNamae
strFileNamae = ""
Dim strParentFolder'このスクリプトの位置する フォルダーパス名 を取得
strParentFolder = objFSO.GetParentFolderName(WScript.ScriptFullName)
'フォルダーオブジェクトを取得
Dim objParentFolder
Set objParentFolder = objFSO.GetFolder(strParentFolder)
Dim objFiles
Set objFiles = objParentFolder.Files
Dim objFile
Rem インデザインの起動
Rem ****************************************************************************************
Dim myIndesign
'Set myInDesign = CreateObject("InDesign.Application.CS6_J")
Set myInDesign = CreateObject("InDesign.Application")
'********************************************************************************************
haichi_gazo_YS = 27
haichi_gazo_XS = 18
haichi_gazo_YE = 337
haichi_gazo_XE = 228
FillCunt = 0
'ファイル名を取得
For Each objFile In objParentFolder.Files
Rem スクリプトファイル以外のファイル名のリストを作成 及び ファイル数をカウント
If not objFile.Name = "in_in.vbs" then
strFileNamae = strFileNamae & objFile.Name & vbCrLf
FillCunt = FillCunt + 1
End If
Next
If FillCunt >= 1 then
for CuntAA =1 to FillCunt step 1
strValue = Split(strFileNamae, vbCrLf )
filMei = Split(strValue(CuntAA-1), ".")
pattion = filMei(1)
File_mei = filMei(0)
'ターゲットのファイルの拡張子だけ処理を行う
'if pattion = "pdf" then
if pattion = "png" then
faill_mei = "E:\クリアファイル\2017クリアファイル\クリア台紙.indd"
Set myDocument = myInDesign.Open(faill_mei)
sevFile_Na = strParentFolder & "\" & File_mei & ".indd"
pdfFilemei = strParentFolder & "\" & File_mei & "." & pattion
Set myTextFrame = myDocument.TextFrames.Add
myTextFrame.GeometricBounds = Array(Cstr(haichi_gazo_YS) + "mm", Cstr(haichi_gazo_XS) + "mm", Cstr(haichi_gazo_YE) + "mm", Cstr(haichi_gazo_XE) + "mm")
myTextFrame.ContentType = 1735553140 'idContentType.idGraphicTy
myTextFrame.Place (pdfFilemei)
'aaaaaaaa = strParentFolder & "\" & "JPG" & File_mei & ".jpg"
'myInDesign.ActiveDocument.Export 1246775072, aaaaaaaa , False
bbbbbbbb = strParentFolder & "\" & "PNG" & File_mei & ".png"
myInDesign.ActiveDocument.Export 1699761735, bbbbbbbb , False
myInDesign.ActiveDocument.Save sevFile_Na
myInDesign.ActiveDocument.Close
end if
Next
end if
Set objParentFolder = Nothing
Set objFiles = Nothing
Set objFile = Nothing
Set objFSO = Nothing
'ご参考 書き出しオプション フォーマット 指定
'------ExportFormat----------------------------
'INTERACTIVE_PDF 1952409936
'PDF_TYPE 1952403524
'EPS_TYPE 1952400720
'EPUB 1701868898
'FIXED_LAYOUT_EPUB 1701865080
'SWF 1702066022
'HTML 1213484364
'JPG 1246775072
'PNG_FORMAT 1699761735
'XML 1481460768
'RTF 1381254688
'-----------------------------------------------