จะนำเข้าส่งออกและแก้ไขบุ๊คมาร์คของไฟล์ pdf ได้อย่างไร


21

ฉันได้ยินมาว่าบุ๊กมาร์กของไฟล์ pdf ถูกเก็บไว้ในรูปแบบข้อความธรรมดาที่ไหนสักแห่งในไฟล์ ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะนำเข้าและส่งออกบุ๊กมาร์กของไฟล์ pdf เข้าและออกจากไฟล์ข้อความสำหรับการประมวลผลเป็นชุด?

ถ้าใช่มีคำอธิบายเกี่ยวกับไวยากรณ์ในการแก้ไขไฟล์ข้อความที่มีบุ๊คมาร์คของไฟล์ pdf หรือไม่

ฉันหวังว่าจะได้รับโซลูชั่นซอฟต์แวร์ฟรีสำหรับ Ubuntu 10.10 และสำหรับ Windows 7

ขอบคุณและขอแสดงความนับถือ!

คำตอบ:


22

มีเครื่องมือหลายอย่างที่สามารถแยกบุ๊คมาร์คจากไฟล์ PDF เป็นไฟล์ข้อความธรรมดาและในทางกลับกัน บางส่วนมีดังนี้

  • pdftk
  • กล่องเครื่องมือ iText (เวอร์ชั่นที่เก่ากว่าเท่านั้นรับitext-2.0.1.jar )
  • เครื่องมือpdfWritebookmarksที่ฉันใช้
  • JPdfBookmarksซึ่งมี GUI

นอกจากนี้ผมมีสคริปต์ที่สามารถแปลงระหว่างรูปแบบของหลายเครื่องมือเหล่านี้: bmconverter.py

อีกวิธีหนึ่งที่ดีมากคือการเพิ่มบุ๊คมาร์คเพื่อ pdf ผ่าน pdflatex


13

คุณสามารถใช้pdftkสำหรับสิ่งนี้ ข้อมูลเพิ่มเติม: วิธีการส่งออกและนำรูปแบบไฟล์ PDF ที่คั่นหน้า

ส่งออกบุ๊กมาร์ก PDF ในบรรทัดคำสั่งดังนี้:

pdftk C:\Users\Sid\Desktop\doc.pdf dump_data output C:\Users\Sid\Desktop\doc_data.txt

นำเข้าบุ๊คมาร์ค PDF จากไฟล์ข้อมูลเช่นนี้:

pdftk C:\Users\Sid\Desktop\doc.pdf update_info C:\Users\Sid\Desktop\doc_data.txt output C:\Users\Sid\Desktop\updated.pdf

pdftkรูปแบบบุ๊กมาร์กค่อนข้างน่าเบื่อเล็กน้อยในการเขียน แต่ฉันสร้างสคริปต์ของตัวเองโดยใช้bash, sed, และpdftk python3ลองดูได้ที่ repo นี้: https://github.com/SiddharthPant/booky

ดังนั้นตอนนี้ฉันสามารถสร้างไฟล์ข้อความ ( bkmrks.txt) เช่นนี้ซึ่งใช้เวลาเพียง 5 นาทีในการเขียนแม้แต่ไฟล์ PDF 1,000 หน้า

{
  Title1, 1
  Title2, 2
  {
    Subtitle1, 3
    Subtitle2, 4
    {
      SubSubtitle1, 5
      ...
    }
  }
}

แล้วใช้สคริปต์ของฉัน

./booky.sh pdf_file.pdf bkmrks.txt

สิ่งนี้จะสร้าง pdf ( pdf_file_new.pdf) ที่มีบุ๊กมาร์กของฉันอยู่โดยอัตโนมัติ

สิ่งนี้จะทำงานในระบบ * nix หากคุณใช้เครื่อง Windows แทน จากนั้นติดตั้งครั้งแรกpython3และpdftkใช้booky.pyไฟล์ใน repo เพื่อแปลงbkmrks.txtเป็นpdftkรูปแบบที่ใช้งานร่วมกันได้

python3 booky.py < bkmrks.txt > output.txt

จากนั้นใช้คำสั่งส่งออกเพื่อสร้างไฟล์ข้อมูลที่ทิ้ง ลบบุ๊กมาร์กก่อนหน้าจากไฟล์นั้นและแทรกเนื้อหาoutput.txtแทนโดยใช้การคัดลอกแบบง่าย แล้วนำเข้าข้อมูลนั้นกลับ


4

