87

I've got some documents in DjVu which I'll like convert to PDF. Is there a way to do this using command line OSS tools?

8 Answers 8

66

djvu2pdf should fit the bill, it's a small script that makes use of the djvulibre toolset. If not, there are other methods that require multiple command-line tools.

6
  • What's a pity that, currently there is not djvu2pdf tool in Arch repo and old ver in Arch User repo Commented Nov 2, 2011 at 17:42
  • 3
    Installing djvulibre-bin using apt-get and then installing the deb file in that link did the trick.
    – thameera
    Commented Apr 21, 2014 at 10:27
  • 1
    On mac you djvu2pdf is available via MacPorts.
    – 0 _
    Commented Jul 2, 2014 at 7:59
  • 6
    Mac users can also run brew install djvu2pdf to install the program and djvu2pdf file.djvu to convert. Homebrew takes care of downloading all its dependencies
    – Lxrd-AJ
    Commented Apr 24, 2020 at 11:26
  • 1
    djvu2pdf works although it produces a slightly bigger file than ddjvu with compression enabled. Other issue is that it doesn't copy the table of contents of the source document.
    – Grwlf
    Commented May 1, 2022 at 11:00
49

The ddjvu program (which is part of the standard djvulibre package) will do this:

$ ddjvu -format=pdf -quality=85 -verbose a.djvu a.pdf

Warning: this produces large files (but PDF files made by Christoph Sieghart's script are of the same size).


I also wrote the following small shell script some years ago.  It does the same automatically. (Save this as djvu2pdf.sh.)

#!/bin/sh

# convert DjVu -> PDF
# usage:  djvu2pdf.sh  <file.djvu>

i="$1"
echo "------------ converting $i to PDF ----------------";
o="$(basename "$i" .djvu).pdf"
echo "[ writing output to $o ] "

ddjvu -format=pdf -quality=85 -verbose "$i" "$o"

The djvu2pdf script by Christoph Sieghart does essentially the same.

3
  • 5
    Is there a way to make OCR layer of the DjVu come through into the PDF?
    – Geremia
    Commented Feb 25, 2017 at 4:09
  • 2
    using ddjvu turned my 6.3 mb djvu file into a 1.7 gig pdf file.
    – xdavidliu
    Commented Jun 10, 2020 at 12:52
  • something is wrong. this should not happen. you can post here the link to the file.
    – Maxim
    Commented Jun 11, 2020 at 1:03
28
$ djvups input.djvu | ps2pdf - output.pdf

In my case the output file was 10x smaller than with ddjvu. Both djvups and ps2pdf present in ubuntu repository.

$ sudo apt-get install djvulibre-bin ghostscript

I've found this method in man ddjvu, so always read manuals ;)

An alternate way to produce PDF file consists in first using djvups(1) and convert the resulting PostScript file to PDF. Which method gives better results depends on the contents of the DJVU file and on the capabilities of the PS to PDF converter.

5
  • 6
    +1 for preserving any text layer in the djvu file
    – Plasma
    Commented Apr 1, 2018 at 18:29
  • 1
    +1 for that apt command XD
    – Kokizzu
    Commented Sep 20, 2020 at 4:47
  • This is the only one preserving the text layer. But increases filesize 10-fold for me.
    – user313032
    Commented Nov 10, 2021 at 2:05
  • Did not preserve the text layer for me, instead produced garbled characters and indeed increased the file size by a factor of ten. Commented Aug 31, 2023 at 8:36
  • My file went from 5,5MB to 65MB, didn't preserve text and some pages were upside down.
    – Carcamano
    Commented Nov 14, 2023 at 15:01
23

What about simply using DJView and export as PDF?

  1. Goto Synaptic Package Manager (System - Administration - Synaptic Package Manager)
  2. Install DJview4
  3. Run DJview (Applications - Graphics - DJView4)
  4. Open your .djvu document
  5. Menu - Export As: PDF

Look at http://art.ubuntuforums.org/showthread.php?t=1232038

2
  • 4
    The question was about using command line only, so this can be automated.
    – Maxim
    Commented May 19, 2019 at 17:40
  • I tested with a book of 1.4Mb. The output was 8Mb (much larger but still decent). However, the text is not searchable anymore Commented Feb 16 at 18:56
12

If you don't care about colors and images you can get much smaller files if you drop the colors and use instead:

ddjvu -format=pdf -mode=black input.djvu output.pdf

Texts, codes and formulas looks perfectly, but most of the images are gone

4

For macOS users you can install djvu2pdf like this:

$ brew install djvu2pdf 

How to use it(works for any Xnix like system):

$ djvu2pdf nameBook.djvu nameBookToCreate.pdf
3

I've changed the @Maxim script a little ...

#!/bin/bash
# convert DjVu -> PDF
# usage:  djvu2pdf.sh [-q quality | -b] <infile.djvu> [outfile.pdf]

mode='color'
quality=80

aparse() {
  while [ $# != 0 ] ; do
    case "$1" in
    -q|--quality)
      quality=${2}
      shift
      ;;
    -b|--black)
      mode='black'
      ;;
  esac
  shift
done
}
aparse "$@"

i="$1"
o=${2:-$(basename $i .djvu).pdf}
if [ -f  "$o" ]; then 
  echo "file $o exists, override [Y/n]?"
  read ans
  case "$ans" in 
   n|N) exit 1;;
  esac
fi
echo "[ converting $i to $o ] "

cmd="ddjvu -format=pdf -quality=$quality -mode=$mode -verbose $i $o "

echo "[ executing $cmd ] "
$cmd
1

For an approach that preserves the text layer1 one can use djvu2pdf described in this answer. The general approach is described here or here.

For macOS a minor tweak is required.

BSD readlink -f behaviour differs from GNU readlink. This can be fixed by installing GNU coreutuils and changing readlink -f to greadlink -f.


1. According to the description the table of contents will also be preserved, but I haven't tested that.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .