忍者ブログ

ぼんぷろぐ

InDesignとかイラレとかのスクリプトよもやま話

新しいブログに引っ越しました。

こちらのブログはもう更新しませんが、コメント欄は生きてますので疑問、ご指摘などありましたらどうぞ。

[AutoHotkey]
AutoHotkeyでAcrobatをいじる2:画像ファイルからpdf作成

前回に引き続いて、AutoHotkeyでドロップレット(.ahkファイルに処理したいファイルをドラッグ&ドロップして動かすタイプのスクリプト)を作ってみます。

まずは画像からpdfを作成するドロップレット

Loop,%0%
Loop,% %A_Index%
{
    path:=A_LoopFileLongPath
    ext:=A_LoopFileExt
    pathNoExt:=SubStr(path,1,-StrLen(ext)-1)
    newPdfPath=%pathNoExt%.pdf
    IfExist,%newPdfPath%
    Loop
    {
        newPdfPath=%pathNoExt%(%A_Index%).pdf
        IfNotExist,%newPdfPath%
            Break
    }

    avd:=ComObjCreate("AcroExch.AVDoc")
    result:=avd.Open(path,"")
    If result=-1
    {
        avd.GetPDDoc().Save(1,newPdfPath)
        avd.Close(1)
    }
}

Acrobatのファイルメニューにある「画像からpdf」を自動化するものです。
JPEG,PNGなどAcrobatが対応してる画像ファイルならなんでもいけます。
複数ファイルを同時にドロップした場合は、それぞれ別のpdfになります。

ちょっと解説
例によって最初の2行はおまじないとしまして、
path:=A_LoopFileLongPath
ext:=A_LoopFileExt
pathNoExt:=SubStr(path,1,-StrLen(ext)-1)
newPdfPath=%pathNoExt%.pdf
IfExist,%newPdfPath%
Loop
{
    newPdfPath=%pathNoExt%(%A_Index%).pdf
    IfNotExist,%newPdfPath%
        Break
}
ここらへんは保存するpdfファイルのパス文字列を用意しています。
同名ファイルがあれば上書きしないように(1)をつけて、それもあれば(2)をつけて…という処理です。
AHKの:=と=の使い分けを知らない人は何だコレってなるかも。(参考→AutoHotkey wiki:言語仕様

あとはAcrobat OLEのAVDocで開いて、開くのに成功したら保存して閉じる、という流れです。
なぜか知らないけど画像を開けるのはPDDocでなくAVDocだけのようです。



ちゅぎ

今度は複数の画像ファイルをドロップしたとき、それらをまとめて1つのpdfファイルにするやつ
いわばAcrobatのメニューにある「ファイルを単一のpdfに結合」の自動化です。

Loop,%1%
{
path:=A_LoopFileLongPath
ext:=A_LoopFileExt
pathNoExt:=SubStr(path,1,-StrLen(ext)-1)

newPdfPath=%pathNoExt%.pdf
IfExist,%newPdfPath%
Loop
{
    newPdfPath=%pathNoExt%(%A_Index%).pdf
    IfNotExist,%newPdfPath%
        Break
}

pdd0:=ComObjCreate("AcroExch.PDDoc")
pdd0.Create()

Loop,%0%
Loop,% %A_Index%
{
    path:=A_LoopFileLongPath
    avd1:=ComObjCreate("AcroExch.AVDoc")
    result:=avd1.Open(path,"a")
    If result=-1
    {
        pdd1:=avd1.GetPDDoc()
        pdd0.InsertPages(-2,pdd1,0,1,0)
        avd1.Close(1)
    }
}
pdd0.Save(1,newPdfPath)
pdd0.Close()
}

えー12行目あたりまでは上のと同じ保存するファイルパスの用意ですね。

pdd0:=ComObjCreate("AcroExch.PDDoc")
pdd0.Create()
でPDDocのドキュメントを新規作成して、

AVDocで画像をpdf化して、そのページを新規作成したドキュメントに追加していく、という手順です。
このへんはpdf-file.nnn2.comさんの、こちらのコメント欄がとても参考になりました。ありがたやありがたや。


続くかも?
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

プロフィール

kawamoto_α
(あるふぁ(仮))


InDesignで新聞組版のようなことをしています。

ツイッタ

※ブラウザによっては当ブログからDLしたzipファイルが拡張子なしになることがあるようですが、.zipを補って開いてください。



イラレ用トーンカーブスクリプト(¥1500)



クロソイド式角丸長方形スクリプト(¥500)
Illustrator用
InDesign用



イラレスクリプトをキーボードショートカットで実行するやつ(Win用)