หากคุณมีเวอร์ชันของเอกสารที่มีบุ๊กมาร์กและต้องการคัดลอกทับวิธีที่ง่ายกว่าคือใช้ PDF-XChange Viewer (ฉันใช้ v2.5.211) เปิด PDF ที่มีบุ๊คมาร์ค (PDF ต้นฉบับ) เลือกบุ๊คมาร์คทั้งหมดในบานหน้าต่างบุ๊คมาร์คคัดลอกโดยใช้ Ctrl + C เปิด PDF ที่ไม่มีบุ๊คมาร์ค (PDF เป้าหมาย) แล้ววาง (Ctrl) + V) ในบานหน้าต่างบุ๊กมาร์กของ PDF โปรแกรมดู PDF-Xchange รักษาคุณสมบัติของบุ๊คมาร์คเช่นเดียวกับที่มาจากแหล่ง PDF (รวมถึงการจัดรูปแบบตัวหนา / ตัวเอียงใด ๆ บนข้อความที่คั่นหน้า) หากด้วยเหตุผลบางส่วนของเป้าหมาย PDF ต่ำกว่าหรือสูงกว่าเนื่องจากการแก้ไขที่ทำกับเอกสารคุณสามารถคลิกที่คั่นหน้าที่ต้องการการแก้ไขเลื่อนไปที่หน้าบนที่คุณต้องการให้เปิดบุ๊กมาร์ก - คลิกที่คั่นหน้าอีกครั้งและคลิก "ตั้งค่าปลายทาง" ทำซ้ำส่วนสุดท้ายนี้ตามความจำเป็นสำหรับบุ๊คมาร์คที่ละเมิด บันทึก PDF เป้าหมายเมื่อเสร็จสิ้น

มันใช้งานได้ดีมากสำหรับฉันใช้งานง่ายมากและฉันก็ทำได้ในไม่กี่นาที ในสถานการณ์เฉพาะของฉันเพื่อนร่วมงานได้ผลิตเอกสารที่ยาวมากโดยใช้ Word for Mac ซึ่งไม่มีบุ๊กมาร์ก เนื่องจากความยาวของเอกสารฉันต้องการบุ๊กมาร์กที่สอดคล้องกับโครงร่างของเอกสาร ฉันสามารถให้ Word สำหรับ Windows บันทึกเอกสารเป็น PDF พร้อมบุ๊กมาร์กได้ แต่ความแตกต่างของการจัดรูปแบบบางอย่างระหว่าง Word สำหรับ Windows และ Word for Mac ทำให้การนับหน้าแตกต่างกันค่อนข้างมาก (โดยเฉพาะมีความแตกต่างในพื้นที่สีขาว ในระยะห่างระหว่างตัวเลขและคำบรรยายภาพ) ฉันสามารถเล่นกับส่วนหัวและส่วนท้ายและขนาดรูปเพื่อให้ได้เลขหน้าที่ถูกต้องใน Word สำหรับ Windows จากนั้นบันทึกเป็น PDF ด้วยบุ๊กมาร์ก น่าเสียดาย,


1
+1 สำหรับ PDF-Xchange เครื่องมือที่น้อยกว่า merrier
Ooker

1

ข้อกำหนดสำหรับไฟล์ PDF นั้นมีให้ในรูปแบบ PDF ที่ดาวน์โหลดได้ฟรีจาก Adobe หรืออย่างน้อยก็เป็นครั้งสุดท้ายที่ฉันตรวจสอบ อย่างไรก็ตามไฟล์ PDF ส่วนใหญ่มีข้อมูลบีบอัดได้ส่วนใหญ่ อาจมีรูปแบบ PDF ธรรมดาโดยพื้นฐานแล้วกาลครั้งหนึ่งและถ้าเป็นเช่นนั้นจะยังคงใช้ได้ในขณะนี้ แต่จริงๆแล้วการรับไฟล์ในรูปแบบนั้นอาจเป็นปัญหา

แม้ว่าฉันจะไม่ได้ทำมันมีความเป็นไปได้อย่างหนึ่งที่เป็นไปได้มาก (ถ้าคุณยินดีจ่าย) คือซื้อ Acrobat Pro และใช้ความสามารถในการเขียนสคริปต์ Javascript ในแอปพลิเคชันนั้น เพื่อให้คุณเริ่มต้น ...

http://acrobatusers.com/tutorials/2008/10/auto_bookmark_creation

บทช่วยสอนนี้แสดงวิธีสร้างบุ๊คมาร์คโดยอัตโนมัติโดยใช้ Javascript ใน Acrobat 7.0 Pro (เวอร์ชันที่รวมอยู่ใน Creative Suite CS2) ถึงแม้ว่ามันจะค่อนข้างเก่า แต่เทคนิคแบบเดียวกันก็ใช้ได้ดีสำหรับเวอร์ชั่นใหม่

แอปพลิเคชัน Adobe มีห้องสมุดสำหรับอ่าน / เขียนไฟล์ข้อความโดยใช้ Javascript (สิ่งที่ Javascript ไม่มีตามมาตรฐาน) ดังนั้นจึงเป็นไปได้ที่คุณจะเขียนสคริปต์นำเข้า / ส่งออกของคุณเอง


ขอบคุณ! Acrobat Pro มีรุ่น Linux หรือไม่
ทิม

