もちっとメモ

もちっとメモ

もぐりのエンジニアが日々の中で試してみたことを気が向いたときに書き連ねていきます

PDFをPNGに変換するバッチファイル

任意のファイルを同ディレクトリ内のpdfファイルすべてをpngファイルに変換するバッチファイルです.
※set gs= の部分にはご自身のPC内のGhostscriptの実行ファイルまでのパスを書いてください.

・1ページ目のみ変換すればいいとき

    
        @echo off
        for %%a in (*.pdf) do call :convert "%%a"
        for %%b in (*.png) do call :rename "%%b"
        pause
        exit /b
        goto :eof
        
        :convert
        set fname=%~1
        set pdf="%fname%"
        set page_start=1
        set page_end=1
        set file_pre=
        set gs="C:\Program Files\gs\gs9.16\bin\gswin64c.exe"
        set opt=-sDEVICE=png16m -r320 -dTextAlphaBits=4
        
        setlocal enabledelayedexpansion
        for /L %%i in (%page_start%, 1, %page_end%) do (
         set pages=-dFirstPage=%%i -dLastPage=%%i
         set png=-sOutputFile=%file_pre%"%fname%".png
         %gs% -q -dBATCH -dNOPAUSE %opt% !pages! !png! %pdf%
         echo !png!)
        goto :eof
        
        :rename
        set fname=%~1
        set fname=%fname:.pdf=%
        ren %1 "%fname%"
        goto :eof
        
    

・特定のページ間を変換したいとき

    
        @echo off
        for %%a in (*.pdf) do call :convert "%%a"
        for %%b in (*.png) do call :rename "%%b"
        pause
        exit /b
        goto :eof
        
        :convert
        set fname=%~1
        set pdf="%fname%"
        set page_start=1
        set page_end=1
        set file_pre=
        set gs="C:\Program Files\gs\gs9.16\bin\gswin64c.exe"
        set opt=-sDEVICE=png16m -r320 -dTextAlphaBits=4
        
        setlocal enabledelayedexpansion
        for /L %%i in (%page_start%, 1, %page_end%) do (
         set pages=-dFirstPage=%%i -dLastPage=%%i
         set png=-sOutputFile=%file_pre%"%fname%"%%i.png
         %gs% -q -dBATCH -dNOPAUSE %opt% !pages! !png! %pdf%
         echo !png!)
        goto :eof
        
        :rename
        set fname=%~1
        set fname=%fname:.pdf=%
        ren %1 "%fname%"
        goto :eof
    

 参考URL:
http://rtaki.sakura.ne.jp/infra/?p=330
http://d.hatena.ne.jp/jak-san/20081226/1230297229

 

・ファイルを移動 move (ファイル名) ./パス
・名前に変数を %変数%

synctexを使えばよい
注意:texファイルのフルパスの途中に日本語を含まないこと.例えば,ユーザー名が日本語になっていると参照が上手くいかない.
パスは右クリックの「プロパティ」-「場所」を見ればわかる.