「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ファイルに一括変換できました。
大量にファイルがある場合は、是非この方法をご利用ください。
コメント