もちっとメモ

もちっとメモ

管理人のホームページで書ききれていない調べ物のメモページです

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