Conversion de djvu en pdf ET préservation de table des matières, comment est-il possible?

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).

  • Étape 1: convertir le texte du fichier

    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 .

  • Étape 2: extraire le schéma de DJVU

    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" ...)) 
  • Étape 3: convertir le contour DJVU au format de métadonnées PDF

    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.

  • Étape 4: extraire les métadonnées PDF et les épisser dans les favoris converti

    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

  • Étape 5: créez un fichier PDF avec des signets

    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!