いくつかのオンラインツールとオフラインツールを試しましたが、変換中に目次(TOC)情報が保持されませんでした。
djvu形式で、単語をすばやく見つけるために階層的に構造化された約5000のTOCエントリを持つ5000ページのフィンランド語辞書を変換したいと思います。
DJVUからPDFへの変換中にTOC情報をどのように保存することができるのでしょうか?
いくつかのオンラインツールとオフラインツールを試しましたが、変換中に目次(TOC)情報が保持されませんでした。
djvu形式で、単語をすばやく見つけるために階層的に構造化された約5000のTOCエントリを持つ5000ページのフィンランド語辞書を変換したいと思います。
DJVUからPDFへの変換中にTOC情報をどのように保存することができるのでしょうか?
回答:
更新:user3124688は、スクリプトdpsprepでこのプロセスをコーディングしました。
私はあなたのために変換を行うどんなツールも知りません。あなたは確かにそれを行うことができるはずですが、それは少しの作業を要するかもしれません。基本的なプロセスの概要を説明します。オープンソースのコマンドラインユーティリティpdftkとdjvused(DjVuLibreの一部)が必要です。これらは、パッケージマネージャー(GNU / Linux)またはそのWebサイト(Windows、OS X)から入手できます。
まず、任意のツールを使用して、DJVUファイルをPDF(ブックマークなし)に変換します。
ファイルが呼び出されたfilename.djvuとしfilename.pdfます。
次に、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"
    ...))
次に、これらのブックマークを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ツリーをたどり、レベルを追跡し、それに来る各エントリの名前、ページ番号、レベルを正しい形式で出力するスクリプトを書くだけです。
変換されたリストを取得したら、変換されたPDFファイルからPDFメタデータを出力します。
pdftk "filename.pdf" dump_data > pdfmetadata.out
次に、ファイルを開き、次の行から始めます。
NumberOfPages:
この行の後に変換されたブックマークを挿入します。新しいファイルをpdfmetadata.in
これで、このメタデータを組み込んだ新しいPDFファイルを作成できます。
pdftk "filename.pdf" update_info "pdfmetadata.in" output out.pdf
ファイルout.pdfは、DJVUファイルからインポートされたブックマークを含むPDFのコピーである必要があります。
上記のユーザー@pyrocrasty(ありがとう!)からの非常に明確な概要に基づいて、OCRされたテキストとブックマーク構造の両方を保持するDJVUからPDFへのコンバーターを実装しました。あなたはそれをここで見つけるかもしれません:
https://github.com/kcroker/dpsprep
OCRデータの謝辞は、Ubuntuフォーラムの@zetahに送信されます。
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