Creating DJVU documents

Conversions PDF <=> DJVU


Conversion PDF en DJVU


Trois possibilitées de conversion, énoncées ci-dessous :

Méthode 1 - À partir de la commande pdf2djvu

pdf2djvu -d=DPI -o output.djvu input.pdf

On peut aussi passer l'option –monochrome –lossy si cela ne dégrade pas trop la qualité du fichier de sortie. Souvent, le fichier qui ressort de cette commande est encore trop lourd, par rapport à la compression que peut offrir le support DJVU.

Méthode 2 - À partir des images du pdf

Obtention des pages et conversion de celles-ci en DJVU
pdfimages -all input.pdf out

donnera d'une part les images. On peut ensuite les convertir en *.pbm avec le script suivant :

#!/bin/bash
for filename in *
do
  case "$filename" in
    *.tif)
      name=${filename%\.*}
      convert "$filename" pbm/"${name}.pbm"
      echo "converted $filename"
      ;;
    *)
      ;;
  esac 
done

Ensuite, on convertit les images une à une en DJVU :

for i in *.pbm; do cjb2 -dpi 1200 -lossy "$i" djvu/"$i".djvu; done;
Pour les textes comportant des photographies

cfjb2 risque de dégrader celles-ci, et encore plus avec l'option -lossy. Ainsi, il est parfoit utile de ne sélection que ces pages pour une conversion sans -lossy :

for i in $(<pages.txt); do cjb2 -dpi 1200 "out-$i.pbm" djvu/"out-$i.pbm.djvu"; done;

où le fichier pages.txt est formaté de la manière suivante :

001 010 229 ...
Finalisation

Finalement, on assemble le DJVU avec la commande djvm -c out.djvu *.djvu.

Méthode 3 - Pour les fichiers récalcitrants

Notamment ceux trop lourd, et dont l'option –monochrome de pdf2djvu dégrade trop la qualité du fichier. D'une part, on effectue la conversion en DJVU à partir de la commande pdf2djvu -o output.djvu input.pdf. Puis on peut ensuite extraire les images du DJVU :

ddjvu -format=tiff -eachpage input.djvu %02d.tiff

On peut éventuellement ajouter -quality=80 pour compresser les TIFF résultants.

On exécute alors ensuite le script précédent, on convertit les images en DJVU et on assemble le fichier final.

Conversion DJVU en PDF


Il faut utiliser djvups pour obtenir le plus petit fichier possible :

djvups out.djvu | ps2pdf - out.pdf

Finalement, le PDF résultant peut être rogné - si nécessaire - en utilisant briss.

Alternativement, ddjvu permet une conversion directe de DJVU en PDF :

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

Marques-pages


Insertion de marques-pages dans un DJVU


Il faut créer un fichier que l'on appelle par exemple bookmarks.txt dont le format sera le suivant :

(bookmarks

("Ma section 1" "#1"
("Ma sous-section 1" "#2"))
("Ma section 2" "#10")

)

#X est le numéro de page dans le DJVU. Pour appliquer les marques-pages, il suffit ensuite d'effectuer la commande :

djvused out.djvu -e "set-outline bookmarks.txt" -s

Conversion de marques-pages


Les marques pages ne sont pas conservés lors d'une conversion entre les formats DJVU et PDF. Pour les ré-insérer, il faut utiliser le logiciel Handy Outliner. Celui-ci fonctionne aussi sur Linux et MacOS X en utilisant l'environnement Mono. En particulier, sous 10.6.8, la version la plus récente de Mono est Mono 2.10.12.

Reconnaissances de caractère (OCR)


En utilisant le logiciel ocrodjvu. Un exemple d'utilisation est le suivant[(ref:>ocrodjvu, Jakub Wilk.)] :

$ ./ocrodjvu --in-place 'alice.djvu'
Processing 'alice.djvu':
- Page #1
$ djvused -e print-txt 'alice.djvu' | head -n14
(page 0 0 2488 3507
 (column 470 2922 1383 2978
  (para 470 2922 1383 2978
   (line 470 2922 1383 2978
    (word 470 2927 499 2976 "1")
    (word 588 2926 787 2978 "Down")
    (word 817 2925 927 2977 "the")
    (word 959 2922 1383 2976 "Rabbit-Hole"))))
 (column 451 707 2076 2856
  (para 463 2626 2076 2856
   (line 465 2803 2073 2856
    (word 465 2819 569 2856 "Alice")
    (word 592 2819 667 2841 "was")
    (word 690 2808 896 2854 "beginning")

L'option –in-place permet de directement écrire le texte dans le fichier DJVU.

Perte du support DJVU sous Evince


Evince peut parfois avoir des problèmes pour ouvrir les documents DJVU ne comportant qu'une seule page. Pour résoudre le problème, il faut éditer le fichier /usr/lib/x86_64-linux-gnu/evince/4/backends/djvudocument.evince-backend et y ajouter image/vnd.djvu; à la fin de la dernière ligne.

Ressources et documentation