WindowsでDjVu⇒PDFへ一括変換するプログラム(バッチファイル)

バッチファイル プログラミング
この記事は約5分で読めます。

※当ブログではアフィリエイト広告を利用しています。

DjVu」(デジャヴ)とは、画像圧縮形式の一つで、圧縮率が非常に高く、JPEGなどを大きく上回っています。

しかしながら、Adobe社のPDFに比べると普及率はかなり低いです。

DjVuファイルの閲覧には、クミナス社の「DjVuブラウザプラグイン(無料)」を使用するのが一般的なようです。

今回は、WindowsでこのDjVuファイルをPDFファイルに変換するプログラム(バッチファイル)を組んでみました。

なお、今回のバージョンは以下です。

  • Windows 10 Home(64bit)
  • DjVuLibre 3.5.27(Windows(x86))

DjVuからPDFへの手動変換

DjVuからPDFへ手動で変換する場合は、以下のような方法が考えられます。

  • DjVuビューア系ソフトの印刷機能で、Adobe AcrobatなどでPDF出力する。
  • DjVuビューア系ソフトのエクスポート機能で、PDFとして抽出・保存する。

ちなみに、クミナス社のDjVuブラウザプラグインにはPDFへのエクスポート機能はありません。

DjVuからPDFへの自動変換

DjVuからPDFへの変換を自動で行う場合は、自分でプログラムを組むことになります。

とは言っても、さすがに変換のところを自作は難しいので、そこはDjVu作者らによって開発されたフリーウェアの「DjVuLibre」に同梱されている「ddjvu」を使用します。

「ddjvu」はコマンドラインのDjVuデコーダーです。

また、DjVuLibreには「djview4」というDjVuビューアも同梱していて、こちらはPDFへのエクスポート機能も含まれています。

DjVuからPDFへの自動変換プログラム

ddjvuの使い方は以下のように、変換元DjVuファイルパスと出力先PDFファイルパスを指定します。

ddjvu -format=pdf -quality=100 -verbose hoge.djvu hoge.pdf

主なオプション(「ddjvu -help」で表示)はこちらです。

  • -verbose … 処理メッセージを表示
  • -format … 出力フォーマット。pdf、tiffなど。
  • -quality … 画質(圧縮率)。25~150の間で指定。
  • -mode=black … モノクロ出力

ということで、一括変換したい場合はどこかフォルダを指定してその中にあるDjVuファイルをループさせ、このコマンドを実行していけばいいわけですね。

まずは、DjVuLibreをインストールし、ddjvuを使用できるように、インストールフォルダ(「C:\Program Files (x86)\DjVuLibre\」など)を環境変数「PATH」へ追記します。

そして、以下のようなプログラム(バッチファイル)を作成しました。

@echo off

rem 実行方法
rem C:\djvu2pdf.bat "C:\DjVu" "C:\PDF" 100

setlocal enabledelayedexpansion

rem 引数チェック
if "%~3" == "" (
  echo パラメータが3つではありませんので、処理を中断します。
  exit /b 1
) else if not "%~4" == "" (
  echo パラメータが3つではありませんので、処理を中断します。
  exit /b 1
)

rem 引数取得
set djvuPath=%~1
set pdfPath=%~2
set quality=%~3

rem 引数整数チェック
set /a wkNum=%quality%+0

if not %quality% == %wkNum% (
  echo 第3パラメータ(画質(圧縮率))が整数ではありませんので、処理を中断します。
  exit /b 1
) else if %quality% gtr 150 (
  echo 第3パラメータ(画質(圧縮率))が25~150の範囲ではありませんので、処理を中断します。
  exit /b 1
) else if %quality% lss 25 (
  echo 第3パラメータ(画質(圧縮率))が25~150の範囲ではありませんので、処理を中断します。
  exit /b 1
)

echo 第1パラメータ(DjVu格納元フォルダパス):%djvuPath%
echo 第2パラメータ(PDF格納先フォルダパス):%pdfPath%
echo 第3パラメータ(画質(圧縮率)):%quality%

rem ファイルループ
rem dirオプション(/d:ファイル列で並び替え、/b:ファイル名のみ表示、/s:指定ディレクトリおよびサブディレクトリ)
for /f %%i in ('dir /d /b /s %djvuPath%\*.djvu') do (
  set djvuFilePath=%%~fi
  set filePath=%%~ni
  set cmd="ddjvu -format=pdf -quality=!quality! -verbose !djvuFilePath! !pdfPath!\!filePath!.pdf"

  rem デバッグ用
  rem echo !cmd!
  "!cmd!"
)

rem 処理終了
echo 処理が正常終了しました。
exit /b 0

rem コマンドプロンプトを閉じない
cmd

これをコマンドラインから以下のように実行すれば、指定したフォルダ内のDjVuファイルを一括でPDFファイルへと変換します。

C:\djvu2pdf.bat "C:\DjVu" "C:\PDF" 100

ファイル容量とかにもよりますが、変換には結構時間がかかりました。

そして、画質(圧縮率)の指定ですが、DjVuファイルは圧縮率がかなり高いので、そのまま100%でPDFへと変換するとかなりファイル容量が大きくなります。

元ファイルと同じぐらいの容量にするならば、70%ぐらいで指定するのが良いかもしれません。

最後に

これで、DjVuファイルをPDFファイルに一括変換できました。

大量にファイルがある場合は、是非この方法をご利用ください。

コメント

タイトルとURLをコピーしました