mise à jour: user3124688 a codé ce processus dans le script dpsprep .
Je ne connais aucun outil qui fera la conversion pour vous. Vous devriez certainement pouvoir le faire, mais cela pourrait prendre un peu de travail. Je vais décrire le processus de base. Vous aurez besoin des utilitaires de ligne de commande open source pdftk
et djvused
(faisant partie de DjVuLibre). Ceux-ci sont disponibles auprès de votre gestionnaire de paquets (GNU / Linux) ou de leurs sites Web (Windows, OS X).
étape 1: convertir le texte du fichier
Tout d'abord, utilisez n'importe quel outil pour convertir le fichier DJVU en PDF (sans signets).
Supposons que les fichiers soient appelés filename.djvu
et filename.pdf
.
étape 2: extraire le contour DJVU
Ensuite, sortez les données de contour DJVU dans un fichier, comme ceci:
djvused "filename.djvu" -e 'print-outline' > bmarks.out
Il s'agit d'un fichier répertoriant les signets des documents DJVU dans un format d'arborescence sérialisé. En fait, ce n'est qu'un SEXPR et peut être facilement analysé. Le format est le suivant:
file ::= (bookmarks
<bookmark>*)
bookmark ::= (name
page
<bookmark>*)
name ::= "<character>*"
page ::= "#<digit>+"
Par exemple:
(bookmarks
("bmark1"
"#1")
("bmark2"
"#5"
("bmark2subbmark1"
"#6")
("bmark2subbmark2"
"#7"))
("bmark3"
"#9"
...))
étape 3: convertir le plan DJVU au format de métadonnées PDF
Maintenant, nous devons convertir ces signets au format requis par les métadonnées PDF. Ce fichier a un format:
file ::= <entry>*
entry ::= BookmarkBegin
BookmarkTitle: <title>
BookmarkLevel: <number>
BookmarkPageNumber: <number>
title ::= <character>*
Notre exemple deviendrait donc:
BookmarkBegin
BookmarkTitle: bmark1
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: bmark2
BookmarkLevel: 1
BookmarkPageNumber: 5
BookmarkBegin
BookmarkTitle: bmark2subbmark1
BookmarkLevel: 2
BookmarkPageNumber: 6
BookmarkBegin
BookmarkTitle: bmark2subbmark2
BookmarkLevel: 2
BookmarkPageNumber: 7
BookmarkBegin
BookmarkTitle: bmark3
BookmarkLevel: 1
BookmarkPageNumber: 9
Fondamentalement, il vous suffit d'écrire un script pour parcourir l'arborescence SEXPR, en gardant une trace du niveau et en sortie le nom, le numéro de page et le niveau de chaque entrée à laquelle il s'agit, au format correct.
étape 4: extraire les métadonnées PDF et les épisser dans des signets convertis
Une fois que vous avez la liste convertie, sortez les métadonnées PDF à partir de votre fichier PDF converti:
pdftk "filename.pdf" dump_data > pdfmetadata.out
Maintenant, ouvrez le fichier et recherchez la ligne qui commence:
NumberOfPages:
insérez les signets convertis après cette ligne. Enregistrez le nouveau fichier souspdfmetadata.in
étape 5: créer un PDF avec des signets
Nous pouvons maintenant créer un nouveau fichier PDF incorporant ces métadonnées:
pdftk "filename.pdf" update_info "pdfmetadata.in" output out.pdf
Le fichier out.pdf
doit être une copie de votre PDF avec les signets importés du fichier DJVU.
j.split('#')[1]
par(int(re.findall(r'\d+', j.split('#')[1])[0])+1)
et cela a très bien fonctionné. Debian Jessie avait besoin de:sudo apt-get install pdftk djvulibre-bin python-pip ruby ruby-dev libmagickwand-dev; sudo pip install sexpdata; sudo gem install iconv pdfbeads