いくつかのオンラインツールとオフラインツールを試しましたが、変換中に目次(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