Pdf

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



Converting Djvu Pdf



解決:

アップデート: user3124688は、スクリプト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であり、簡単に解析できます。形式は次のとおりです。

    ファイル:: =(ブックマーク*)ブックマーク:: =(名前ページ*)名前:: = '*'ページ:: = '#+'

    例えば:



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

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

    ファイル:: = *エントリ:: =ブックマーク開始ブックマークタイトル:ブックマークレベル:ブックマークページ番号:タイトル:: = *

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

    BookingBeginブックマークタイトル:bmark1ブックマークレベル:1ブックマークページ番号:1ブックマーク開始ブックマークタイトル:bmark2ブックマークレベル:1ブックマークページ番号:5ブックマーク開始ブックマークタイトル:bmark2subbmark1ブックマークレベル:2ブックマークページ番号:6ブックマーク開始ブックマークタイトル:bmark2subbmark2ブックマークレベル:2ブックマークページ番号:7ブックマーク開始ブックマークタイトル:bmark3ブックマークレベル:

    基本的には、レベルを追跡しながらSEXPRツリーをウォークし、各エントリの名前、ページ番号、レベルを正しい形式で出力するスクリプトを作成するだけです。

  • ステップ4:PDFメタデータを抽出し、変換されたブックマークに接続します

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

    pdftk'filename.pdf 'dump_data> pdfmetadata.out

    次に、ファイルを開いて、次の行で始まる行を見つけます。ページ数:

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

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

    これで、このメタデータを組み込んだ新しい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に送られます。