ขออภัยฉันสงสัยมาก AFAIK เป็น Mac หรือ Windows และ Adobe ไม่น่าสนับสนุน Linux เว้นแต่ผู้เชี่ยวชาญด้านครีเอทีฟจำนวนมาก (1) เริ่มใช้แพลตฟอร์มนั้นและ (2) แสดงว่าพวกเขาเต็มใจจ่ายจำนวนมากสำหรับซอฟต์แวร์ลิขสิทธิ์แทนที่จะใช้ FOSS ทางเลือก ดูเหมือนว่าไม่น่า สำหรับโซลูชันฟรีคุณอาจลองใช้ไลบรารีเช่นblog.rubypdf.com/2007/12/12/… (สำหรับ Ruby) ฉันรู้เรื่องนี้น้อยลง - ฉันเพิ่งพบมันบน Google
Steve314

1

ในการส่งออกบุ๊กมาร์กฉันทำตามวิธีการอื่นที่ต้องใช้ Microsoft OneNote:

ฉันเปิดโปรแกรมอ่าน PDF (ฉันใช้ Foxit รุ่นฟรี) โดยมีโครงสร้างบุ๊กมาร์กปรากฏให้เห็นจากนั้นใน OneNote ฉันขอให้ถ่ายภาพสแนปชอตและเลือกโครงสร้างบุ๊กมาร์ก Foxit

กลับไปที่ OneNote ฉันเลือกตัวเลือก"คัดลอกข้อความจากภาพ" (ในเมนูที่ปรากฏขึ้นหลังจากคลิกขวาที่ภาพสแน็ปช็อต) และฉันวางไว้ที่ด้านข้างเพื่อแก้ไขการเยื้อง (โดยปกติคือกระสุน)


1

HandyOutline 1 ลาก 1 คลิกเสร็จแล้ว https://sourceforge.net/projects/handyoutlinerfo/ ฟรี. เยื้องบุ๊กมาร์กย่อย ไม่ต้องใช้โปรแกรมอ่าน / แก้ไข PDF ใด ๆ นอกจากนี้ยังแก้ไขส่งออกรายละเอียดทั้งหมดไปยังข้อความ (คัดลอกคำเขียนแมโครเพื่อเป็นระเบียบเรียบร้อยลงในเอกสารคำทำงานได้อย่างสมบูรณ์) หรือ XML, เผยแพร่, นำเข้าสู่ PDF Dev สมควรได้รับการบริจาค

ตัวแก้ไข PDF-Xchange (แทนที่ PDFViewer) ส่งออกบุ๊คมาร์คที่ซ้ำ / พลาดไปเป็นข้อความแบบสุ่ม

JPDF ต้องการ Java ซึ่งเป็นขยะที่จัดรูปแบบที่ส่งออกไม่สามารถล้างได้เพื่อรับชื่อเท่านั้น

PDFTk ทำให้ฉันปวดหัวเพียงแค่ดูคำแนะนำ

:-)


ชอบที่อันนี้ส่งออกไปยัง XML แทนที่จะเป็นรูปแบบที่แปลกใหม่มากขึ้น ส่วนต่อประสานการลากและวางเพื่อการส่งออกก็ไม่ง่ายเช่นกัน ฉันแค่หวังว่ามันจะสามารถทำได้หลายอย่างพร้อมกัน
Evan Donovan

0

ฉันพบโซลูชันอื่นที่ค่อนข้าง "โง่" เพื่อคัดลอกที่คั่นหนังสือทั้งหมดใน PDF เป็นข้อความสำหรับใช้ที่อื่น ใน Acrobat Pro (สำหรับ Mac OS) ไม่มีวิธีการเลือกที่คั่นหนังสือทั้งหมดและคัดลอก / วางใน Wordprocessor อย่างไรก็ตามคุณสามารถส่งออก PDF ทั้งหมดเป็นไฟล์ HTML พร้อมตัวเลือก "หนึ่งหน้า HTML + เพิ่มกรอบการนำทางตามบุ๊คมาร์ค" จากนั้นเปิด HTML ในเบราว์เซอร์เลือกข้อความทั้งหมดในการนำทางและคัดลอก / วางไปยัง Wordprocessor ...


0

หากต้องการอ่านบุ๊คมาร์คทั้งหมดจาก PDF เป็นไฟล์ข้อความคุณสามารถใช้คำสั่งนี้กับpdftk:

pdftk input.pdf dump_data output output.txt

ฉันใช้ regex บน Notepad ++ เพื่อลบส่วนเพิ่มเติม ต่อไปนี้ฉันถูกแทนที่ด้วยสตริงว่าง (ตามลำดับ) แล้วฉันก็จบลงด้วยรายการที่คั่นหน้า (อย่าลืมแทนที่ด้วย regex ในโปรแกรมแก้ไขข้อความของคุณ):

BookmarkLevel.*
BookmarkPageNumber.*
BookmarkBegin.*
\n\s+\n

หากคุณต้องการลบตัวเลขให้แทนที่นิพจน์นี้:

BookmarkTitle: A8.\d.\d+\s
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.