ฉันไม่รู้เครื่องมือใด ๆ ที่จะทำให้เกิด Conversion สำหรับคุณ แน่นอนคุณควรจะสามารถทำมันได้ แต่มันอาจใช้เวลาทำงานเล็กน้อย ฉันจะร่างกระบวนการพื้นฐาน คุณจะต้องใช้ยูทิลิตีบรรทัดคำสั่งแบบโอเพ่นซอร์สpdftk
และdjvused
(ส่วนหนึ่งของ DjVuLibre) สิ่งเหล่านี้มีให้จากผู้จัดการแพ็คเกจของคุณ (GNU / Linux) หรือเว็บไซต์ (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
ควรเป็นสำเนาของ PDF ของคุณพร้อมด้วยบุ๊คมาร์คที่นำเข้าจากไฟล์ DJVU
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