web-dev-qa-db-ja.com

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

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

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

DJVUからPDFへの変換)中にTOC情報を保存する方法はありますか?

9
user1198559

update:ser3124688 コード化されましたスクリプト内のこのプロセス dpsprep


私はあなたのために変換を行うツールを知りません。あなたは確かにそれをすることができるはずです、しかしそれは少しの仕事を要するかもしれません。基本的なプロセスの概要を説明します。オープンソースのコマンドラインユーティリティ pdftk および djvused (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のコピーである必要があります。

5
pyrocrasty

ユーザー@pyrocrasty(ありがとう!)によって与えられた上記の非常に明確なアウトラインに基づいて、OCRされたテキストとブックマーク構造の両方を保持するDJVUからPDFへのコンバーターを実装しました。ここに:

https://github.com/kcroker/dpsprep

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

3
user3124688