pembaruan: user3124688 telah mengodekan proses ini dalam skrip dpsprep .
Saya tidak tahu ada alat yang akan melakukan konversi untuk Anda. Anda tentu harus bisa melakukannya, tetapi mungkin perlu sedikit usaha. Saya akan menguraikan proses dasar. Anda akan memerlukan utilitas baris perintah open source pdftk
dan djvused
(bagian dari DjVuLibre). Ini tersedia dari manajer paket Anda (GNU / Linux) atau situs web mereka (Windows, OS X).
langkah 1: konversi teks file
Pertama, gunakan alat apa pun untuk mengonversi file DJVU ke PDF (tanpa bookmark).
Misalkan file dipanggil filename.djvu
dan filename.pdf
.
langkah 2: ekstrak garis besar DJVU
Selanjutnya, hasilkan data outline DJVU ke file, seperti ini:
djvused "filename.djvu" -e 'print-outline' > bmarks.out
Ini adalah file yang mencantumkan bookmark dokumen DJVU dalam format pohon serial. Bahkan itu hanya SEXPR , dan dapat dengan mudah diurai. Formatnya adalah sebagai berikut:
file ::= (bookmarks
<bookmark>*)
bookmark ::= (name
page
<bookmark>*)
name ::= "<character>*"
page ::= "#<digit>+"
Sebagai contoh:
(bookmarks
("bmark1"
"#1")
("bmark2"
"#5"
("bmark2subbmark1"
"#6")
("bmark2subbmark2"
"#7"))
("bmark3"
"#9"
...))
langkah 3: mengonversi garis DJVU ke format metadata PDF
Sekarang, kita perlu mengkonversi bookmark ini ke format yang diperlukan oleh metadata PDF. File ini memiliki format:
file ::= <entry>*
entry ::= BookmarkBegin
BookmarkTitle: <title>
BookmarkLevel: <number>
BookmarkPageNumber: <number>
title ::= <character>*
Jadi contoh kita akan menjadi:
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
Pada dasarnya, Anda hanya perlu menulis skrip untuk berjalan di pohon SEXPR, melacak level, dan menampilkan nama, nomor halaman, dan level dari setiap entri yang datang, dalam format yang benar.
langkah 4: ekstrak metadata PDF dan gabungkan bookmark yang dikonversi
Setelah Anda mendapatkan daftar yang dikonversi, keluarkan metadata PDF dari file PDF yang dikonversi:
pdftk "filename.pdf" dump_data > pdfmetadata.out
Sekarang, buka file dan temukan baris yang dimulai:
NumberOfPages:
masukkan bookmark yang dikonversi setelah baris ini. Simpan file baru sebagaipdfmetadata.in
langkah 5: buat PDF dengan bookmark
Sekarang kita dapat membuat file PDF baru yang menggabungkan metadata ini:
pdftk "filename.pdf" update_info "pdfmetadata.in" output out.pdf
File out.pdf
harus berupa salinan PDF Anda dengan bookmark yang diimpor dari file DJVU.
j.split('#')[1]
dengan(int(re.findall(r'\d+', j.split('#')[1])[0])+1)
dan itu bekerja dengan baik. Debian Jessie diperlukan:sudo apt-get install pdftk djvulibre-bin python-pip ruby ruby-dev libmagickwand-dev; sudo pip install sexpdata; sudo gem install iconv pdfbeads