djvuをpdfに変換し、目次を保持するには、どうすればよいですか?


9

いくつかのオンラインツールとオフラインツールを試しましたが、変換中に目次(TOC)情報が保持されませんでした。

djvu形式で、単語をすばやく見つけるために階層的に構造化された約5000のTOCエントリを持つ5000ページのフィンランド語辞書を変換したいと思います。

DJVUからPDFへの変換中にTOC情報をどのように保存することができるのでしょうか?

回答:


5

更新:user3124688は、スクリプトdpsprepでこのプロセスをコーディングしました


私はあなたのために変換を行うどんなツールも知りません。あなたは確かにそれを行うことができるはずですが、それは少しの作業を要するかもしれません。基本的なプロセスの概要を説明します。オープンソースのコマンドラインユーティリティpdftkdjvused(DjVuLibreの一部)が必要です。これらは、パッケージマネージャー(GNU / Linux)またはそのWebサイト(Windows、OS X)から入手できます。

  • 手順1:ファイルテキストを変換する

    まず、任意のツールを使用して、DJVUファイルをPDF(ブックマークなし)に変換します。

    ファイルが呼び出されたfilename.djvuとしfilename.pdfます。

  • ステップ2:DJVUアウトラインを抽出する

    次に、DJVUアウトラインデータを次のようにファイルに出力します。

    djvused "filename.djvu" -e 'print-outline' > bmarks.out
    

    これは、DJVUドキュメントのブックマークをシリアライズされたツリー形式でリストしたファイルです。実際、これは単なるSEXPRであり、簡単に解析できます。形式は次のとおりです。

    file ::= (bookmarks
               <bookmark>*)
    bookmark ::= (name
                   page
                   <bookmark>*)
    name ::= "<character>*"
    page ::= "#<digit>+"
    

    例えば:

    (bookmarks
      ("bmark1"
        "#1")
      ("bmark2"
        "#5"
        ("bmark2subbmark1"
          "#6")
        ("bmark2subbmark2"
          "#7"))
      ("bmark3"
        "#9"
        ...))
    
  • ステップ3:DJVUアウトラインをPDFメタデータ形式に変換する

    次に、これらのブックマークをPDFメタデータで必要な形式に変換する必要があります。このファイルの形式は次のとおりです。

    file ::= <entry>*
    entry ::= BookmarkBegin
              BookmarkTitle: <title>
              BookmarkLevel: <number>
              BookmarkPageNumber: <number>
    title ::= <character>*
    

    したがって、この例は次のようになります。

     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
    

    基本的には、SEXPRツリーをたどり、レベルを追跡し、それに来る各エントリの名前、ページ番号、レベルを正しい形式で出力するスクリプトを書くだけです。

  • 手順4:変換されたブックマークでPDFメタデータとスプライスを抽出する

    変換されたリストを取得したら、変換されたPDFファイルからPDFメタデータを出力します。

    pdftk "filename.pdf" dump_data > pdfmetadata.out
    

    次に、ファイルを開き、次の行から始めます。 NumberOfPages:

    この行の後に変換されたブックマークを挿入します。新しいファイルをpdfmetadata.in

  • ステップ5:ブックマーク付きのPDFを作成する

    これで、このメタデータを組み込んだ新しいPDFファイルを作成できます。

    pdftk "filename.pdf" update_info "pdfmetadata.in" output out.pdf
    

    ファイルout.pdfは、DJVUファイルからインポートされたブックマークを含むPDFのコピーである必要があります。


3

上記のユーザー@pyrocrasty(ありがとう!)からの非常に明確な概要に基づいて、OCRされたテキストとブックマーク構造の両方を保持するDJVUからPDFへのコンバーターを実装しました。あなたはそれをここで見つけるかもしれません:

https://github.com/kcroker/dpsprep

OCRデータの謝辞は、Ubuntuフォーラムの@zetahに送信されます。


ブックマークのページ番号フィールドに数値以外のテキストが含まれるDJVUファイルがあったため、パーサーがそれらを読み取れませんでした。と交換j.split('#')[1]しましたが(int(re.findall(r'\d+', j.split('#')[1])[0])+1)、うまくいきました。Debian Jessieに必要なもの:sudo apt-get install pdftk djvulibre-bin python-pip ruby ruby-dev libmagickwand-dev; sudo pip install sexpdata; sudo gem install iconv pdfbeads
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.