J'ai essayé plusieurs outils en ligne et hors ligne, mais les informations sur la table des matières (TOC) n'ont pas été préservées lors de la conversion.
Je voudrais convertir un dictionnaire finlandais de 5000 pages qui est au format djvu et possède environ 5000 entrées TOC structurées hiérarchiquement pour trouver rapidement des mots.
Une idée de la possibilité de conserver les informations TOC lors de la conversion de DJVU en PDF?
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 décris le processus de base. Vous aurez besoin des utilitaires de ligne de commande open source pdftk
et djvused
(partie de DjVuLibre). Ils sont disponibles à partir de votre gestionnaire de paquetage (GNU / Linux) ou de leurs sites Web (Windows, OS X).
Tout d'abord, utilisez un outil pour convertir le fichier DJVU en PDF (sans signets).
Supposons que les fichiers s'appellent filename.djvu
et filename.pdf
.
Ensuite, lancez les données de présentation 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'arbre sérialisé. En fait, c'est juste 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" ...))
Maintenant, nous devons convertir ces marque-pages en 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>*
Donc, notre exemple deviendrait:
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 marcher sur l'arbre SEXPR, de suivre le niveau et de produire le nom, le numéro de page et le niveau de chaque entrée, au format correct.
Une fois que vous avez la liste convertie, diffusez les métadonnées PDF à partir de votre fichier PDF converti:
pdftk "filename.pdf" dump_data > pdfmetadata.out
Maintenant, ouvrez le fichier et trouvez la ligne qui commence: NumberOfPages:
Insérez les favoris converti après cette ligne. Enregistrez le nouveau fichier sous la forme pdfmetadata.in
Maintenant, nous pouvons créer un nouveau fichier PDF incorporant cette métadonnée:
pdftk "filename.pdf" update_info "pdfmetadata.in" output out.pdf
Le fichier out.pdf
devrait être une copie de votre PDF avec les signets importés du fichier DJVU.
Sur la base du schéma très clair ci-dessus donné par l'utilisateur @pyrocrasty (merci!), J'ai mis en place un convertisseur DJVU à PDF qui conserve le texte OCR'd et la structure des signets. Vous pouvez le trouver ici:
https://github.com/kcroker/dpsprep
Remerciements pour les données OCR vont à @zetah sur les forums Ubuntu!