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